C# SerialPort控件说明

1.命名空间:System.IO.Ports,包含了控制串口的类、同步I/O、事件驱动I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问。使用方法:Using System.IO.Ports

2.通讯端口号:PortName,获取和设置通信端口,返回值为String。一般为:COM1、COM2...不能超过16

3.通讯格式:波特率 BaudRate;数据位 DataBits;停止位 StopBits(枚举);校验位 Parity(枚举);

4.串口打开和关闭:Open()、Close()

5.数据发送和读取:写:Write、Writeline(发送字符串并在字符串末尾加入换行符);读:ReadExisting、ReadTo,其它为同步调用,线程被阻塞直到缓冲区有相应的数据或大于ReadTimeOut属性设定的时间值后,引发ReadExisting异常

6.DataReceived事件:在接收到了ReceivedBytesThreshold设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发。

7.操作方式:数据接收的方法如果采用轮询的方法比较浪费时间,采用DataReceived事件触发的方法,合理的设置ReceivedBytesThreshold的值,若接收的是定长的数据,则将ReceivedBytesThreshold设为接收数据的长度,若接收数据的结尾是是固定的字符或字符串则可采用ReadTo的方法或在DataReceived事件中判断接收的字符是否满足条件。SerialPort读取数据的许多方法都是同步阻塞调用,尽量避免在主线程中调用,可以使用异步处理或线程间处理调用这些读取数据的方法。

注意:1.DataReceived事件的触发,如果上一次的未执行完,下一次的就来不及触发,导致串口数据的丢失和不完整。

           2.在事件中加入while (com.BytesToRead < 320) { Thread.Sleep(1); } 这样的等待,保证在不同性能的电脑上都可以有效读取串口数据。(经验证该方法在接收数据过大时会导致CPU占用率过高)。以下链接为具体操作介绍:https://blog.csdn.net/Hilaph/article/details/101672672

发布了16 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Hilaph/article/details/100106571