У меня есть устройство, которое мне нужно сделать с помощью SerialPort. Это устройство принимает команды с моей стороны, а также отправляет мне данные. Я делаю все send/receive в том же классе => тот же поток.как писать и читать в serialPort в одно и то же время?
Я подключен к этому устройству, и мне удастся отправить/получить команду и данные с/на это устройство.
Одна из команд, которые мне нужно отправить каждые 25 миллисекунд, - это «дать мне свой статус» - это означает, что я прошу отправить устройство обратно с какой-либо структурой с данными.
В случае, если я пропущу некоторые принимаемые данные ... когда я делаю «serialPortStream.BytesToRead» (проверьте, есть ли какие-то данные для получения), я найду на моем байтеReading более старый буфер, который я еще не рад? Сколько пакетов у меня будет там, если я пропустил последний пакет, который мне нужно было прочитать, или, может быть, новые полученные данные удалят старые данные, полученные ранее?
Вам нужны две темы. Я бы создал класс с обработчиком событий, например SerialPort.DataRecieved + = ____, который заполняет ConcurrentQueue всякий раз, когда получает новый байт. Затем вы можете прочитать эту очередь в своем основном потоке и написать свое письмо оттуда. Обратите внимание, что ваши пакеты могут быть не в порядке, но вы определенно не пропустите ни одного. – rolls