Ява печально известна своей колоссальной последовательной поддержкой ввода-вывода. На предыдущей работе мы попробовали как RXTX, так и SerialIO для приложения, которое передавало данные на 56 кбит/с с сервоконтроллера Teknic и обнаружило, что они немного поглощают процессор. Возможно, для приложений, которые не требуют непрерывной потоковой передачи из последовательного порта, обе эти библиотеки хороши, но мы не считаем, что потоковый ввод-вывод из последовательного порта должен потреблять 15-30% машина, когда это очень необходимо для других потоков в JVM, которые должны быть отзывчивыми.
Вместо этого мы создали сервер на C++, который бы считывал поток данных из последовательного порта серво, преобразовывал/пакетировал его и отправлял в наше приложение Java в XML через соединение сокета. Загрузка ЦП на сервере последовательного ввода-вывода в C++? Едва ползти до 1% в худшем.
Есть некоторые вещи Java делает хорошо - последовательного ввода/вывода, на мой взгляд, не один из них, в зависимости от типа приложения ...
В конце концов, вы должны принять даже то, что я сказал с зерном соли, и попробуйте оба: RXTX и SerialIO (которые дешево дешевле, например, 50 долларов США для версии java), и если они отвечают вашим потребностям, идите с ним. Лично я придерживаюсь SerialIO, потому что он поддерживается и активно работает. RXTX, не так много.
Спасибо Мурат, я посмотрю на это. – Steve 2008-11-05 04:02:27
Качество кода RXTX довольно плохое. Будьте готовы прыгать через различные обручи, если вы идете по этой дороге. – Gili 2009-05-21 07:34:25
это не плохо для большинства простых вещей.Я сталкиваюсь с проблемами на USB-коммуникационных портах при ненормальных обстоятельствах (например, USB подключается/отключается во время выполнения). – 2010-01-26 22:16:10