Поддержка API/ОС для 9-битной последовательной связи

Поддерживает ли библиотека Java javax.comm "9-битную" последовательную связь ? (использование бита четности или «адресного бита» в качестве внеполосного механизма сигнализации для кадрирования информации)

Поддерживает ли его API связи win32?

Я предполагаю, что ответ отрицательный по обоим пунктам, но решил, что у кого-то больше опыта в этом, чем у меня.


person Jason S    schedule 11.12.2009    source источник


Ответы (3)


Насколько я могу судить, Win32 comm API не поддерживает это.

Однако вы можете имитировать его, используя различные режимы контроля четности.

Установка MARKPARITY установит 9-й бит на 1

Установка SPACEPARITY установит 9-й бит в 0

Я не могу сказать о java-версии библиотеки, но я уверен, что она поддерживает настройку режимов четности, поэтому вы можете сделать вышеописанное и получить свой 9-й бит.

person karoberts    schedule 11.12.2009
comment
Это для отправки, а для получения? - person Jason S; 12.12.2009
comment
(и мне пришлось бы делать это для каждого байта... хм... похоже, было бы проще просто использовать кодировку base64, чтобы оставить место для внеполосной информации.) - person Jason S; 12.12.2009
comment
да, это не красиво, если вам нужно изменить его для каждого байта. Он должен работать для отправки и получения, хотя - person karoberts; 12.12.2009

Вы должны следовать этому Поиск компонента последовательного порта FOSS, который может обрабатывать 9 битов данных.
Ваша основная проблема будет заключаться в обработке 9-бит вообще, например, когда Windows API не может с этим справиться, как java должна это решить?

Но существуют профессиональные карты/драйвера для решения этой проблемы (см. ссылку)

person jeb    schedule 03.03.2013

Я хотел бы прокомментировать ответ karoberts, но мне не хватает репутации. Так что я должен "ответить".

karoberts предлагает хороший способ, если нам нужно программное решение нашей проблемы (почти цитата из JCS, не так ли?))

Но может возникнуть ситуация, с которой я столкнулся сегодня, когда Python (2.7) пытался сделать то же самое: мой компьютер отказался принимать PARITY_MARK и PARITY_SPACE в качестве параметров для настройки моего /dev/ttyS5. Поэтому я искал в Stack Overflow, что можно сделать, и наткнулся на эту тему...

И я нашел ответ в этом (закрытом) вопрос, — говорит нам jeb в следующем ответе. Тинчо указывает на статью, где для каждого байта предлагается установить ЧЕТНОСТЬ или НЕЧЕТНОСТЬ в соответствии с 2 факторами: является ли это адресным байтом и какова сумма четности его битов. Я проверил решение, и оно работает отлично.

person drvlas    schedule 28.03.2015