1

希望在这里找到解决办法。

我有一个控制器,它通过 UART 使用特定于应用程序的协议,并且该协议仅在 14400 bps 下工作。

我必须使用 java 代码通过串行端口与此控制器通信。

但是我发现我正在使用的 API 不支持 14400 波特率,尽管他们称之为标准!!。

我尝试使用 javax.comm 和 rxtx jar。没有真正的地狱,因为他们两个都不支持这个波特率。

任何人都可以在这方面帮助我,这将非常有帮助。

谢谢!

好的,这是代码片段

        selectedPort = (SerialPort) portID.open("FlashProgramming",
                TIMEOUT);
        System.out.println("port " + selectedPort + " is opened");



    try {

        selectedPort.setSerialPortParams(14400,
                SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);

//这里尝试将波特率设置为14400,但它正在回滚到9600,不支持默认为14400!

    }


    // no handshaking or other flow control
    try {
        selectedPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
    } catch (UnsupportedCommOperationException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    // timer on any read of the serial port
    try {
        selectedPort.enableReceiveTimeout(TIMEOUT);
    } catch (UnsupportedCommOperationException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    System.out.println("Comport Configeration is done");

    try {

        Serialdriver.in = selectedPort.getInputStream();
        Serialdriver.out = selectedPort.getOutputStream();

        System.out.println("i/p & o/p's are initialized");

        Serialdriver.handlerParamselScreen.displaystatus("Seleted Com port "
                + selectedPort + " is Successfully opened");
    }



        selectedPort.addEventListener(Serialdriver);



    selectedPort.notifyOnDataAvailable(true);


    return selectedPort;

}
4

1 回答 1

0

那么这里是解决方案,

我将低级 dll 从 javax.comm 替换为 rxtx。

这是链接 - rxtx 最新驱动程序

最好的部分是它同时支持 x32 和 x64 jre!。将代码从 javax.comm 移植到 rxtx 只需 5 分钟。

我希望它会有所帮助。

干杯!

于 2013-10-14T05:46:24.863 回答