用 System.IO.Ports.SerialPort()串口类进行编程,请问serialPort_DataReceived()事件是怎么触发的?是接收到一个字节数据后就立即触发还是接收完一帧数据才触发? |
|
5分 |
我只会用不明触发原理
SerialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(SerialPortDataReceived); /// <summary> /// 接收数据事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void SerialPortDataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { //函数 } |
5分 |
我记得 它里面 有个 ReceivedBytesThreshold 什么阀值的 设置 多少个字节 触发一次的 你网上 找一下 很多的 是在不行我这里 也有程序
ReceivedBytesThreshold Gets or sets the number of bytes in the internal input buffer before a DataReceived event occurs. |
5分 |
只要有数据只触发··不管数据的多少·或者完整不完整···
|
10分 |
这个不一定的,你把接收到得数据打印出来就可以看到了,毫无规律,基本 有数据来就会触发 |
5分 |
接收到就会触发。
你需要判断数据的头和尾,如地址,校验码。然后将每条数据分割开来,进行处理。 |
5分 |
http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html
你看看这个的博客吧,这个博客上讲的很清楚,非常不错,它分了5个部分去讲,你仔细看看,就应该能帮你解决问题 |
5分 |
SerialPort控件有个ReceiveBytesThreshold属性可以设置DataReceived事件触发前输入缓冲区的字节数,默认是1,就是接收到一个字节,就会触发DataReceived事件
|
嗯,我试了一下,每次触发后收到数据长度不一样,只有通过字头和字尾来判断一帧数据有没有完全收到。
|