Как мне упаковать пакеты данных в непрерывное соединение по телефонной линии?

Я работаю над проектом, в котором мне нужно преобразовать пакеты данных (в диапазоне 300 байтов) из службы коротких пакетов данных Iridium. Это предназначено для замены коммутируемого соединения, поэтому мне нужно взять эти пакеты данных из коротких пакетов и преобразовать их в непрерывный поток коммутируемого соединения.

Я относительно неопытный программист, и единственный язык, который я знаю, это Java.

Как я мог пойти о преобразовании данных? Есть ли справочные материалы о том, как работают типы информационных пакетов и как ими манипулировать в Java?

[Отредактировано для ясности]

EDIT2: мне не нужно преобразовывать данные наоборот (из потока в куски)

1 ответ

Ваш вопрос не ясен относительно того, пишете ли вы программное обеспечение для связи с трансивером Iridium, или вы находитесь на стороне сервера, но я предполагаю, что вы находитесь на стороне клиента, поскольку, судя по их веб-сайту, сторона сервера имеет стандартный IP сетей.

Программа общается с приемопередатчиком, используя интерфейс RS-232 и набор команд AT (модем). При использовании Java вам понадобится какая-то последовательная библиотека; Я имел большой опыт работы с таким, в частности, с программой для управления банком модемов, соединяющих их связь с IP-сетью, и в то время единственным пакетом связи, который работал и был стабильным, был SerialPort от SerialIO. Другой потенциально жизнеспособный вариант - RxTx, но когда я работал с этим несколько лет назад, он был нестабильным и приводил к падению JVM каждые несколько дней. С любым из них вы можете (и должны) ограничиться API JavaComm, который позволит вам легко переключать последовательные библиотеки.

Когда вы говорите со своим последовательным портом, манипулирование трансивером должно быть таким же, как и манипулирование модемом, вам нужно будет обратиться к документу для уточнения. Если он верен модему, он будет работать в двух режимах: команда и данные. В командном режиме вы отправляете команды AT xxx, завершенные CRLF. Когда вы находитесь в режиме данных, вы отправляете двоичные данные.

Структура двоичных данных почти наверняка будет определяться системой Iridium, и вам нужно будет соответствовать этому; снова увидеть их доко.

Если у вас есть возможность определить собственный протокол данных или если у вас есть сообщения в свободной форме поверх их протокола, мой лучший совет - логически составлять пары ключевых слов / значений для обеспечения долгосрочной гибкости. Если у вас мало места (и кажется, что ограничения на размер устройств Iridiums довольно строгие), вы можете сделать свои ключевые слова предопределенными (согласованными между клиентом и сервером) и отправить двоичное целое число вместо, скажем, UTF-8 или ASCII. строка. Протокол должен включать или выводить очень простой тип, чтобы числовые значения, особенно, могли быть как можно более сжатыми.

В любом случае, я надеюсь, что это даст вам некоторое представление и идеи о том, чего ожидать... пожалуйста, не стесняйтесь задавать вопросы через комментарии, особенно по конкретным вопросам об использовании последовательного порта из Java.

Другие вопросы по тегам