急求 mscomm 自动搜索端口号 方法
我用VB6的mscomm来完成pc机与其它设备的串口通讯,但是在应用中可能出现端口号不同,程序都要正确运行的问题,比如我把其它设备通过串口插入comm1那么commport=1;如果把设备通过串口插入comm2那么commport=2。如果端口号设置错误就会报错,而且连on error 都解决不了。我想问一下各位大侠怎么实现自动搜索端口号呢? --------------------编程问答-------------------- 没法搜,只能指定。你可以将每个端口都打开一遍,然后发送数据,看看哪个正确哪个就是了。 --------------------编程问答--------------------
Private Function funCommPortDetect(PortNumber As Integer) As Integer
On Error Resume Next'//屏蔽错误
MSComm0.CommPort = PortNumber'//指定端口号
MSComm0.PortOpen = True'//打开端口
If Err Then'//如果端口不存在产生错误
funCommPortDetect = -1'//返回-1
Else'//端口存在返回当前端口号
funCommPortDetect = PortNumber
End If
MSComm0.PortOpen = False'//关闭打开的端口
End Function
Public Function CommPortFix() As String
Dim intCommPortNumber As Integer, blnFirst As Boolean
Dim strResult As String
On Error Resume Next '//屏蔽错误
For intCommPortNumber = 1 To 16'//一般机器上不超过16个串口
If funCommPortDetect(intCommPortNumber) <> -1 Then
strResult = strResult & " " intCommPortNumber'//如果存在串口1,2,5.则结果strResult=1 2 5
End If
Next
CommPortFix = strResult'//返回结果
End Function
调用的时候直接令一字符变量strString=CommPortFix()即可,得到的字符串自己可以用Split处理.如果想先预处理,返回一个数组的话可以如下定义CommPortFix()函数:
Public Function CommPortFix() As String()
Dim intCommPortNumber As Integer, blnFirst As Boolean
Dim strResult As String
On Error Resume Next '屏蔽错误
blnFirst = True
For intCommPortNumber = 1 To 16
If funCommPortDetect(intCommPortNumber) <> -1 Then
If blnFirst Then
strResult = "COM" & intCommPortNumber
blnFirst = False
Else
strResult = strResult & " " & "COM" & intCommPortNumber
End If
End If
Next
CommPortFix = Split(strResult, " ")
End Function
如果存在串口1,2,5,定义一个数组,Dim arrString() As String,arrString=CommPortFix().这样arrString(0)="COM1",arrString(1)="COM2",arrString(2)="COM5". --------------------编程问答-------------------- 如果有什么问题请指正
补充:VB , 基础类