有没什么函数可以检测到有几个串口,怎样才能检测串口上是否有modem(50分)

  • 主题发起人 WorldCreater
  • 开始时间
W

WorldCreater

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中获取计算机中共有几个串口,检测这些串口上有没有modem
 
对于是否有modem,估计需要发送AT命令进行查询了。呵呵,我这方面懂的不是特别多。[:)]
 
用 API 吧
别不好意思了
 
at命令就行了呀..
 
free_knight:
API?
哪个?不好找啊
 
at命令怎么写呀?
给个示范吧
 
呵呵!上面的太复杂化了!
简单的方法是在注册表 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Service/Class/Modem下
获取MODEM信息!其中AttachedTo表明了MODEM所占用的端口。
稍复杂的话随便写一个串口编程,如使用MSComm控件,打开串口即可判断!
 
YB_unique:
怎么检测串口?作一个循环如1~256
 
用cport可以列出可用的port,不需要直接读注册表
at命令就是向串口发atXXX,如果有回应,则有字符返回
查询medom可以用ati3等
 
lisom:
cport? vc 的函数?
 
如何知道系统有几个串口

procedure TForm1.Button1Click(Sender: TObject);
var
reg : TRegistry;
ts : TStrings;
i : integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware/devicemap/serialcomm',
false);
ts := TStringList.Create;
reg.GetValueNames(ts);
for i := 0 to ts.Count -1 do begin
Memo1.Lines.Add(reg.ReadString(ts.Strings));
end;
ts.Free;
reg.CloseKey;
reg.free;
end;
 
多人接受答案了。
 
YB_unique-50,
“简单的方法是在注册表 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Service/Class/Modem下
获取MODEM信息!其中AttachedTo表明了MODEM所占用的端口。
稍复杂的话随便写一个串口编程,如使用MSComm控件,打开串口即可判断!”

我在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Modem/Enum下可以找到一个
键名为0键值为PCI/VEN_125D&DEV_2838&SUBSYS_2838125D&REV_01/3&61aaa01&0&58
的modem信息,这和在计算机管理器里相应的modem的诊断页调制解调器信息
字段       值
Hardware ID PCI/VEN_125D&DEV_2838&SUBSYS_2838125D&REV_01/3&61aaa01&0&58
是一样的,但找不到相关连的端口及设备名
我用的是内置猫
 
顶部