VB6.0 串口通讯 如何让电脑自动搜索仪表地址赋给label1? 10

PrivateSubForm_Load()i=1CallInitialPort'设置串口参数Timer1.Enabled=Truecaiji=TrueEndSubPriv... Private Sub Form_Load()

i = 1
Call InitialPort '设置串口参数
Timer1.Enabled = True
caiji = True
End Sub
Private Sub MSComm1_OnComm()
Dim cmdin() As Byte '接收数据字节变量
Dim Index As Integer
MSComm1.InputLen = 0
Select Case MSComm1.CommEvent
Case comEvReceive '接收事件
If MSComm1.InBufferCount = 10 Then
cmdin = MSComm1.Input
If i = 1 Then
Label1(0).Caption = TwoBytes(cmdin(0), cmdin(1))
Label1(1).Caption = TwoBytes(cmdin(2), cmdin(3))
ElseIf i = 3 Then
Label1(2).Caption = TwoBytes(cmdin(0), cmdin(1))
ElseIf i = 4 Then
Label1(3).Caption = TwoBytes(cmdin(0), cmdin(1))
ElseIf i = 5 Then
MSComm1.Output = cmdout
Label1(4).Caption = TwoBytes(cmdin(0), cmdin(1))
Label2(0).Caption = TwoBytes(cmdin(2), cmdin(3))
ElseIf i = 6 Then
MSComm1.Output = cmdout
Label1(5).Caption = TwoBytes(cmdin(0), cmdin(1))
Label2(1).Caption = TwoBytes(cmdin(2), cmdin(3))
End If
End If
End Select
End Sub
现在我在form里设置i=3 就只能测仪表地址为3的值 设置i=1就只能测试仪表地址为1的值,怎么才能让它同时测不同仪表的数值?
展开
 我来答
donfull
2013-08-26 · TA获得超过420个赞
知道小有建树答主
回答量:523
采纳率:20%
帮助的人:99.6万
展开全部
1.您在开始的赋值语句中设置了i=N,就设置为N的地址,说明编制的没有问题;
2.把您的整个过程放到一个循环中就可以了啊。
do while 退出条件(防止锁死,并在关闭窗口时关闭COM口,以免下次不能打开)
for i=1 to 7

您的编程本体 Timer1.Enabled = True caiji = TrueEnd SubPrivate Sub MSComm1_OnComm() Dim cmdin() As Byte '接收数据字节变量 Dim Index As Integer MSComm1.InputLen = 0 Select Case MSComm1.CommEventCase comEvReceive '接收事件 If MSComm1.InBufferCount = 10 Thencmdin = MSComm1.Input If i = 1 Then Label1(0).Caption = TwoBytes(cmdin(0), cmdin(1)) Label1(1).Caption = TwoBytes(cmdin(2), cmdin(3)) ElseIf i = 3 Then Label1(2).Caption = TwoBytes(cmdin(0), cmdin(1)) ElseIf i = 4 Then Label1(3).Caption = TwoBytes(cmdin(0), cmdin(1)) ElseIf i = 5 Then MSComm1.Output = cmdout Label1(4).Caption = TwoBytes(cmdin(0), cmdin(1)) Label2(0).Caption = TwoBytes(cmdin(2), cmdin(3)) ElseIf i = 6 Then MSComm1.Output = cmdout Label1(5).Caption = TwoBytes(cmdin(0), cmdin(1)) Label2(1).Caption = TwoBytes(cmdin(2), cmdin(3)) End If End If End Select

next i
loop
更多追问追答
追问

MSComm1_OnComm()事件里elseif下面不用再添加或者删除   MSComm1.Output = cmdout  ? 我在if i=1 then 上面加了个for i=1 to 7,但是程序报错end if没有块if ,删了这句就显示程序报错if没有块endif ?同样的问题还有End Select跟、loop的。 我应该怎么改??还有1 to 7 是什么意思?

追答
老,你里面用了I变量,外面我做的就改成其他就行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式