VB6整数到两个字节(C短)通过串口发送

时间:2011-07-28 15:40:23

标签: c vb6 types integer

我正在扩展一个VB6应用程序,该应用程序与小型嵌入式系统通信以使用串行端口(它们目前使用UDP广播);因此我试图通过串口模拟UDP数据包。

部分内容包括标题中的消息长度,长度为两个字节。

如何将VB6中的整数转换为两个字节(byte(2)),以便用C语言编写的拾取消息的程序可以将其转换为短整数?

2 个答案:

答案 0 :(得分:2)

最简单的方法就是这样做。

Private Type IntByte
    H As Byte
    L As Byte
End Type


Private Type IntType
    I As Integer
End Type

Public Sub Convert(ByVal I as Integer, ByRef H as Byte, ByRef L as Byte)

  Dim TempIT As IntType
  Dim TempIB As IntByte

 TempIT.I = I

  LSet TempIB = TempIT

  H = TempIT.H
  L = TempIT.L

End Sub

您可以使用此技术将其他数据类型分解为字节。

Private Type LongByte
    H1 As Byte
    H2 As Byte
    L1 As Byte
    L2 As Byte
End Type

Private Type DblByte
    H1 As Byte
    H2 As Byte
    H3 As Byte
    H4 As Byte
    L1 As Byte
    L2 As Byte
    L3 As Byte
    L4 As Byte
End Type

答案 1 :(得分:1)

看到它将是二进制数据,您应该在字节数组中构建数据包,这样您就可以使用CopyMemory从一个位置复制到另一个位置,只需确保使用{{1}交换字节顺序API函数。

您还可以使用基本数学来分配每个字节:

htons()

请记住,正常的网络字节顺序与Windows不同(在x86和x64上),因此最重要的字节优先。