RXTX трудности в Windows - PullRequest
       13

RXTX трудности в Windows

2 голосов
/ 02 мая 2011

Доброе утро,

У меня есть Java-программа orderPrinter, которая связывается с POS-принтером через USB-порт. Я установил библиотеки RXTX и javax.comm в соответствии с инструкциями, и после некоторого изменения местоположения файлов удалось запустить программу на моем компьютере (Windows 7).

Однако я сталкиваюсь с трудностями, заставляя его работать в Windows XP (которая после распространения будет основной платформой, а вторичной будет Linux, я полагаю). После замены 64-битных файлов JAR и DLL их соответствующими 32-битными заменителями (как описано в RXTX wiki ), я столкнулся с несколькими проблемами:

1) RXTX, похоже, испытывает проблемы с поиском правильного COM-порта. Тестирование через echo [gibberish] >> COMx генерирует ответ, поэтому я знаю, что принтер находится в COM5. Следующий код:

Enumeration portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) {
            System.out.println("Port:  "+((CommPortIdentifier)(portList.nextElement())).getName());
        }
        CommPortIdentifier portID = CommPortIdentifier.getPortIdentifier(settings.port);

выводит «Port: //./COM5» как единственный порт на 32-разрядной машине, тогда как в Windows 7 я получаю «Port: COM5». Первая проблема, с которой я сталкиваюсь, состоит в том, что вызов CommPortIdentifier.getPortIdentifier (port) завершается неудачно в XP; Я могу только предположить, что это связано с тем, что CommPortIdentifier точно соответствует имени порта. Есть ли способ изменить JAR, чтобы обеспечить более мягкое сопоставление портов?

2) Предполагая на данный момент, как временное исправление, я жестко запрограммировал точную ожидаемую строку для Windows XP. Сразу после этого, когда я вызываю portID.open ([правильные параметры), программа вылетает со следующей ошибкой:

Exception in thread "main" java.lang.VerifyError:  (class:  gnu/io/RXTXPort$SerialOutputStream, methd: flush signature: ()V) Illegal use of nonvirtual function call

Каждое найденное мной решение сводилось к использованию более старой версии RXTX; однако, как уже говорилось, я использую 2.1-7r2, который, насколько мне известно, является самым последним стабильным выпуском. Я полностью сбит с толку этой ошибкой и как ее исправить. Есть идеи?

Имейте в виду, что, хотя я знаком с программированием на Java, я гораздо более ограничен в своем понимании ошибок, связанных со сборкой, что, похоже, имеет место; Я также хотел бы иметь возможность объяснить проблему, чтобы в будущем ее было легче решить.

Спасибо за ваше время.

РЕДАКТИРОВАТЬ: я думаю, у меня есть решение проблемы 1; изменить исходный код и затем перекомпилировать. У меня нет времени на отладку, почему javac не является допустимой командой в приглашении, хотя я и не нашел надежного способа сделать это в Eclipse. Опять же, я впервые делаю что-то помимо импорта JAR-файла, так что это опыт обучения, если не сказать больше. Или испытание огнем в этот момент.

...