Микроконтроллеры
- 2 ответа
- 0 вопросов
0
Вклад в тег
ReceivedBytesThreshold
, которые есть у типа SerialPort
. Это порог по кол-ву данных в буфере чтения, по достижению которого будет срабатывать событие DataReceived
, на которое вы подписались. Поставьте брейкпойнт на строке string _message = null;
в обработчике DataReceirvedDt
и проверьте, вызывается ли вообще этот обработчик для ардуины про. Если нет, значит, нужно уменьшать порог.ReadLine()
нужно быть точно уверенным, что у вашего хоста и ардуины про одинаковые символы окончания строки. Для хоста это можно настроить через свойство NewLine
в классе SerialPort
. Судя по коду, у вас хост под виндой, значит, окончание строки у вас может отличаться от того, что присылает ардуина. Если они не совпадают, то метод не может найти окончания строки и блокируется. Чтобы это проверить, можно поставить брейкпойнт на строку _message = serialPortData.ReadLine();
и выполнить его кнопкой StepOver в отладке. Если данные будут получены, значит окончание строки на хосте и ардуине интерпретируется одинаково, если метод заблокируется, значит, либо в полученных данных вообще нет символов конца строки, либо они различаются у хоста и ардуины.