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 に答える