我有一个串行设备通过 com 端口连接到我的计算机。我想将十六进制数据发送到此设备,将数据发送到设备的最佳方法是什么。
例如我有这个数据-
String hexStr = "02303033434333d3037313131303131323639393130333131303139033f";
我现在在做的是——
byte[] unsignedByte = HexUtil.convertToBytes(hexStr);
serialPort.getOutputStream().write(unsignedByte);
我面临的问题是 - 串行设备没有响应?当我通过软件发送相同的十六进制字符串时,终端正在响应。难道我做错了什么?
这是代码的一部分-
mOutputToPort.write(unsignedByte);
logger.info("Byte Sent");
mOutputToPort.flush();
logger.info("Waiting for response");
Thread.sleep(10000);
byte mBytesIn [] = new byte[2000];
int num = mInputFromPort.read(mBytesIn);
System.out.println("Number of bytes read -"+ num);
for(byte b : mBytesIn){
System.out.print(b);
System.out.print(" ");
}
System.out.println();
嗨,伙计们,我终于自己发现了如何正确地做到这一点。我没有以正确的格式发送数据。我在使用其他软件监控串行数据交换时发现。
向串行设备发送数据的最佳方式是 - ASCII DATA --> HEX STRING --> UNSIGNED BYTE