Обмен данными через Comport на скорости 14400 бод на Java - последовательная связь

Надеюсь найти здесь решение.

У меня есть контроллер, который использует протокол для конкретного приложения через UART, и этот протокол работает только со скоростью 14400 бит / с.

Мне нужно использовать Java-код для связи с этим контроллером через последовательный порт.

Но я использую API, который не поддерживает скорость 14400 бод, хотя они называют это стандартным !!.

Я пробовал использовать javax.comm и rxtx jar. Нет никакого реального hel, поскольку они оба не поддерживают эту скорость передачи данных.

Может ли кто-нибудь помочь мне в этом отношении, это будет действительно полезно.

Спасибо!

Хорошо Вот фрагмент кода

        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;

}

person Abhi4ever    schedule 17.07.2013    source источник
comment
Никто не уверен в ответе ?? Ну же, ребята!!   -  person Abhi4ever    schedule 18.07.2013
comment
ваш вопрос недостаточно ясен. какой API вы используете? какое исключение вы получаете? какую IDE вы используете? также опубликуйте код, который вы написали   -  person Aditya Ponkshe    schedule 24.07.2013
comment
Его известная проблема в Linux: stackoverflow.com/questions/3192478/   -  person user2053898    schedule 25.08.2013
comment
Вы нашли решение?   -  person Natalia    schedule 26.09.2013
comment
Да, изменил DLL низкого уровня с javax.comm на RXTX, вот ссылка - ссылка и, что самое приятное, один и тот же код поддерживается как для x32, так и для x64-разрядных ОС / java. Ваше здоровье!   -  person Abhi4ever    schedule 27.09.2013
comment
Большое спасибо, вы сэкономили мне столько времени! Почему бы тебе не опубликовать ответ?   -  person Natalia    schedule 03.10.2013


Ответы (1)


Ну вот и решение,

Я заменил dll низкого уровня с javax.comm на rxtx.

Вот ссылка - rxtx latest driveres

И что самое приятное, он поддерживает как x32, так и x64 jre !. А перенос кода с javax.comm на rxtx занимает всего 5 минут.

Я надеюсь, что это будет полезно.

Ваше здоровье!

person Abhi4ever    schedule 14.10.2013