VB用API如何检测存在的串口被占用跟不存在的串口?

Adu293 2007-11-01 09:47:31
比如计算机有两个串口,COM1被占用,如何检测出来,如何检测出COM3以后的串口不存在,存在的COM1要添加到COMBOX中
...全文
522 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqzm123 2011-11-20
  • 打赏
  • 举报
回复
让我试试 才接触
hnloyal 2010-07-05
  • 打赏
  • 举报
回复
学习了。
Adu293 2007-11-17
  • 打赏
  • 举报
回复
解决了,用MSCOMM控件的我知道,但是超过16号串口的要用API来打开的,,,
zdingyun 2007-11-02
  • 打赏
  • 举报
回复
下列代码在WIN98只能查到1-4COM口,在WINXP可查1-16COM口:

Option Explicit
Dim a As Integer
Private Sub Command1_Click()
On Error GoTo uerror
For a = 1 To 4
MSComm1.CommPort = a
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Print "可用Com号= "; a
MSComm1.PortOpen = False
Else
End If
Next
Exit Sub
uerror:
If Err.Number = 8005 Then
Print "占用Com号= "; a
ElseIf Err.Number = 8002 Then
Print "出错Com号= "; a
End If
Resume Next
End Sub
zdingyun 2007-11-02
  • 打赏
  • 举报
回复
无需API,用下列代码可判断出错或占用Com号

Option Explicit
Dim a As Integer
Private Sub Command1_Click()
On Error GoTo uerror
For a = 1 To 16
MSComm1.CommPort = a
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Print "可用Com号= "; a
MSComm1.PortOpen = False
Else
End If
Next
Exit Sub
uerror:
Print "出错或占用Com号= "; a
Resume Next
End Sub
yachong 2007-11-02
  • 打赏
  • 举报
回复
注册表应该是在这里记录了存在的串口:
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
of123 2007-11-02
  • 打赏
  • 举报
回复
可以尝试打开来测试是否占用或不存在。但这种方法比较慢。另一种方法是先从注册表查得可用的端口。
波导终结者 2007-11-02
  • 打赏
  • 举报
回复
On Error Resume Next
MSComm1.PortOpen = False
MSComm1.CommPort = 串口号
MSComm1.PortOpen = True

If MSComm1.PortOpen = False Then 串口被占用或不存在

前几天在哪个贴子好像有看到一个从注册表读取可用串口的方法,但是没办法判断是否被占用好像

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧