VB用API如何检测存在的串口被占用跟不存在的串口?
比如计算机有两个串口,COM1被占用,如何检测出来,如何检测出COM3以后的串口不存在,存在的COM1要添加到COMBOX中
[解决办法]
On Error Resume Next
MSComm1.PortOpen = False
MSComm1.CommPort = 串口号
MSComm1.PortOpen = True
If MSComm1.PortOpen = False Then 串口被占用或不存在
前几天在哪个贴子好像有看到一个从注册表读取可用串口的方法,但是没办法判断是否被占用好像
[解决办法]
可以尝试打开来测试是否占用或不存在。但这种方法比较慢。另一种方法是先从注册表查得可用的端口。
[解决办法]
注册表应该是在这里记录了存在的串口:
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
[解决办法]
无需API,用下列代码可判断出错或占用Com号[b][/b]:
- VBScript code
Option Explicit Dim a As IntegerPrivate 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 Subuerror: Print "出错或占用Com号= "; a Resume NextEnd Sub
[解决办法]
下列代码在WIN98只能查到1-4COM口,在WINXP可查1-16COM口:
- VBScript code
Option Explicit Dim a As IntegerPrivate 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 Subuerror: If Err.Number = 8005 Then Print "占用Com号= "; a ElseIf Err.Number = 8002 Then Print "出错Com号= "; a End If Resume NextEnd Sub