Witam kolegów i koleżanki :)
Mam metodę która ma odczytać odpowiedź z terminala wagowego (komunikacja poprzez klienta TCP):
public static string OdczytDanychZWagi(byte[] WysylaneZapytanie)
{
// Wysyłka komunikatu do podłączonego serwera TCP
byte[] GotoweZapytanie = KomunikatyWspolne.PoczatekKomunikacji.Concat(WysylaneZapytanie).Concat(KomunikatyWspolne.KoniecKumunikacji).ToArray();
NetworkStream stream = KlientTCP.GetStream();
stream.Write(GotoweZapytanie, 0, GotoweZapytanie.Length);
// Otrzymanie odpowiedzi
// Buffor na odpowiedz
byte[] odpowiedz = new Byte[256];
// String do przechowywania odpowiedzi w ASCII
String responseData = String.Empty;
// Odczyt danych z serwera
Int32 bytes = stream.Read(odpowiedz, 0, odpowiedz.Length);
responseData = System.Text.Encoding.ASCII.GetString(odpowiedz, 0, bytes);
return responseData;
}
Jest zdefiniowane że odpowiedź jest stringiem i taka jest zwracana. Są przypadki gdzie musiałbym uzyskać odpowiedź jako int. Nie ma problemu żebym napisał taką metodę. Problem leży w czymś innym - jak wywołam tą metodę "za wcześnie" to uzyskam odpowiedź np "OK}" która w żaden sposób nie nadaje się do przekonwertowania do int.
Mój problem/pytanie - jak zabezpieczyć program żeby czekał aż odpowiedź będzie "nadawała" się do konwersji string-int i dopiero wtedy zwracał wartość ??
Czy zrobić to w samej metodzie czy poza metodą wykonać sprawdzanie i konwersję i zapętlić sprawdzanie aż odpowiedź będzie wartością która nada się do konwersji ??
Będę wdzięczny ze wszystkie sugestie.