C # SerialPort DataReceived проблема, когда прилагается строки - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть метод DataReceived, запускающий передачу данных с устройства RS232. Все идет гладко со следующим кодом

byte[] data = new Byte[serialPort.BytesToRead];
serialPort.Read(data, 0, data.Length);
string read = System.Text.Encoding.ASCII.GetString(data);

но если я добавлю строку после данных

string read = System.Text.Encoding.ASCII.GetString(data) + "asdf \n";

Данные все еще принимаются, но иногда могут отображаться неправильно. Например. если я подключаюсь к шкале и должен читать «10.45 кг asdf», на моем компьютере это будет показано как «10. asdf45kg» В чем здесь проблема?

1 Ответ

3 голосов
/ 03 декабря 2010

Метод DataReceived будет запущен, когда последовательный порт захочет его запустить, что НЕ обязательно при получении полной строки с устройства. См. этот SO-ответ для подробного обсуждения деталей. Если у вас есть известный символ-терминатор, вы можете обойти эту проблему, установив свойство NewLine SerialPort, а затем используя ReadLine().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...