回 帖 发 新 帖 刷新版面

主题:我自己写的上位机接收程序,请大神帮我看看怎么修改正常啊

Private Sub MSComm1_OnComm()
Dim BytesReceived()     As Byte
        Dim buffer     As String
        Dim HData     As String
        Dim i     As Integer

Select Case MSComm1.CommEvent
    Case comEvReceive
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
       buffer = MSComm1.Input
      BytesReceived() = buffer
     For i = 0 To UBound(BytesReceived)                       '显示结果以十六进制显示
                                If Len(Hex(BytesReceived(i))) = 1 Then
                                        HData = HData & "0 " & Hex(BytesReceived(i))
                                Else
                                        HData = HData & Hex(BytesReceived(i))
                                End If

   Next
  
  End Select


Dim a, b, c, d, e As String
a = Mid(HData, 1, 2)
b = Mid(HData, 3, 4)
Text2.Text = a
Text3.Text = b
[size=4][color=00FF00] 到这里的话能正常显示,我用下位机发来的数据是1DH,4EH,4F,然后Text2.Text显示1D,Text3.Text显示4E4F[/color][/size]



If a = &H3D Then Text5.Text = b[size=4][color=000080]这就不能显示了,这几个框什么也没有[/color][/size]
If a = &H2D Then Text6.Text = b
'If a = &H1D Then Text4.Text = b
End If
  Call Command1_Click
End Sub  请问是什么原因啊

回复列表 (共4个回复)

沙发


[size=5][color=800000]就是IF语句这里怎么写[/color][/size]

板凳


谢谢啊,帮帮我

3 楼

[color=FF00FF]
[size=5][size=3]可能没说清楚,我用下位机发来(1D4E4F)(2D3E3F)(3D3E3F),通过判断前两位来确定是什么数据当前两位是1D就把4E4F放入Text4.Text ,2D把3E3F放Text6.Text ,3D把3E3F放Text5.Text 中,我是用IF语句时出现了问题,请大神帮帮忙啊[/size][/size][/color]

4 楼

第一:
If a = &H1D Then Text4.Text = b
语句被注释掉了,你去掉前面的撇号。

第二:
这些if语句没有什么错误。怀疑a值不在给定的三种之内。
建议在这些if语句开始的地方,设置断点,检查a值。

第三:
多个if语句都是根据同一表达式的值确定流向,则建议是用select语句。执行效率高些。

我来回复

您尚未登录,请登录后再回复。点此登录或注册