在Java中以14400波特率通过Com端口进行通信 - 串行通信

时间:2013-07-17 09:42:10

标签: java serial-port rxtx baud-rate javax.comm

希望在这里找到解决方案。

我有一个控制器,它使用UART上的应用程序特定协议,此协议仅在14400 bps下工作。

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

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

我尝试使用javax.comm和rxtx jar。没有真正的帮助,因为它们都不支持这种波特率。

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

谢谢!

Ok这是代码段

        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;

}

1 个答案:

答案 0 :(得分:0)

这是解决方案,

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

以下是链接 - rxtx latest driveres

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

我希望它有用。

干杯!