Jest taka funckcja sprawdzająca czy wybrany port COM istnieje w kompie:
int TPVFrame::PhysicalPortExists(int ACommNo){
int Result;
HANDLE hComm;
String tcom;
tcom = "COM";
tcom += (String) ACommNo;
char *com = tcom.c_str();
hComm = CreateFile( com,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0 );
if(hComm != INVALID_HANDLE_VALUE)
{
CloseHandle(hComm);
Sleep(10);
Result = 1;
} else
{
Result = 0;
};
return Result;
};
Problem polega na tym że metoda CreateFile zwraca INVALID_HANDLE_VALUE dla portów o numerze powyżej 9, czyli COM10,COM11,COM12. Porty te mam fizycznie w kompie na dodatkowej karcie firmy MOXA. Inne programy bez problemu otwieraja te porty i komunikują się z urządzeniami, natomiast moja fukcja przy CreateFile dla portu o numerze większym niż 9 zawsze zwraca hComm jako INVALID_HANDLE_VALUE. Porty 1-9 otwierane są bez problemu.
Co jest grane [???]