2008-11-05 7 views
26

Я искал Java API, который может связываться с последовательными устройствами в Windows/Win32, но многие из API, которые я проверил, либо для Linux, либо слишком устарели, либо просто были плохими критики.Java Serial Communication на Windows

Может кто-нибудь порекомендовать мне, что они пробовали или знают о том, что легко реализовать в Windows XP?

ответ

14

Я начал искать то же самое пару недель назад, и до сих пор я очень доволен многоплатформенной библиотекой RXTX. Работает с любыми Windows, Linux и OS X. Имеет очень простой и понятный API.

Редактировать: RXTX также является открытым исходным кодом.

+0

Спасибо Мурат, я посмотрю на это. – Steve 2008-11-05 04:02:27

+1

Качество кода RXTX довольно плохое. Будьте готовы прыгать через различные обручи, если вы идете по этой дороге. – Gili 2009-05-21 07:34:25

+0

это не плохо для большинства простых вещей.Я сталкиваюсь с проблемами на USB-коммуникационных портах при ненормальных обстоятельствах (например, USB подключается/отключается во время выполнения). – 2010-01-26 22:16:10

7

Без гарантии, я рекомендую Java Serial Port с сайта serialio.com; У меня были серьезные проблемы с стабильностью с серийным пакетом Sun, IBM и RxTx. SerialPort имеет твердость в производстве 24/7 в течение более 5 лет.

Они поддерживают стандартный API-интерфейс Java, а также их собственную альтернативную собственность. Я бы придерживался стандартного API, хотя, если вам действительно не нужно что-то, что у них есть, стандартного нет, просто чтобы ваши варианты открылись.

3

Ява печально известна своей колоссальной последовательной поддержкой ввода-вывода. На предыдущей работе мы попробовали как RXTX, так и SerialIO для приложения, которое передавало данные на 56 кбит/с с сервоконтроллера Teknic и обнаружило, что они немного поглощают процессор. Возможно, для приложений, которые не требуют непрерывной потоковой передачи из последовательного порта, обе эти библиотеки хороши, но мы не считаем, что потоковый ввод-вывод из последовательного порта должен потреблять 15-30% машина, когда это очень необходимо для других потоков в JVM, которые должны быть отзывчивыми.

Вместо этого мы создали сервер на C++, который бы считывал поток данных из последовательного порта серво, преобразовывал/пакетировал его и отправлял в наше приложение Java в XML через соединение сокета. Загрузка ЦП на сервере последовательного ввода-вывода в C++? Едва ползти до 1% в худшем.

Есть некоторые вещи Java делает хорошо - последовательного ввода/вывода, на мой взгляд, не один из них, в зависимости от типа приложения ...

В конце концов, вы должны принять даже то, что я сказал с зерном соли, и попробуйте оба: RXTX и SerialIO (которые дешево дешевле, например, 50 долларов США для версии java), и если они отвечают вашим потребностям, идите с ним. Лично я придерживаюсь SerialIO, потому что он поддерживается и активно работает. RXTX, не так много.

1

Я написал библиотеку Java с открытым исходным кодом, потому что ни один из существующих не соответствует моим потребностям (устаревший, закрытый источник, трудно модифицировать, не поддерживать, ...).

Это называется JSerial, это лицензия MIT, и вы можете узнать больше здесь: https://github.com/thibautd/JSerial!

В настоящее время поддерживается только Windows, но у меня есть планы по поддержке Linux. Вы можете легко изменить исходную часть с помощью новейшей Visual Studio, если вам нужно.

2

Я использую PureJavaComm последние пять лет или около того. Он активно поддерживается и представляет собой чистую реализацию Java (через JNA). RXTX подвела меня из-за недостатка обслуживания и многочисленных тонких проблем.