Код доступа к последовательному порту для платформы Linux - PullRequest
0 голосов
/ 09 марта 2011

Я работаю над проектом для связи с последовательными портами с использованием Java.Нужно ли подключать устройство к последовательному порту для проверки следующего кода?

Enumeration ports = CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {
    CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
    String type;
    switch (port.getPortType()) {
        case CommPortIdentifier.PORT_PARALLEL:
            type = "Parallel";
            break;
        case CommPortIdentifier.PORT_SERIAL:
            type = "Serial";
            break;
        default: /// Shouldn't happen
            type = "Unknown";
            break;
    }
    System.out.println(port.getName() + ": " + type);
}

Любое решение, чтобы этот код работал.В настоящее время я получаю сообщение об ошибке следующим образом (без подключения какого-либо устройства к последовательному порту.

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.comm.SunrayInfo.isSessionActive()Z
        at com.sun.comm.SunrayInfo.isSessionActive(Native Method)
        at com.sun.comm.Portmapping.registerCommPorts(Portmapping.java:155)
        at com.sun.comm.Portmapping.refreshPortDatabase(Portmapping.java:100)
        at javax.comm.CommPortIdentifier.<clinit>(CommPortIdentifier.java:138)
        at PortTest.main(PortTest.java:9)
Java Result: 1

Я настроил связь с JRE. Я подписался на этот блог, чтобы сделатьэто.

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Вам не хватает необходимых родных библиотек. Строка выше строк ошибок, которые вы разместили, говорит вам об этом.

Вам необходимо установить расширение javax.comm - http://www.oracle.com/technetwork/java/index-jsp-141752.html

Если вы используете windows, он больше не поддерживается или недоступен в Sun / Oracle. Возможно, вы сможете найти более старую версию в сети или кто-то еще, кто ее портирует.

0 голосов
/ 14 марта 2011

После небольшого труда я запустил код.

Одна ошибка, которую я допустил, заключалась в использовании библиотеки RxTx 2.2 для Fedora 13. Она использует версию 2.2 файлов libSerial и libParellal и 2.1 RxTxComm фляга.Когда я удалил его и использовал RxTx2.1, я получил ошибку, подобную следующей.

gnu.io.RXTXCommDriver cannot be cast to javax.comm.CommDriver

При проверке этой ошибки я обнаружил вторую ошибку, которую я сделал, и решение для вышеуказанной проблемы.Я использовал драйвер RxTx с API Java Comm.На самом деле необходимые файлы классов в Java Comm API уже доступны в библиотеке RxTx в пакете "gnu.io".

Итак, я изменил все пакеты javax.comm.* на gnu.io.*.Теперь я могу запустить приложение без ошибок.

...