Witam
Piszę program który ma komunikować się z terminalem wagowym i nim sterować. Komunikacja odbywa się przy użyciu TCP - użyłem do komunikacji klienta TCP. Cała komunikacja działa, odczytuję komunikaty, mogę wysyłać swoje do terminala. Teraz jestem na etapie układania zadań na zasadzie "jeśli status w a to zrób b" itd.
Mam taki fragment kodu odpowiedzialny za logowanie po uruchomieniu programu:
string odp = KomunikacjaSieciowa.OdczytDanychZWagi(OdczytZWagi.Kom_RejestrStatusu);
tb_komunikaty.Text = odp;
if (odp[0] == 'B') // F - neutralny, B - pierwsze logowanie wagi od włączenia
{
KomunikacjaSieciowa.WysylkaDoWyswietlaczaWagi_3linie(WysylkaDoWyswietlacza_Komunikaty.LogWitaj,WysylkaDoWyswietlacza_Komunikaty.LogZaloguj,WysylkaDoWyswietlacza_Komunikaty.LogNrOperatora,WysylkaDoWyswietlacza_KtoreLinie.Kom_Wyswietlacz_3linie_L1_L2_L4);
string odpF1 = KomunikacjaSieciowa.OdczytDanychZWagi(OdczytZWagi.Kom_ZatwierdzoneF1);
while (odpF1 != "")
{
tb_komunikaty.Text = Environment.NewLine + odpF1;
int odpF1_int = Convert.ToInt32(odpF1);
//tutaj będzie dalszy ciąg
}
Jak mogę "zapętlić" sprawdzanie odpF1 żeby faktycznie w momencie jak pojawi się jakiś string w odpowiedzi system przeszedł do dalszej części (while)? W tej chwili system wykonuje
string odpF1 = KomunikacjaSieciowa.OdczytDanychZWagi(OdczytZWagi.Kom_ZatwierdzoneF1);
i przechodzi dalej. Jak ponownie sprawdzić czy jest odpowiedź?
Myślałem nad wykorzystanie timerów do ciągłego sprawdzania odpowiedzi z wagi ale czy to jest prawidłowe?
Jak w tym przypadku miałaby wyglądać jego implementacja?