我对此并不了解,所以这将是一个非常基本的问题。
我有一个漂亮的USB小东西,模仿COM端口。这是一个简单的开关,我可以发送三种不同的信号:ON,OFF和GET STATUS
我使用名为RealTerm的终端程序对其进行了测试。在此,我可以以设置的波特率和其他选项打开端口,然后将bin文件发送到端口。当我得到这个东西时,我还下载了三个不同的.bin文件 - 一个用于ON,一个用于BREAK,一个用于GET STATUS。这就像一个魅力,端口返回相应的代码等。
现在,我想在Java中尝试这个(首先,然后可能是C / C ++)。所以我得到了一个名为JSSC(v0.9)的库,这使得这很容易。这就是我的工作:
public static void main(String[] args) {
String[] portNames = SerialPortList.getPortNames();
for(int i = 0; i < portNames.length; i++){
System.out.println(portNames[i]);
}
SerialPort serialPort = new SerialPort("COM10");
try {
serialPort.openPort();//Open serial port
serialPort.setParams(SerialPort.BAUDRATE_9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
serialPort.writeBytes("0x55 01 01 02 00 00 00 59".getBytes());
serialPort.closePort();
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
波特率,数据和停止位是正确的。当我插入设备时,system.out.prinln列出了端口,因此看起来设备已被检测到。
现在,该设备具有以下代码字:
Make: 0x55 01 01 02 00 00 00 59
Break: 0x55 01 01 01 00 00 00 58
Check status: 0x55 01 01 00 00 00 00 57
我是否应该能够将这些十六进制字符串传递给java程序中的设备,并获取/观察结果?如果是这样,我该怎么办?像上面的writeBytes()或writeString()没有做任何事情。 (当MAKE或BREAK信号有效时,我听到设备发出的咔嗒声。)
或者有没有办法将这些.bin文件传递给端口,就像我在RealTerm中一样?
另外,有没有人确切知道这些.bin文件可能是哪种文件?我从(便宜)购买它的人不是很有信息,并且不想帮助处理事情或回答与设备无直接关系的问题(当然这是可以理解的)。
我不需要深入研究微处理器编程或类似主题,因为我只是想完成一些基本操作。但是,一些见解或概述当然是必要的。
答案 0 :(得分:1)
在我看来,那些代码:
Make: 0x55 01 01 02 00 00 00 59
Break: 0x55 01 01 01 00 00 00 58
Check status: 0x55 01 01 00 00 00 00 57
你必须像字节数组一样发送。它们看起来像十六进制数字,所以尝试这样做:
byte[] mike = new byte[]{0x55, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x59};
serialPort.writeBytes(mike);
serialPort.flush(); // is this method available? I think you should invoke it, if it is present
serialPort.closePort();