VC++串口数据读取方法

VC++里搞串口通信,用MSComm 控件算是比较省心的一种方式了。拖个控件上对话框,调几个参数,数据的收发基本就能跑起来。像CommPortSettings这些属性,改一下就能切换端口或调整波特率,直观。

MSComm 控件自带事件机制,配合OnComm事件来监听串口消息,还挺方便。比如接收到数据就会自动触发,你只要在OnComm里写好逻辑就行。适合想快速上手串口开发的同学。

啦,控件虽然简单,但如果你想要线程控制更强一点的方式,也可以考虑手动用CreateFile搞定串口。就是代码多点,不过可控性强,适合对串口要求比较高的场景。

比如下面这段自定义方式的串口初始化,能让你对串口属性一清二楚:

HANDLE hComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if (hComm == INVALID_HANDLE_VALUE) {
  // 错误
}
DCB dcb;
GetCommState(hComm, &dcb);
dcb.BaudRate = CBR_4800;
dcb.Parity = NOPARITY;
dcb.DataBits = 8;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb);

如果你只是做个小工具,MSComm 已经够用了,响应也快,代码也简单。如果你项目比较复杂,需要自己控制线程、收发精度啥的,那就推荐自己封装串口类了。

doc 文件大小:39KB