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

MSComm1_OnComm()事件在程序一开始就执行,不能选择串口号?该如何解决

2012-01-07 
MSComm1_OnComm()事件在程序一开始就执行,不能选择串口号?我用的是MSComm1_OnComm()事件来实现串口数据传

MSComm1_OnComm()事件在程序一开始就执行,不能选择串口号?
我用的是MSComm1_OnComm()事件来实现串口数据传输,但有一个问题就是串口号必须事先在代码中确定好,当不设定串口号或者串口号不对时提示“无效串口号”,而不能打开程序。此外如果我把MSCOMM1.ENABLE=FALSE时也开始不了程序,会提示“设备没打开”。有什么办法可以先运行程序,再选择串口号,之后开始执行串口数据传输?
谢谢大家!!

[解决办法]
Option Explicit
Dim a As Integer
Dim ckh As Integer

Private Sub cmdXuanhao_Click()
ckh = InputBox( "确定串口号:= ", ckh)
MSComm1.CommPort = ckh
MSComm1.Settings = "9600,N,8,1 "
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Me.Cls
End Sub

Private Sub Form_Load()
xunjian
End Sub
Private Sub xunjian()
On Error GoTo uerror
For a = 1 To 4
MSComm1.CommPort = a
MSComm1.PortOpen = True
Print "可用Com号= "; a
MSComm1.PortOpen = False
Next
Exit Sub
uerror:
Print "出错Com号= "; a
End Sub

Private Sub MSComm1_OnComm()
'写接收代码
End Sub

[解决办法]
MSComm1_OnComm()事件是当串口发送或者接受到信号的时候才会发生。
如果你连串口号都没有指定好,这个事件当然不可能发生了
[解决办法]
Option Explicit
Dim a As Integer
Dim b(8) As Integer
Dim c(8) As Integer
Dim ckh As Integer

Private Sub Command1_Click()
ckh = InputBox( "确定串口号:= ", ckh)
MSComm1.CommPort = ckh
MSComm1.Settings = "9600,N,8,1 "
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Me.Cls
End Sub

Sub Form_Load()
On Error GoTo abc
For a = 1 To 4
MSComm1.CommPort = a
MSComm1.PortOpen = True
c(a) = a
MSComm1.PortOpen = False
Next
For a = 1 To 4 '显示有效端口号
If b(a) = c(a) Then
Print ; "无效COM口= " & b(a)
Else
Print ; "有效COM口= " & a
End If
Next
Exit Sub
abc:
b(a) = a
Resume Next
End Sub

热点排行