首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB用API怎么检测存在的串口被占用跟不存在的串口

2012-01-29 
VB用API如何检测存在的串口被占用跟不存在的串口?比如计算机有两个串口,COM1被占用,如何检测出来,如何检测

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 

热点排行