CreateFile打开串口失败,返回INVALID_HANDLE_VALUE

近来在做串口方面的程序,使用CreateFile打开串口,却一直失败,代码如下:

HANDLE hCom=CreateFile("COM10",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

但问题的奇怪之处在于换一个硬件后,打开COM6端口,他又成功了。。。

查阅良久,找到了MSDN上的解释:http://support.microsoft.com/?id=115831

对于COM10及以上的端口号,需要修改成如下格式:

HANDLE hCom=CreateFile("\\\\.\\COM10",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
问题解决。。。

微软真是个奇葩。。

展开阅读全文

WINCE6,串口打开失败CreateFile()返回-1

04-19

环境 VS2008,WINCE6,WINCE系统里有“COM1”,我用串口调试终端能打开”COM1“并且能发送与接收数据rn为了怕搞错串口名称,我干脆打开COM1-COM5,并且跟踪 m_hComm的值,发现返回的全部是 -1(0xffffffff), 这是我建的一个WINCE测试工程,就在下面这个函数里添加了如下代码,不知为何CreateFile()会返回 -1,请高手指定一二,谢谢rnrnBOOL CWinceUartTestDlg::OnInitDialog()rnrn CDialog::OnInitDialog();rnrn // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动rn // 执行此操作rn SetIcon(m_hIcon, TRUE); // 设置大图标rn SetIcon(m_hIcon, FALSE); // 设置小图标rnrn // TODO: 在此添加额外的初始化代码rn HANDLE m_hComm=0;rn m_hComm =CreateFile(L"COM0", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((int)m_hComm != -1)rn m_hComm =CreateFile(L"COM1", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((int)m_hComm != -1)rn m_hComm =CreateFile(L"COM2", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((int)m_hComm != -1)rn m_hComm =CreateFile(L"COM3", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((int)m_hComm != -1)rn m_hComm =CreateFile(L"COM4", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((int)m_hComm != -1)rn m_hComm =CreateFile(L"COM5", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((int)m_hComm == -1)rn MessageBox(L"COM0-COM5 Open Error!");rn elsern MessageBox(L"COM0-COM5 Open Succcess!");rnrn return TRUE; // 除非将焦点设置到控件,否则返回 TRUErn 论坛

没有更多推荐了,返回首页