Последовательное общение через 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