А вы уверены, что это RS-232 ? GetCommProperties()
Функции рассмотренные ранее хороши, но они подразумевают, что вы знаете тип порта. Вы совершенно уверены, что все порты у Вас RS-232 ? Уверены ? А у пользователя ??? Тут может быть что угодно. Для получения более подробной информации используется функция GetCommProperties().
BOOL GetCommProperties
(
HANDLE hFile, // указатель на порт
LPCOMMPROP lpCommProp // указатель на структуру COMMPROP
);
При удачном выполнении вернет ненулевое значение и заполненную структуру. Смотрим.
#include "windows.h"
#include "iostream.h"
void main()
{
COMMCONFIG comm;
if (GetDefaultCommConfig("COM1",&comm,&comm.dwSize))
{
switch (comm.dwProviderSubType)
{
case PST_FAX :
cout << "FAX device " << endl;
break;
case PST_LAT :
cout << "LAT protocol" << endl;
break;
case PST_MODEM :
cout << "Modem device " << endl;
break;
case PST_NETWORK_BRIDGE :
cout << "Unspecified network bridge " << endl;
break;
case PST_PARALLELPORT :
cout << "Parallel port " << endl;
break;
case PST_RS232 :
cout << "RS-232 serial port " << endl;
break;
case PST_RS422 :
cout << "RS-422 port " << endl;
break;
case PST_RS423 :
cout << "RS-423 port " << endl;
break;
case PST_RS449 :
cout << "RS-449 port " << endl;
break;
case PST_SCANNER :
cout << "Scanner device " << endl;
break;
case PST_TCPIP_TELNET :
cout << "TCP/IP TelnetR protocol " << endl;
break;
case PST_UNSPECIFIED :
cout << "Unspecified " << endl;
break;
case PST_X25 :
cout << "X.25 standards " << endl;
break;
default :
cout << "?????? Microsft mail please ...." << endl;
break;
}
}
else cout << "Error access" << endl;
}