要求以十六进制发送0xaa 00 00 00 0x0d。VB中这段程序该如何写。

解决方案 »

  1.   

    同意 byte类型的数组winsock.send ss,vbbyte
      

  2.   

    要求以十六进制发送0xaa 00 00 00 0x0d到交换机,通过rs232串口。用MSCOMM控件来做。用串口调试程序,以十六进制发送AA 00 00 00 0D到交换机,交换机成功的反回一串数据。在VB中我的代码如下:Public Sub SetToTest()
            CommData = chr(&HAA)
            CommData = CommData + ByteToHex("00")
            CommData = CommData + ByteToHex("00")
            CommData = CommData + ByteToHex("00")
            CommData = CommData + chr(&HD)
            CommCtrl.Output = CommData
    end sub'转换字节数据为16进制字符串
    Private Function ByteToHex(iByte As Byte) As String
        ByteToHex = IntToHexChar(iByte \ &H10) + IntToHexChar(iByte Mod &H10)
    End Function
    以上的代码发送过去,交换机没有任何反应。
      

  3.   

    试试这样,不明白你 + 是什么意思,你设置为按字符串发送?
    dim CommData(0 to 4) as byte
    CommData(0)=&HAA
    CommData(1)=ByteToHex("00")    '这里你可以试一下Hex(Val("00"))
    CommData(2)=ByteToHex("00")
    CommData(3)=ByteToHex("00")
    CommData(4)=&H0D
    再设置好串口,波特率什么的 
    CommCtrl.InputMode = comInputModeBinary     '用二进制
    If comm.PortOpen = False Then comm.PortOpen = True   '打开串口
    dim cc(0 to 0) as byte
    dim i as integer
    for i=0 to 4
        cc(0)=CommData(i)
        CommCtrl.output=cc
        Do Until MSComm1.OutBufferCount = 0
        Loop
    next i
      

  4.   

    刚才我问了一下才知道,那个交换机只接十六进制的数据。那是不是只要commctrl.output="AA0000000D"就可以了?