1、检索电脑上所有串口2、给串口发送AT命令,等待应答,在预定时间返回的就是Modem,否则就不是或者没上电下面是我在一个小程序上用过的串口检索函数function TfrmMain.EnumSerialPort(S: TStrings): Boolean;var DeviceInfoData : SP_DEVINFO_DATA;
hDevInfo : Cardinal;
DataT : Cardinal;
I : Integer;
Buf : array[0..255] of Char;
begin
Result := False;
hDevInfo := SetupDiGetClassDevs(@GUID_DEVCLASS_PORTS, nil, 0, DIGCF_PRESENT);
if hDevInfo <> INVALID_HANDLE_VALUE then
begin
I := 0;
DeviceInfoData.cbSize := SizeOf(SP_DEVINFO_DATA);
{ 枚举设备信息 } while SetupDiEnumDeviceInfo(hDevInfo, i, @DeviceInfoData)do
begin
{ 获取设备信息包括GUID和名称 } SetupDiGetDeviceRegistryProperty(hDevInfo, @DeviceInfoData, SPDRP_FRIENDLYNAME, @DataT, PByte(@Buf), Sizeof(Buf), nil);
Inc(I);
if Pos('COM', Buf) > 0 then
S.Add(Buf);
end;
if (GetLastError = NO_ERROR) or (GetLastError = ERROR_NO_MORE_ITEMS) then
Result := True;
{ 释放 DeviceInfoData, hDevInfo } SetupDiDestroyDeviceInfoList(hDevInfo);
end;
end;