读取和存储串口数据

时间:2015-10-14 14:58:58

标签: c# serial-port

在微控制器端:

我每100毫秒从微控制器通过uart向winform应用程序发送18个字节。

UART_SendData((void*)&uart, 18, dataBuffer);
在winform app end

我正在尝试读取这18个字节。我想一次性读取它们,存储它们并在100ms新数据到达后处理它们(18是可变的,可以是20,30等等,直到128字节)。以下是我正在尝试的代码。

    private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        byte[] data = new byte[sp.BytesToRead];
        sp.Read(data, 0, data.Length); 
    }

但我一直在winform app端收到字节。我收到1然后是17.或2然后是16和类似的模式。我希望一次只能处理所有数据,以便我可以处理它。

我的策略应该是什么?我当前的代码是错误的还是我应该使用其他方法,如循环缓冲区等来存储数据?还是..?

ps:来自微控制器的发送字节的前2个字节(上例中为18Bytes)总是相同的(类型为id),

0 个答案:

没有答案