我的SerialPort想实现接受不同长度的数据,假如一组数据是100个字节,第二组数据是10个字节,第三组数据是20个字节
帧头和帧尾分别为5A A5 和 A5 5A
LDSerialPort.ReceivedBytesThreshold 是设置缓冲区里面的数据达到多少时产生事件
而VC++里面的MSCOMM控件中有一个函数 GetCommEvent() 事件值为2表示接收缓冲区内有字符
但是C#的SerialPort里面没有这个函数
这样的话,实现我上面的目的是不是只能通过把
LDSerialPort.ReceivedBytesThreshold = 1 每接收一个字节就触发一次事件
然后通过判断帧头和帧尾来判断是不是接收完了一帧数据了呢?
请大家指教哈!
帧头和帧尾分别为5A A5 和 A5 5A
LDSerialPort.ReceivedBytesThreshold 是设置缓冲区里面的数据达到多少时产生事件
而VC++里面的MSCOMM控件中有一个函数 GetCommEvent() 事件值为2表示接收缓冲区内有字符
但是C#的SerialPort里面没有这个函数
这样的话,实现我上面的目的是不是只能通过把
LDSerialPort.ReceivedBytesThreshold = 1 每接收一个字节就触发一次事件
然后通过判断帧头和帧尾来判断是不是接收完了一帧数据了呢?
请大家指教哈!
{
response[i] = (byte)(sp.ReadByte());
}
ReadByte()方法,从缓冲区取一个字节
sp 是SerialPort实例,response数组 存储接收到的数据.你可以把这段写到函数里,response由ref参数传入.给个多长的response,就给你读回多长去.
把这段写到函数里里后,就不用管它了,看起来从response取得数据就行了,有点透明.
也就是说DataReceived事件是缓冲区里面存储了多少字节才会被触发呢?
zzlfe能不能给出更详细的代码啊?