Последовательное общение через C#

При чтении из последовательного порта я использую serialport.read(xyz,0,4), где xyz - байтовый массив.

Вопрос 1: при этом удаляются ли прочитанные мной данные из буфера последовательного порта? Или есть указатель, который увеличивается?

Вопрос 2:

private void moduleSerialPort_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
.
.
.
}

Если новые данные будут получены при выполнении кода для предыдущих данных, будет ли инициировано событие получения данных?

Я обнаружил, что когда моя система работала в течение нескольких часов, происходило следующее: когда передавались новые данные, они поступали на последовательный порт, но компьютер обрабатывал ранее отправленные данные. Поэтому я сомневаюсь, что данные остаются в буфере и выполняются при следующем событии, полученном от данных.

Может кто-нибудь, пожалуйста, помогите мне. Ценю твою помощь. Спасибо

3 ответа

Решение

Данные остаются в буфере, пока вы не прочитаете его. Простое обращение с DataReceived Событие не приводит к тому, что данные удаляются из очереди, вам нужно прочитать их. Если вы читаете меньше, чем весь буфер, то в следующий раз DataReceived Событие происходит, вы будете читать старые остатки перед новыми данными.

Следуйте этому примеру кода

http://code.msdn.microsoft.com/SerialPort-Windows-Forms-a43f208e

С уважением.

Я думаю, что это решит твою проблему

http://www.fryan0911.com/2009/04/c-serial-port-communication.html

Другие вопросы по тегам