1

我对此了解不多,所以这将是一个非常基本的问题。

我有一个漂亮的 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 文件可能是什么类型的文件?我从(便宜)那里买的那个人信息量不大,不想帮助解决与设备没有直接关系的问题或回答问题(当然,这是可以理解的)。

我不需要在这里深入研究微处理器编程或类似主题,因为我实际上只是在尝试完成一些基本操作。但是,一些洞察力或概述当然是必要的。

4

1 回答 1

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();
于 2013-01-18T09:47:33.880 回答