byte[] ZapytanieOStatus = KomunikatyWspolne.PoczatekKomunikacji.Concat(OdczytZWagi.Kom_RejestrStatusu).Concat(KomunikatyWspolne.KoniecKumunikacji).ToArray();
byte[] ZapytanieONrOperatora = KomunikatyWspolne.PoczatekKomunikacji.Concat(OdczytZWagi.Kom_ZatwierdzoneF1).Concat(KomunikatyWspolne.KoniecKumunikacji).ToArray();
byte[] status = new Byte[6];
byte[] nroperatora = new Byte[17];
String status_str = String.Empty;
String status_str_obciete = String.Empty;
String nroperatora_str = String.Empty;
WysylkaDoWyswietlaczaWagi_4linie(WysylkaDoWyswietlacza_Komunikaty.LogWitaj, WysylkaDoWyswietlacza_Komunikaty.LogZaloguj, WysylkaDoWyswietlacza_Komunikaty.PustaLinia, WysylkaDoWyswietlacza_Komunikaty.LogNrOperatora);
NetworkStream stream = KlientTCP.GetStream();
do
{
stream.Write(ZapytanieOStatus, 0, ZapytanieOStatus.Length);
Int32 bajty = stream.Read(status, 0, status.Length);
status_str = System.Text.Encoding.ASCII.GetString(status, 0, status.Length);
status_str_obciete = status_str.Substring(0, 3);
}
while (status_str_obciete != "10B");
do
{
stream.Write(ZapytanieONrOperatora, 0, ZapytanieONrOperatora.Length);
Int32 bajty2 = stream.Read(nroperatora, 0, nroperatora.Length);
nroperatora_str = System.Text.Encoding.ASCII.GetString(nroperatora, 0, nroperatora.Length);
}
while (nroperatora_str[0] == 'F');
int nroper = Convert.ToInt32(nroperatora_str);
// tutaj dalsza część kodu
Masz rację z tym opóźnieniem w odpowiedzi. To faktycznie wygląda jak odpowiedź na wcześniejsze zapytanie. Staram się poprzez do {} while () zabezpieczyć się przed nieprawidłową odpowiedzią.
Generalnie powyżej jest fragment mechanizmu logowania czyli wysyłam tekst do wyświetlacza i czekam aż na terminalu pojawi się kombinacja "F1 nr operatora Enter" czyli "10B" - jak to jest spełnione to pytam o to co wprowadzono pod F1 itd itd