使用spcomm检测串口是否连接有设备,有的话打开,否则在下拉列表中显示该计算机的串口(100)

  • 主题发起人 主题发起人 IT自动化
  • 开始时间 开始时间
I

IT自动化

Unregistered / Unconfirmed
GUEST, unregistred user!
使用spcomm检测串口是否连接有设备,有的话打开,否则在下拉列表中显示该计算机的串口?找了很久这方面的资料都没看到,不得已来寻求大富翁帮助,望高手指教。(急)
 
首先,你要知道设备的波特率以及通讯协议,然后不间断的访问串口,才可以判断是否有设备连接到串口。至于计算机已经存在的串口,在计算机的注册表中可以找到
 
波特率和协议都是知道的,楼上能不能给出示例?
 
不知你说的是否是枚举串口?给你一个例程。可以检测可用串口。procedure EnumComPorts(APorts: TStrings);var KeyHandle: HKEY; ErrCode, Index: Integer; ValueName, Data: string; ValueLen, DataLen, ValueType: DWORD; TmpPorts: TStringList;begin ErrCode := RegOpenKeyEx( HKEY_LOCAL_MACHINE, 'HARDWARE/DEVICEMAP/SERIALCOMM', 0, KEY_READ, KeyHandle); if ErrCode <> ERROR_SUCCESS then Exit; // raise ERS232Error.Create(CErrCode); TmpPorts := TStringList.Create; try Index := 0; repeat ValueLen := 256; DataLen := 256; SetLength(ValueName, ValueLen); SetLength(Data, DataLen); ErrCode := RegEnumValue(KeyHandle, Index, PChar(ValueName), Cardinal(ValueLen), nil, @ValueType, PByte(PChar(Data)), @DataLen); if ErrCode = ERROR_SUCCESS then begin SetLength(Data, DataLen); TmpPorts.Add(Data); Inc(Index); end else if ErrCode <> ERROR_NO_MORE_ITEMS then exit; //raise ERS232Error.Create(ErrCode); until (ErrCode <> ERROR_SUCCESS) ; TmpPorts.Sort; APorts.Assign(TmpPorts); finally RegCloseKey(KeyHandle); TmpPorts.Free; end;end;
 
谢谢,相当的强大啊,分数给你!
 
后退
顶部