CreateFile串口1能打开但是串口2打不开
系统是win7,vs2008+WINCE6.0SDK
我用的是台式机,机器上本身有一个com1
我现在用Virtual Serial Port Driver 6.0 by Eltima Sofware建了com2和com3
用[串口调试助手V2.2]试了一下可以在com2和com3之间通信
但是
InitCommunication(TEXT("COM2:"));
HANDLE InitCommunication ( LPTSTR pszDevName) {
DCB dcb;
TCHAR szDbg[128];
COMMTIMEOUTS cto;
HANDLE hLocal;
hLocal = hComPort;
hComPort = INVALID_HANDLE_VALUE;
if (hLocal != INVALID_HANDLE_VALUE)
CloseHandle (hLocal);
hLocal = CreateFile ((LPTSTR)(LPCTSTR)pszDevName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hLocal != INVALID_HANDLE_VALUE) {
// 配置串口
dcb.DCBlength = sizeof (dcb);
GetCommState (hLocal, &dcb);
dcb.BaudRate = nSpeed;
dcb.fParity = FALSE;
dcb.fNull = FALSE;
dcb.StopBits = ONESTOPBIT;
dcb.Parity = NOPARITY;
dcb.ByteSize = 8;
SetCommState (hLocal, &dcb);
// 设定超时
cto.ReadIntervalTimeout = 0;
cto.ReadTotalTimeoutMultiplier = 0;
cto.ReadTotalTimeoutConstant = 0;
cto.WriteTotalTimeoutMultiplier = 0;
cto.WriteTotalTimeoutConstant = 0;
SetCommTimeouts (hLocal, &cto);
// 启动读取线程
hComPort = hLocal;
} else {
wsprintf (szDbg, TEXT ("Couldn\'t open port %s. rc=%d\r\n"),
pszDevName, GetLastError());
MessageBox(NULL,szDbg,TEXT("message"),MB_OK | MB_ICONERROR);
}
return hComPort;
}
如果用com1就可以成功打开,而用com2的话,CreateFile失败,错误是55
虚拟的com2还需要做什么其他操作吗,注册表什么的
谢谢了
[解决办法]
楼主还没说你打不开COM2是在PC上还是在WINCE里面。是指你这段程序打不开COM2还是指使用串口工具也是这样。
建议先用串口工具测试一下这些串口,看看是否被占用了,然后再通过你的程序去操作这些串口