Подтвердить что ты не робот

Преобразование данных последовательного порта в TCP/IP в среде linux

Мне нужно получить данные из последовательного порта системы Linux и преобразовать его в TCP/IP для отправки на сервер. Это трудно сделать? У меня есть некоторый базовый опыт программирования, но я не очень много разбираюсь в Linux. Есть ли какие-либо приложения с открытым исходным кодом, которые это делают?

4b9b3361

Ответ 1

Вам не нужно писать программу для этого в Linux. Просто pipe последовательный порт через netcat.

netcat www.example.com port </dev/ttyS0 >/dev/ttyS0

Просто замените информацию о адресе и порту. Кроме того, вы можете использовать другой последовательный порт (т.е. Изменить часть /dev/ttyS0). Вы можете использовать команды stty или setserial для изменения параметров последовательного порта (скорость передачи, четность, стоповые биты и т.д.).

Ответ 2

Нашел этот вопрос с помощью поиска google очень похожего (используя последовательный порт на сервере от клиента linux через TCP/IP), поэтому, хотя это не ответ на точный исходный вопрос, некоторые из код может быть полезен для оригинального плаката, я думаю:

  • Создание ящика Linux с последовательным портом для подключения к порту TCP для обмена модем: ser2net
  • Использование этого "общего" модема с другой рабочей станции Linux: remtty

Ответ 3

Вы можете создать соединение Serial-Over-Lan (SOL) с помощью socat. Его можно использовать для "переадресации" ttyS на другой компьютер, чтобы он отображался как локальный, или вы можете получить к нему доступ через порт TCP/IP.

Ответ 4

все инструменты, которые вам понадобятся, уже доступны для вас на большинстве современных дистрибутивов Linux.

Как уже указывалось несколько, вы можете передавать данные Serial через netcat. Однако вам потребуется перезапустить новый экземпляр каждый раз, когда есть соединение. Чтобы это существо сохранялось между соединениями, вы можете создать службу xinetd, используя следующую конфигурацию:

service testservice
{
port            = 5900
socket_type     = stream
protocol        = tcp
wait            = yes
user            = root
server          = /usr/bin/netcat       
server_args     = "-l 5900 < /dev/ttyS0"
}

Обязательно измените /dev/ttyS 0 в соответствии с последовательным устройством, с которым вы пытаетесь взаимодействовать.

Ответ 5

У меня была та же проблема. Я не уверен в отношении приложений с открытым исходным кодом, но я проверил командную строку Serial over Ethernet для Linux и... он работает для я.

Также спасибо судье Майгардену за инструкции

Ответ 6

Откройте порт на своем сервере с помощью netcat и начните прослушивание

nc -lvp номер порта

И в машине вы читаете последовательный порт, отправляете его с netcat как root

nc ipaddress portnumber </DEV/ttyACM0

Если вы хотите сохранить данные на сервере, вы можете перенаправить данные в текстовый файл. Сначала создайте файл, в котором вы сохраняете данные.

коснитесь data.txt

И затем начните сохранять данные

nc -lvp номер портa > data.txt

Ответ 7

Я думаю, что ваш вопрос не совсем ясен. Здесь есть несколько ответов о том, как поймать данные, поступающие в последовательный порт linux, но, возможно, ваша проблема - это наоборот? Если вам нужно поймать данные, выходящие из последовательного порта linux, и отправить их на сервер, есть несколько небольших аппаратных штучек, которые могут это сделать, начиная с простого сервера последовательной печати, такого как [lantronix gizmo] [1]

Нет, я никак не связан с Lantronix.

[1]: http://www.lantronix.com/device-networking/external-device-servers/mss100.html"

Ответ 8

Я боролся с проблемой в течение нескольких дней. Проблема для меня возникла с помощью Virtual Box/Ubuntu. У меня много последовательных портов USB на моей машине. Когда я попытался назначить одну из них виртуальной машине, она сбила их всех - т.е. хост и другие виртуальные машины больше не могли использовать свои последовательные USB-устройства.

Мое решение - создать автономный последовательный сервер на нетбуке, который у меня есть в шкафу.

Я попробовал ser2net, и он работал, чтобы поместить последовательный порт в провод, но remtty не работал. Мне нужно получить порт как tty на Vm.

socat отлично работал. Здесь есть хорошие инструкции: http://www.dest-unreach.org/socat/doc/socat-ttyovertcp.txt

Ответ 9

Вы можете найти этот полезный для TCP/IP-части, а последовательные порты вы можете получить большую помощь здесь. Имейте в виду, что все в Linux - это "файл", поэтому вы, возможно, можете "cat" serialport.

Ответ 10

Вы можете найти Perl или Python полезный для получения данных из последовательного порта. Чтобы отправить данные на сервер, решение может быть легко, если сервер (скажем) - приложение HTTP или даже популярная база данных. Решение будет не так просто, если это какое-то пользовательское/проприетарное приложение TCP.