Witam.
Mam problem następującej treści.
Napisałem program do komunikacji bluetooth z urządzeniem zewnętrznym. Wszystko ładnie działa, jeśli łączę się z urządzeniem przez kabel, działa też, jeśli połączę się z urządzeniem za pomocą programu BrayTerminal, ale połączenie zaczyna się sypać, jeśli połączę się przez Bluetooth za pomocą mojego programu. Tutaj wrzucam kod:
public void send(char data) //funkcja wysyłająca komendy do hamowni
{
port.Write(data.ToString()); //wysłanie podanej komendy
try
{
ODBIOR = port.ReadByte(); //oczekiwanie na potwierdzenie
status_wys(Convert.ToString(ODBIOR)); //funkcja wyświetlająca to co jest w nawiasie
}
catch (TimeoutException) //jeśli nie otrzymał potwierdzenia
{
status_wys("Response timeout has expired.");
}
if (Convert.ToChar(ODBIOR) == UNKNOWN) //jeśli wysłana komenda była nieznana
{
status_wys("Command unknown.");
}
else if (Convert.ToChar(ODBIOR) == data)
{
status_wys("Sending succes.");
}
else //nie udało się wysłać komendy
{
status_wys("Sending has failed.");
}
}
Teraz krótkie wyjaśnienie sytuacji:
połączenie powinno działać tak, że urządzenie odsyła mi taką samą wartość, jaką ja wysłałem. Jeśli urządzenie nie rozpoznaje komendy to odsyła wartość UNKNOWN. I tutaj zaczyna się problem. Urządzenie odsyła mi zawsze poprawną wartość, ale mój program nie zawsze ją odczytuje dobrze. Najczęściej jest tak, że ta wartość jest odczytywana dobrze za trzecim razem. Sprawdzałem połączenie w BrayTerminal'u i tam wszystko działa dobrze.
Czy ktoś jest w stanie mi powiedzieć dlaczego tak się dzieje?