控件串口中设置的属性中
缓存大小,建议是每秒接收到的数据的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);