www.eprace.edu.pl » automatyka-basenowa » Aplikacja komputerowa „SPA - Soft” » część komunikacyjna

część komunikacyjna

Cały kod programu „SPA – Soft” zajmuje w przybliżeniu ok. 45 tysięcy linii, dlatego nie został umieszczony w treści pracy. Przedstawiona zostanie jedynie jedna z procedur komunikacyjnych służąca do restartu wszystkich podłączonych urządzeń. Jej listing zaprezentowany jest na następnej stronie.

public void restart_wszystkich()
{
int bladpom2 = 0;
string odczyt_aktywnych = rejestr.czytaj_aktywne("saspa");
if (Convert.ToBoolean(odczyt_aktywnych) == true)
{
okno_statusu.AppendText("*****************************************************************
*\n");
okno_statusu.AppendText("* Restart wszystkich urządzeń.\n");
okno_statusu.ScrollToCaret();
SerialPort serialPort1 = new SerialPort(); serialPort1.PortName =
Properties.Settings.Default.PortName;
serialPort1.BaudRate = Properties.Settings.Default.BaudRate;
serialPort1.DataBits = 8;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.ReadTimeout = 1000;
serialPort1.WriteTimeout = 1000;
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
okno_statusu.AppendText("* Błąd związany z otwarciem portu " +
Properties.Settings.Default.PortName +". Przyczyna: " + ex.Message + "\n");
if (Properties.Settings.Default.KOMUNIKATY == true)
{
MessageBox.Show("Błąd związany z otwarciem portu " +
Properties.Settings.Default.PortName +". Przyczyna: " + ex.Message, "Błąd działania",
MessageBoxButtons.OK, MessageBoxIcon.Error);}
okno_statusu.ScrollToCaret();
}
if (serialPort1.IsOpen == true)
{
int ID_SPA = 1;
try
{
do
{
int blad = 0;
int bladpom = 0;
do
{
blad = 0;
try
{
string odczyt_rej = rejestr.czytaj_ID_SPA(ID_SPA);
if (odczyt_rej == "3" || odczyt_rej == "2" || odczyt_rej == "1")
{
serialPort1.Write(new byte[] { 13 }, 0, 1);
serialPort1.Write(new byte[] { 13 }, 0, 1);
serialPort1.Write(new byte[] { 13 }, 0, 1);
serialPort1.Write(new byte[] { 27 }, 0, 1);
if (ID_SPA < 10)
{ serialPort1.Write("0"); }
serialPort1.Write(Convert.ToString(ID_SPA));
serialPort1.Write("r");
serialPort1.Write(new byte[] { 32 }, 0, 1);
serialPort1.Write(new byte[] { 13 }, 0, 1);
Thread.Sleep(10);
string slowoo = serialPort1.ReadExisting();
string slowkoo = Convert.ToString(slowoo);
int slow = Convert.ToInt16(slowoo);
}
;
if (odczyt_rej == "1")
{
okno_statusu.AppendText("SPA");
if (ID_SPA < 10)
{ okno_statusu.AppendText("0"); }
okno_statusu.AppendText(ID_SPA + " restart TIMERA = OK\n");
}
if (odczyt_rej == "2")
{
okno_statusu.AppendText("SPA");
if (ID_SPA < 10)
{ okno_statusu.AppendText("0"); }
okno_statusu.AppendText(ID_SPA + " restart OBJĘTOŚCIOMIERZA = OK\n");
}
if (odczyt_rej == "3")
{
okno_statusu.AppendText("SPA");
if (ID_SPA < 10)
{ okno_statusu.AppendText("0"); }
okno_statusu.AppendText(ID_SPA + " restart danych TERMOMETRU = OK\n");
}
okno_statusu.ScrollToCaret();
serialPort1.Write(new byte[] { 13 }, 0, 1);
serialPort1.Write(new byte[] { 27 }, 0, 1);
if (ID_SPA < 10)
{ serialPort1.Write("0"); }
serialPort1.Write(Convert.ToString(ID_SPA));
serialPort1.Write("wr");
serialPort1.Write(new byte[] { 13 }, 0, 1);
//Thread.Sleep(10);
//ID_SPA++;
}
catch
{
blad = 1;
bladpom++;
okno_statusu.AppendText("* Błąd restartu SPA" + ID_SPA + " , próba nr " + bladpom + "\n");
if (bladpom == 10)
{
bladpom = 0;
blad = 0;
okno_statusu.AppendText("* Restart nieudany, przejście do restartu następnego
urządzenia.\n"); throw new Exception("Nieudany restart modułu SPA" + ID_SPA + ". Nastąpi ponowne
rozpoznanie dołączonych urządzeń");
}
okno_statusu.ScrollToCaret();
}
}
while (blad == 1);
ID_SPA++;
progressBar1.PerformStep();
}
while (ID_SPA != 33);
}
catch (Exception w)
{
bladpom2++;
if (Properties.Settings.Default.KOMUNIKATY == true) { MessageBox.Show("Awaria!!!"
+ w + "\n\n Możliwa przyczyna pojawienia się błędu tu uszkodzenie przewodu połączeniowego lub zanik
zasilania modułu SPA.", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Information); }
okno_statusu.AppendText("* Awaria!!!" + w + "\n\n Możliwa przyczyna pojawienia się
błędu tu uszkodzenie przewodu połączeniowego lub zanik zasilania modułu SPA.\n");
// this.zakladkiSPA.SelectedTab = this.OPCJE;
Thread.Sleep(1000);
odczyt f2 = new odczyt();
f2.Show();
załączenie_pierwszego_odczytu.Stop();
richTextBox_spa1_tryb.Clear();
aktualizacja_paneli.Start();
this.Activate();
}
serialPort1.Close();
progressBar1.Value = 0;
if (bladpom2 == 0)
{
okno_statusu.AppendText("* Urządzenia zostały zrestartowane.\n");
if (Properties.Settings.Default.KOMUNIKATY == true) { MessageBox.Show("Urządzenia
zostały zrestartowane.", "RESTART", MessageBoxButtons.OK, MessageBoxIcon.Information); }
}
else
{
okno_statusu.AppendText("* Z powodu utraty komunikacji z jednym z modułów SPA
dokonano ponownego rozpoznania dołączonych urządzeń.\n");
}
okno_statusu.ScrollToCaret();
}
}
}

Podczas pisania programu położono nacisk na interakcję z użytkownikiem i zabezpieczenie programu przed pojawieniem się wyjątków. Wszystkie pozostałe funkcje są napisane w podobny sposób. Daje to gwarancję stabilności działania programu i zadowolenia z jego używania.



komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.