怎样检查串口是否被占用!!

rrqx 2002-04-19 02:05:14
我想检查串口是否被占用,使用了
Mscomm.portopen 是否为 TURE 来判断,但无效
当 串口 被程序调用 时,它不会自己跳越 到 下一串口; 如果串口不存在它也检测不到,附程序,在线等答案!!

'计算机上串口假定最多四个
MSCommSt.CommPort = 1
If MSCommSt.PortOpen Then
MSCommSt.CommPort = 2
If MSCommSt.PortOpen Then
MSCommSt.CommPort = 3
If MSCommSt.PortOpen Then
MSCommSt.CommPort = 4
If MSCommSt.PortOpen Then
MsgBox "串口1到4都被占用!检查,空出一串口,再运行本程序!", , "警告!"
Exit Sub
End If
End If
End If
End If

MSCommSt.PortOpen = True
...全文
2380 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gump2000 2002-04-19
  • 打赏
  • 举报
回复
Dim i As Integer

On Error GoTo err1
For i = 1 To 16
MSComm1.CommPort = i
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
List1.AddItem "COM" & i
End If
err1:
Resume Next
Next
End Sub

改成这样就是查找有多少可用端口了。
gump2000 2002-04-19
  • 打赏
  • 举报
回复
对的,False才是对的,因为不是用这个mscomm控件打开的。

rrqx 2002-04-19
  • 打赏
  • 举报
回复
如果 串口 不存在呢??

还有我试过 用两个 程序同时读 同一串口,后打开的程序串口竟然报FALSE啊!
gump2000 2002-04-19
  • 打赏
  • 举报
回复
以上代码,您自己修改一下就可以达到您的要求
gump2000 2002-04-19
  • 打赏
  • 举报
回复
Dim i As Integer

On Error GoTo err1
For i = 1 To 16
MSComm1.CommPort = i
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
List1.AddItem "COM" & i
End If
err1:
If Err = 8005 Then
List1.AddItem "COM" & i
End If
Resume Next
Next
End Sub


8005号错误是已经打开,您必须尝试打开这个端口,再捕捉错误。
mscomm.portopen 这个属性是针对他打开的端口而言的,假如
是别的程序打开的,一样是false

7,762

社区成员

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

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