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

大哥大姐们,近来看看小弟我这两种情况发的数据是一样的吗

2012-01-22 
大哥大姐们,近来看看我这两种情况发的数据是一样的吗?情况1Dimarr()AsBytesHex(Val(m_CmdTmp.PlantAddr))

大哥大姐们,近来看看我这两种情况发的数据是一样的吗?
情况1
  Dim   arr()   As   Byte

        s   =   Hex(Val(m_CmdTmp.PlantAddr))
        ReDim   arr(0)
        arr(0)   =   Val( "&H "   &   s)
       
        mscom485.Settings   =   "9600,n,8,1 "
        buffer   =   arr
        mscom485.Output   =   buffer
        此时m_CmdTmp.PlantAddr=17
情况2

          Dim   arr()   As   Byte
        ReDim   arr(0)
        arr(0)   =   Val( "&H "   &   m_CmdTmp.PlantAddr)
       
        mscom485.Settings   =   "9600,n,8,1 "
        buffer   =   arr
        mscom485.Output   =   buffer
        此时m_CmdTmp.PlantAddr=11
我用监视窗口看到的buffer里的数据是一样的,但是第一种情况通讯就是不成功,不知道怎么回事?请求帮忙,谢谢!!



[解决办法]
只要你buffer里的内容相同就一样
[解决办法]
楼主两段代码发送的数据都为10进制17,16进制为&H11,至于为何第1种不成功原因另需分析。
但m_CmdTmp.PlantAddr被赋的值是不一样,而且不知道你应发哪个正确数据?
[解决办法]
情况一中, s是十六进制B, 所以结果转化成Long是11
情况二中, "&H " & m_CmdTmp.PlantAddr是十六进制11 所以转化成Long是17 (=1*16+1)

Private Sub Form_Load()
Dim arr() As Byte
Dim a As Long
Dim s As String

a = 11

s = Hex(Val(a))
Debug.Print "s= "; s
ReDim arr(0)
arr(0) = Val( "&H " & s)

buffer = arr(0)
Debug.Print "buffer1= "; buffer


Dim brr() As Byte
ReDim brr(0)
brr(0) = Val( "&H " & a)
buffer = brr(0)
Debug.Print "buffer2= "; buffer

End Sub

热点排行