今天遇到串口通信不稳定, 拿到别人机子上测试, 却发现他的串口打不开了.
在网上查原因. 网上说了些原因,比如串口被占用,这个被排除了,我没开其它使用串口的程序. 也有说驱动没安装好,也重新安装了下.还是不行.
只有继续看MSDN.发现有说明:
When lpFileName points to a COM port to open, you must include a colon after the name. For example, specify COM1: to open that port. When using IrCOMM, specify COM3:.
意思是说要在串口名后面加个分号":",如 " COM1: ",但是平时不加,也能正常打开的啊. 以前都没仔细看说明,只看别人怎么用就怎么用,所以不没加分号,看来以后得仔细看说明了.
看了说明,改了程序,发现还是不行,仍然打开失败. GetLastError获得错误码是说的 "文件不存在" ,也就是说串口名格式可能还是错的.
继续找.终于找到这个,博客:http://guobaoguo.blog.163.com/blog/static/10916258200992262417826/ 10以上串口加载问题
原来设备名的格式是有很多种的.
"COMX:",
"\$device\COMX",
"\$bus\PCMCIA_0_0_0"。
" COM1 " 这种格式只支持 COM0-COM9 上了 COM10就不支持了.
只有使用第二种格式了."\$device\COMX", ======> " \\.\COM12 " 当然放到程序里,常量串要转意反斜杠的====> " \\\\.\\COM12 "
但是第二种格式为什么 $device 是换成 一个点表示,对于设备名称没有看过,不知道为什么了.
这样,换成这样终于是可以了
总结: 仔细看MSDN , 借鉴的同时要注意理解. COM名字格式很重要.