HANDLE OpenPort() {
HANDLE hPort=CreateFile(L"COM11",
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
if(hPort==INVALID_HANDLE_VALUE) ErrorMessage("Open port!!!!!!!");
DCB dcb; dcb.DCBlength=sizeof(DCB);
if(!GetCommState(hPort, &dcb)) ErrorMessage("Read port");
dcb.BaudRate=CBR_115200;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
dcb.fParity=FALSE;
// dcb.fDtrControl = DTR_CONTROL_DISABLE;
// dcb.fRtsControl = RTS_CONTROL_ENABLE;
if(!SetCommState(hPort, &dcb)) ErrorMessage("Error configuration1");
COMMTIMEOUTS commtimeouts={0};
commtimeouts.ReadIntervalTimeout=500;
commtimeouts.ReadTotalTimeoutConstant=0;
commtimeouts.ReadTotalTimeoutMultiplier=0;
commtimeouts.WriteTotalTimeoutConstant=0;
commtimeouts.WriteTotalTimeoutMultiplier=0;
if(!SetCommTimeouts(hPort, &commtimeouts)) ErrorMessage("Error configuration2");
return hPort;
}
Проблемы с виртуальным COM портом в Windows 7
Код:
В общем, хотя порт в системе 100% есть (открывал его Матлабом и КоммТестом), эта прога выдает сообщение "Open Port!!!!". Мною эта прога запускалась на VS 2005 под WinXP, где прекрасно работала и на VS2010 под Win7, где вылетает собственно ошибка. Кстати существующий порт COM1 в системе эта прога открывает везде. А COM11 нет.
ну для начала есть GetLastError()
[QUOTE=MSDN]
To specify a COM port number greater than 9, use the following syntax: "\\.\COM10". This syntax works for all port numbers and hardware that allows COM port numbers to be specified.
[/QUOTE]