Cześć
Mam pewien niezrozumiały dla mnie problem z małą aplikacją.
Ma za zadanie wysłać po RS232 wartość "P" aby otrzymać odpowiedź.
Teoretycznie dość banalne:
openSerial();
string inputVal = "P\r\n";
serialPort1.WriteLine(inputVal);
closeSerial();
Jednak jakimś cudem doklejam \r\n czyli 0d 0a do wartości P (czyli 50).
Zrobiłem monitoring portu COM i tak wygląda poprawne wysłanie danych przez herculesa:
W herculesie po nawiązaniu połączenia klikam Send, wartość P pojawia się w oknie konsoli i muszę ustawić kursor za "P" i kliknąć 'Enter' - wtedy otrzymam wynik na jaki liczyłem:
[30/01/2020 19:26:13] Written data (COM6)
50 P
[30/01/2020 19:26:14] Written data (COM6)
0d 0a ..
[30/01/2020 19:26:15] Read data (COM6)
55 73 65 72 20 49 44 3a 0d 0a 42 41 4c 20 49 44 User ID:..BAL ID
Natomiast kiedy wysyłam dane z mojego programu, wygląda to tak:
[30/01/2020 19:13:55] Written data (COM6)
50 0d 0a P..
[30/01/2020 19:13:55] - Close port COM6
O ile pamiętam zwykle wystarczyło podać na końcu "\r\n" i urządzenia czytały to jako "enter" - a tutaj wygląda mi jakby program chciał skleić to wszystko w jedną wartość i nie rozpoznawał \r\n, po prostu zgłupiałem...
Próbowałem z serialPort.WriteLine() na końcu, dwa osobne serialPort.Write("P"); serialPort.Write("\n\r"); - za każdym razem to samo.
Przegapiłem jakąś oczywistą oczywistość? :)