jSSC (Java Simple Serial Connector) — библиотека для работы с последовательными (COM) портами ПК. Библиотека создавалась как простая и надёжная замена уже имеющимся средствам. Своё официальное, публичное начало она берёт в 2010 году и распространяется под лицензией LGPL.
С помощью jSSC можно получать имена портов, читать и писать данные, получать ивенты о произошедших событиях ну и т.д. В отличии от javax.comm, с jSSC можно управлять линиями RTS и DTR. Библиотека разрабатывалась для работы в режиме 24/7 в многопоточных системах и на данный момент успешно используется в системах автоматизации, сбора и регистрации данных.
Библиотеку можно использовать на таких платформах, как:
- Windows x86 и x64;
- Linux x86, x64, armhf и armsf (т.е. Raspberry Pi, Orange Pi, Banana Pi, NanoPi и тп);
- Solaris x86 и x64;
- Mac OS X ppc, ppc64, x86 и x64.
jSSC можно разделить на несколько основных частей:
SerialNativeInterface
– класс, который предоставляет доступ ко всем «нативным» методам jSSC.SerialPort
– класс, с помощью которого мы уже будем непосредственно работать с нужным нам портом.SerialPortEventListener
– интерфейс, который необходимо реализовать, если мы хотим использовать ивенты.
jSSC предоставляет следующий ряд возможностей:
- Чтение и запись данных;
- Управление линиями RTS, DTR;
- Получение статуса линий CTS, DSR, RING, RLSD;
- Получение количества байт в буферах;
- Очистка буферов порта;
- Отправка сигнала Break;
- Управление потоком;
- Получение списка com-портов в системе;
Где скачать jSSC
Последнюю версию скачать можно тут, на этой странице можно найти и исходный код. На данный момент доступна версия 2.8.0: jSSC-2.8.0-Release.zip, в архиве вы найдёте файл jssc.jar, его и добавьте в свои проекты. Если вам удобнее работать в Maven, тогда можете добавить следующую зависимость:
<!-- https://mvnrepository.com/artifact/org.scream3r/jssc --> <dependency> <groupId>org.scream3r</groupId> <artifactId>jssc</artifactId> <version>2.8.0</version> </dependency>
Примеры программ с jSSC
Получение имён последовательных портов
Получить список последовательных портов очень просто с помощью метода getPortNames()
. Метод возвращает массив отсортированы строк.
import jssc.SerialPortList; public class SerialPortListExample { public static void main(String[] args) { String[] portNames = SerialPortList.getPortNames(); for (String portName : portNames) { System.out.println(portName); } } }
Проверяем код:
- создаём java файл и вставляем код:
nano SerialPortListExample.java
- компилируем файл:
javac -classpath .:classes:jssc.jar SerialPortListExample.java
- запускаем программу:
java -classpath .:classes:jssc.jar SerialPortListExample
Результат
Запись строки
Записывать данные в последовательный порт можно при помощи следующих методов:
writeByte
— Запись одного байта в порт;public boolean writeByte(byte singleByte)
writeBytes
— Запись массива байтов в порт;public boolean writeBytes(byte[] buffer)
writeInt
— Запись INT значение (в диапазоне от 0 до 255 (0x00 — 0xFF)) в порт;public boolean writeInt(int singleInt)
writeIntArray
— Запись массива int (в диапазоне от 0 до 255 (0x00 — 0xFF)) в порт;public boolean writeIntArray(int[] buffer)
writeString
— Запись строки в порт;public boolean writeString(String string) public boolean writeString(String string, String charsetName)
Ниже приведённый пример кода будет запускаться на Windows 10 x64 и будет передавать привет Orange Pi PC, который и будет принимать приветы.
import java.io.UnsupportedEncodingException; import jssc.SerialPort; import jssc.SerialPortException; public class SerialTxExample { public static void main(String[] args) { /* * Передаём в конструктор имя порта */ SerialPort serialPort = new SerialPort("COM13"); try { /* * Открываем порт */ serialPort.openPort(); /* * Выставляем параметры */ serialPort.setParams(SerialPort.BAUDRATE_9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); /* * Передаём привет */ serialPort.writeString("Привет", "UTF-8"); } catch (SerialPortException ex) { ex.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
Чтение данных с использованием интерфейса SerialPortEventListener
Чтение данных из последовательного порта можно при помощи следующих методов:
public byte[] readBytes() public byte[] readBytes(int byteCount) public byte[] readBytes(int byteCount, int timeout) public String readHexString() public String readHexString(int byteCount) public String readHexString(int byteCount, int timeout) public String readHexString(int byteCount, String separator) public String readHexString(int byteCount, String separator, int timeout) public String readHexString(String separator) public String[] readHexStringArray() public String[] readHexStringArray(int byteCount) public String[] readHexStringArray(int byteCount, int timeout) public int[] readIntArray() public int[] readIntArray(int byteCount) public int[] readIntArray(int byteCount, int timeout) public String readString() public String readString(int byteCount) public String readString(int byteCount, int timeout)
Ниже приведённый пример кода будет запускаться на Orange Pi PC и принимать приветы, отправленные через последовательный порт. Все сообщения будут выводиться в терминал.
import jssc.SerialPort; import jssc.SerialPortEvent; import jssc.SerialPortEventListener; import jssc.SerialPortException; public class SerialPorRxTxSerialPortEventListenerExample { public static void main(String[] args) { /* * Передаём в конструктор имя порта */ SerialPort serialPort = new SerialPort("/dev/ttyS1"); try { /* * Открываем порт */ serialPort.openPort(); /* * Выставляем параметры */ serialPort.setParams(SerialPort.BAUDRATE_9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); /* * Готовим маску, на основании неё мы будем получать сообщения о событиях, * которые произошли. Ну например, нам необходимо знать что пришли * какие-то данные, т.о. в маске должна присутствовать следующая величина: * MASK_RXCHAR. Если нам, например, ещё нужно знать об изменении состояния * линий CTS и DSR, то маска уже будет выглядеть так: * SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR */ int mask = SerialPort.MASK_RXCHAR; /* * Выставляем подготовленную маску */ serialPort.setEventsMask(mask); /* * Добавляем собственно интерфейс через который мы и будем узнавать о * нужных нам событиях */ serialPort.addEventListener(new SerialPortReader(serialPort)); } catch (SerialPortException ex) { ex.printStackTrace(); } } static class SerialPortReader implements SerialPortEventListener { private SerialPort serialPort; public SerialPortReader(SerialPort serialPort) { this.serialPort = serialPort; } public void serialEvent(SerialPortEvent event) { /* * Объект типа SerialPortEvent несёт в себе информацию о том какое событие * произошло и значение. Так например если пришли данные то метод * event.getEventValue() вернёт нам количество байт во входном буфере. */ if (event.isRXCHAR()) { if (event.getEventValue() > 0) { try { String buffer = serialPort.readString(); System.out.println(buffer); } catch (SerialPortException ex) { ex.printStackTrace(); } } } else if (event.isCTS()) { /* * Если изменилось состояние линии CTS, то метод event.getEventValue() * вернёт 1 если линия включения и 0 если выключена. */ if (event.getEventValue() == 1) { System.out.println("CTS - ON"); } else { System.out.println("CTS - OFF"); } } else if (event.isDSR()) { if (event.getEventValue() == 1) { System.out.println("DSR - ON"); } else { System.out.println("DSR - OFF"); } } } } }
Проверяем код:
- создаём java файл и вставляем код:
nano SerialExample.java
- компилируем файл:
javac -classpath .:classes:jssc.jar SerialExample.java
- запускаем программу:
java -classpath .:classes:jssc.jar SerialExample
Результат
Материалы
java-simple-serial-connector
Releases · scream3r/java-simple-serial-connector · GitHub
Работаем с COM-портом из Java при помощи jSSC / Хабр
Maven Repository: org.scream3r » jssc
Выбор номер один — натяжные потолки в Петербурге|Скидки на натяжные потолки в СПб|Лучшие специалисты по натяжным потолкам в Петербурге|Разнообразие натяжных потолков в Петербурге|Как выбрать идеальный натяжной потолок в СПб|Натяжные потолки в Петербурге для вашего уюта|Интерьерные решения с натяжными потолками в Петербурге|Идеальные потолки в Петербурге только у нас|Долговечные и стойкие натяжные потолки в Санкт-Петербурге|Инновационные технологии для натяжных потолков в СПб|Эффективное монтаж натяжных потолков в Петербурге|Совершенство с натяжными потолками в Санкт-Петербурге|Модные тренды в мире натяжных потолков: СПб|Экономьте на натяжных потолках в Санкт-Петербурге|Натяжные потолки в СПб: выбор современных людей|Экспертный подход к натяжным потолкам в Петербурге|Стильные потолки в Петербурге: натяжные|Точное соответствие вашим потребностям: натяжные потолки в Петербурге|Персональные решения для вас: натяжные потолки в Петербурге|Бонусы использования натяжных потолков в Санкт-Петербурге|Инновационные материалы для натяжных потолков в Петербурге|Высококлассное обслуживание по установке натяжных потолков в Санкт-Петербурге|Современные тренды в создании потолков: натяжные потолки в Санкт-Петербурге|Компр
натяжные потолки питер [url=https://potolki-spb-1.ru/]https://potolki-spb-1.ru/[/url] .
Лучшее остекление балконов в СПб, поможем выбрать подходящий вариант.
Элитное остекление для балконов в Санкт-Петербурге, с установкой и долговечной эксплуатацией.
Индивидуальное остекление балконов в СПб, под заказ и с уникальным дизайном.
Быстрое остекление для балконов в Санкт-Петербурге, без скрытых платежей и срочно.
Экономичное остекление для балконов в Санкт-Петербурге, по лучшей цене и быстрой установкой.
остекление лоджии цена под ключ https://balkon-spb-1.ru/ .
Лучшие натяжные потолки в СПб|Выгодное предложение на натяжные потолки в Петербурге|Профессиональная установка натяжных потолков в СПб|Огромный ассортимент натяжных потолков в Санкт-Петербурге|Как выбрать идеальный натяжной потолок в СПб|Натяжные потолки в Петербурге для вашего уюта|Интерьерные решения с натяжными потолками в Петербурге|Натяжные потолки в СПб: лучший выбор для вашего дома|Только проверенные потолки в Петербурге у нас|Последние тренды для натяжных потолков в Петербурге|Быстрое и качественное установление натяжных потолков в Санкт-Петербурге|Оптимальное решение — натяжные потолки в Петербурге|Столица натяжных потолков: Петербург|Специальные предложения на натяжные потолки в Петербурге|Хит сезона — натяжные потолки в Санкт-Петербурге|Уникальные решения в области натяжных потолков в Санкт-Петербурге|Комфорт и эстетика с натяжными потолками в Санкт-Петербурге|Точное соответствие вашим потребностям: натяжные потолки в Петербурге|Индивидуальный подход к каждому клиенту: натяжные потолки в СПб|Плюсы натяжных потолков в Петербурге|Технологические новинки для натяжных потолков в Санкт-Петербурге|Премиальный сервис по установке натяжных потолков в СПб|Новинки в оформлении потолков: натяжные потолки в Петербурге|Идеальное сочетание цены и качества: натяжные потолки в СПб
натяжные потолки под ключ спб цены https://potolki-spb-1.ru/ .
https://canadianpharmacy.win/# legal to buy prescription drugs from canada
http://mexicanpharmacy.store/# mexican rx online
http://indianpharmacy.win/# top 10 pharmacies in india
top 10 online pharmacy in india: buy prescription drugs from india — buy medicines online in india
http://mexicanpharmacy.store/# п»їbest mexican online pharmacies
http://indianpharmacy.win/# top online pharmacy india
диплом о среднем полном образовании купить
http://canadianpharmacy.win/# canadian pharmacy online
reputable canadian online pharmacy canadian pharmacy win my canadian pharmacy
https://mexicanpharmacy.store/# best online pharmacies in mexico
indian pharmacy paypal online pharmacy india indian pharmacies safe
http://mexicanpharmacy.store/# mexico drug stores pharmacies
https://indianpharmacy.win/# india pharmacy
ed medication online best ed pills online how to get ed pills
Возможности выигрыша в онлайн казино, где возможности бесконечны.
Играйте и выигрывайте вместе с нами, и получите незабываемые впечатления.
Обнаружьте свое новое казино онлайн, и начните зарабатывать уже сегодня.
Ощутите волнение в режиме реального времени, не покидая своего уютного кресла.
Играйте в увлекательные игры с высокими коэффициентами выигрыша, и покажите всем, кто здесь главный.
Насладитесь игровым процессом вместе с игроками со всех уголков планеты, и докажите свое превосходство.
Начните играть и получите ценные подарки, которые принесут вам еще больше радости и азарта.
Играйте и наслаждайтесь азартом в каждой ставке, и погрузитесь в мир бесконечных перспектив.
Играйте в игры, недоступные где-либо еще, сделав всего несколько кликов мыши.
онлайн казино Казино .
https://maxpillsformen.com/# Buy Tadalafil 5mg
https://fastpillsformen.com/# sildenafil online
Cheap Sildenafil 100mg FastPillsForMen Cheapest Sildenafil online
Sildenafil 100mg price: Fast Pills For Men — Buy Viagra online cheap
Возможности выигрыша в онлайн казино, где каждый может стать победителем.
Получайте азарт и адреналин вместе с нами, и ощутите атмосферу азарта и волнения.
Сделайте свой выбор в пользу казино онлайн, и начните играть уже сегодня.
Почувствуйте атмосферу настоящего казино в режиме онлайн, не тратя время на поездки.
Ставьте на победу с нашими играми, и почувствуйте себя настоящим чемпионом.
Играйте вместе с друзьями и соперниками со всего мира, и покажите свои лучшие результаты.
Играйте и выигрывайте, получая щедрые бонусы, которые увеличат ваши шансы на победу.
Играйте и наслаждайтесь азартом в каждой ставке, и готовьтесь к бесконечным выигрышам.
Станьте частью казино онлайн и получите доступ к эксклюзивным играм, буквально за несколько секунд.
онлайн казино беларусь онлайн казино .
http://maxpillsformen.com/# Cialis over the counter
online ed drugs: cheap cialis — online ed medicine
Cheap Cialis: Generic Cialis without a doctor prescription — Generic Cialis price
Возможности выигрыша в онлайн казино, где каждый может стать победителем.
Попробуйте свои силы вместе с нами, и получите незабываемые впечатления.
Обнаружьте свое новое казино онлайн, и начните выигрывать уже сегодня.
Ощутите волнение в режиме реального времени, не покидая своего уютного кресла.
Играйте в увлекательные игры с высокими коэффициентами выигрыша, и почувствуйте себя настоящим чемпионом.
Коммуницируйте и соревнуйтесь с игроками со всего мира, и докажите свое превосходство.
Получите бонусы и призы за активную игру, которые сделают вашу игру еще более увлекательной.
Играйте и наслаждайтесь азартом в каждой ставке, и погрузитесь в мир бесконечных перспектив.
Станьте частью казино онлайн и получите доступ к эксклюзивным играм, буквально за несколько секунд.
онлайн казино казино онлайн беларусь .
http://maxpillsformen.com/# Buy Tadalafil 10mg
erectile dysfunction drugs online fast pills easy order ed pills online
[url=https://streamhub.shop/nakrutka-zriteley-twitch/]Накрутка зрителей Twitch[/url]
[url=https://streamhub.world/]Boost Twitch Kick Viewers[/url]
наркологическая скорая наркологическая скорая .
buy Viagra online: cheap viagra — Cheap Sildenafil 100mg
Возможности выигрыша в онлайн казино, где каждый может стать победителем.
Попробуйте свои силы вместе с нами, и ощутите атмосферу азарта и волнения.
Выберите свое любимое казино онлайн, и начните зарабатывать уже сегодня.
Играйте и побеждайте в режиме живого казино, не тратя время на поездки.
Ставьте на победу с нашими играми, и почувствуйте себя настоящим чемпионом.
Насладитесь игровым процессом вместе с игроками со всех уголков планеты, и станьте лучшим из лучших.
Начните играть и получите ценные подарки, которые увеличат ваши шансы на победу.
Ощутите азарт в каждой игре казино онлайн, и погрузитесь в мир бесконечных перспектив.
Станьте частью казино онлайн и получите доступ к эксклюзивным играм, сделав всего несколько кликов мыши.
онлайн казино Казино .
low cost ed pills: buy ed meds — best online ed pills
ed online pharmacy cheap cialis what is the cheapest ed medication
скорая наркологическая помощь [url=http://dimitrov.forum24.ru/?1-3-0-00000184-000-0-0-1730874721]скорая наркологическая помощь[/url] .
https://fastpillsformen.com/# viagra canada
buy Viagra online: Fast Pills For Men — Generic Viagra for sale
скорая наркологическая помощь на дому в москве скорая наркологическая помощь на дому в москве .
скорая наркологическая помощь в москве скорая наркологическая помощь в москве .
Cheap generic Viagra online: Fast Pills For Men — viagra canada
Buy Cialis online: MaxPillsForMen.com — Generic Tadalafil 20mg price
Generic Tadalafil 20mg price MaxPillsForMen.com Generic Tadalafil 20mg price
п»їcialis generic: Cialis 20mg price in USA — Generic Cialis without a doctor prescription
https://fastpillseasy.com/# cheapest online ed treatment
наркологическая скорая помощь москва наркологическая скорая помощь москва .
наркологическая скорая [url=https://www.klin.0pk.me/viewtopic.php?id=4428]https://www.klin.0pk.me/viewtopic.php?id=4428[/url] .
http://fastpillsformen.com/# Sildenafil 100mg price
Viagra without a doctor prescription Canada cheap viagra sildenafil over the counter
http://maxpillsformen.com/# Generic Cialis price
наркологическая скорая бесплатная наркологическая скорая бесплатная .
неотложная наркологическая помощь в москве неотложная наркологическая помощь в москве .
Viagra online price [url=https://fastpillsformen.com/#]FastPillsForMen[/url] Cheap Sildenafil 100mg
cheap viagra: Cheap generic Viagra — buy Viagra online
https://fastpillsformen.com/# best price for viagra 100mg
Viagra tablet online FastPillsForMen buy viagra here
order viagra: FastPillsForMen — cheap viagra
http://maxpillsformen.com/# Tadalafil price
Cialis 20mg price MaxPillsForMen.com Cialis 20mg price
low cost ed meds online: buy ed medication — ed pills cheap
рейтинг процессоров для игр http://www.topcpu.ru .
cheap ed pills: FastPillsEasy — ed medication online
Buy Tadalafil 10mg buy cialis online Cialis 20mg price
Buy Tadalafil 5mg: MaxPillsForMen.com — Tadalafil Tablet
Buy Tadalafil 20mg Cialis without a doctor prescription Generic Cialis without a doctor prescription
sweet bonanza oyna: sweet bonanza demo oyna — sweet bonanza slot
sweet bonanza giris sweet bonanza kazanma saatleri sweet bonanza demo oyna
вывод из запоя круглосуточно ростов https://vyvod-iz-zapoya-rostov27.ru/ .
Casino Siteleri: Deneme Bonusu Veren Siteler — Casino Siteleri
https://denemebonusuverensiteler25.com/# deneme bonusu veren yeni siteler
az parayla cok kazandiran slot oyunlar? guvenilir slot siteleri guvenilir slot siteleri
deneme bonusu veren casino siteleri: canl? casino siteleri — Canl? Casino Siteleri
deneme bonusu veren siteler: denemebonusuverensiteler25 — deneme bonusu veren siteler yeni
https://denemebonusuverensiteler25.com/# denemebonusuverensiteler25
slot oyunlar? az parayla cok kazandiran slot oyunlar? az parayla cok kazandiran slot oyunlar?
stamp maker stamp maker .
deneme bonusu veren siteler yeni: deneme bonusu veren siteler — deneme bonusu veren siteler
en guvenilir casino siteleri Deneme Bonusu Veren Siteler guvenilir casino siteleri
en kazancl? slot oyunlar?: slot oyunlar? — en kazancl? slot oyunlar?
http://casinositeleri25.com/# Deneme Bonusu Veren Siteler
sweet bonanza oyna sweet bonanza giris sweet bonanza oyna
yat?r?ms?z deneme bonusu veren siteler: yeni deneme bonusu veren siteler — deneme bonusu veren siteler yeni
sweet bonanza kazanma saatleri: sweet bonanza — sweet bonanza yorumlar
slot siteleri slot casino siteleri slot casino siteleri
yeni deneme bonusu veren siteler: deneme bonusu veren yeni siteler — deneme bonusu veren siteler yeni
Casino Siteleri: Casino Siteleri — Deneme Bonusu Veren Siteler
sweet bonanza kazanma saatleri sweet bonanza sweet bonanza slot
deneme bonusu veren siteler yeni: deneme bonusu veren siteler — denemebonusuverensiteler25