大哥大姐们,近来看看我这两种情况发的数据是一样的吗?
情况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