VB通讯中,如何向下位机发送两个字节以上的数据(大于2*255的数)?一次性发送,并能使下位机收到原数?
看过您给另外一个网友的回答,可以发送大于128的数,但好像发不了大于510的数。还有您所说的用16位二进制发送是怎么回事呢?具体是怎样的?请求您的高见!...
看过您给另外一个网友的回答,可以发送大于128的数,但好像发不了大于510的数。还有您所说的用16位二进制发送是怎么回事呢?具体是怎样的?请求您的高见!
展开
2个回答
展开全部
大于255的数,如果是2字节长度,那就按字节数组发送.
Integer 数据类型
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。
以下代码在Text1中输入上述 -32,768 到 32,767 之间的任何数,都按2字节共16位发送:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim sendSj(1) As Byte
Dim a As Integer
a = Val(Text1)
CopyMemory sendSj(0), a, 2
MSComm1.Output = sendSj
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub
Integer 数据类型
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。
以下代码在Text1中输入上述 -32,768 到 32,767 之间的任何数,都按2字节共16位发送:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim sendSj(1) As Byte
Dim a As Integer
a = Val(Text1)
CopyMemory sendSj(0), a, 2
MSComm1.Output = sendSj
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub
追问
但我要发生数据啊,只能发送byte或string类型的数据啊,不能发生integer或其他16位二进制的数据的啊。
不过谢谢你的回答。我的问题已经解决了……
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询