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