描述:
我写了一段串口程序:中间打开串口片段如下
hCom=CreateFile(L"COM3",//COM3口
GENERIC_READ|GENERIC_WRITE, //允许读和写
FILE_SHARE_READ|FILE_SHARE_WRITE, //非独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
NULL, //同步方式
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox(L"打开COM失败!");
return FALSE;
}
这个可以打开我自己电脑的COM3口 运行正常 但是我换一台电脑 把COM3变成COM13口 那台电脑上面其他COM口还连接有其他设备 运行一下就显示的是“打开COM失败!” 应该是什么原因?
解决方案1:
超过10以后的串口要按照如下格式输入串口名称才能打开
解决方案2:
hCom=CreateFile(L"\\\\.\\COM13",//COM13口
GENERIC_READ|GENERIC_WRITE, //允许读和写
FILE_SHARE_READ|FILE_SHARE_WRITE, //非独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
NULL, //同步方式
NULL);
编号大于9的com端口写法有所不同。
可参考http://support.microsoft.com/kb/115831
因此,com13应为"\\\\.\\COM13"。
这么写
CreateFile(
"\\\\.\\COM10 ",//对应的就是\\.\COM10
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, //重叠I/O
NULL
);