C# 使用serialport 控件读写串口的大数据量解决方案 -- 以及与串口操作中常见的错误

控件串口中设置的属性中

缓存大小,建议是每秒接收到的数据的10倍以上

重点: 当缓存中接收到的数据量触发通知事件,这个设置比较重要。最好设置在每一秒内触发事件不超过10个。即当每秒接收到数据是1000时,设置100~400触发。


此问题纠缠了比较多时间。供后来者参考,以下是代码与解释:

SerialPort _serialBluetooth;

                _serialBluetooth = new SerialPort();
                _serialBluetooth.BaudRate = 115200;
                _serialBluetooth.Parity = System.IO.Ports.Parity.None; //奇偶校验
                _serialBluetooth.StopBits = System.IO.Ports.StopBits.One;//停止位
                _serialBluetooth.ReadTimeout = 2000; //读超时,也是连接打开端口超时时间
                _serialBluetooth.WriteTimeout = 500; //写入超时
                _serialBluetooth.Encoding = System.Text.Encoding.Unicode;
                _serialBluetooth.ReceivedBytesThreshold = 1024; //1KB时触发一次事件, 此设置非常关键。之前设置为1,造成了程序运行起来,将近死程序。
                _serialBluetooth.ReadBufferSize = 20240;    //20KB

                _serialBluetooth.DataReceived += new SerialDataReceivedEventHandler(_serialBluetooth_DataReceived);


1.  windows C++ 打开串口是    

char *port = "\\\\.\\COM11"; // 这才是正确的,直接使用COM11, 有可能打不到文件。  ERROR_FILE_NOT_FOUND

m_hCom = CreateFileA(port ,
                GENERIC_READ | GENERIC_WRITE, /** 访问模式,可同时读写 */     
                0,                           /** 共享模式,0表示不共享 */   
                NULL,                         /** 安全性设置,一般使用NULL */   
                OPEN_EXISTING,                /** 该参数表示设备必须存在,否则创建失败 */   
                0,      
                0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值