Code Bye

c# Ports.SerialPort()串口类进行编程 触发原理

 

用 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分

只要有数据只触发··不管数据的多少·或者完整不完整···
引用 楼主 zhu070 的回复:

用 System.IO.Ports.SerialPort()串口类进行编程,请问serialPort_DataReceived()事件是怎么触发的?是接收到一个字节数据后就立即触发还是接收完一帧数据才触发?

10分

这个不一定的,你把接收到得数据打印出来就可以看到了,毫无规律,基本 有数据来就会触发

5分

接收到就会触发。
你需要判断数据的头和尾,如地址,校验码。然后将每条数据分割开来,进行处理。

5分

http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html

你看看这个的博客吧,这个博客上讲的很清楚,非常不错,它分了5个部分去讲,你仔细看看,就应该能帮你解决问题

5分

SerialPort控件有个ReceiveBytesThreshold属性可以设置DataReceived事件触发前输入缓冲区的字节数,默认是1,就是接收到一个字节,就会触发DataReceived事件
 
嗯,我试了一下,每次触发后收到数据长度不一样,只有通过字头和字尾来判断一帧数据有没有完全收到。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c# Ports.SerialPort()串口类进行编程 触发原理