在微控制器端:
我每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),