要求以十六进制发送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 以上的代码发送过去,交换机没有任何反应。
试试这样,不明白你 + 是什么意思,你设置为按字符串发送? 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
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
以上的代码发送过去,交换机没有任何反应。
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