|
Магазин Arduino | WIKI | Регистрация | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
02.11.2013, 21:08 | #1 |
Junior Member
Регистрация: 25.08.2013
Сообщений: 15
Вес репутации: 0 |
Помощь с проектом // socat, serial port to TCP socket
Я делаю проект суть которого в двухсторонней коммуникации сервера и множества клиентских устройств по TCP.
Сервер - это просто машина на линуксе где-то в интернете. Клиенты - это LED панели, они находятся в разных городах, подключенные к своему локальному интернету по wifi То что ниже - это скажем так, прув оф концепт технологии. Один сервер и один подключенный клиент. Я столкнулся со сложностями. Помогите пожалуйста их решить. Клиентское устройство состоит из: — роутера на OpenWrt — переходника usb to rs-232 — LED панели, которая дает собой управлять через rs-232 Задача клиента: при включении выходить в интернет по wifi и самостоятельно устанавливать соединение с сервером. Задача сервера: посылать на клиент текущее время раз в секунду Роутер принимает данные по TCP от сервера и отправляет их на serial порт /dev/ttyUSB0. Это делает программа socat запущенная в фоне. Т.е. роутер просто переадресовывает приходящие по TCP данные (и обратно, если бы LED панель отправляла что-то), это своеобразный тонкий клиент. На сервере время кодируется в наборы команд которые понимает LED панель и передается по TCP. Те же самые команды, при желании, можно было бы отправить в LED по rs-232 с локального компа. socat.sh - выполняется на клиенте при загрузке PHP код:
Т.е. как только мы включаем клиентское устройство, сразу после загрузки роутер устанавливает связь с сервером 192.168.0.100 и принимает от него данные. На LED панели мы видим время и номер пакета переданного с сервера начиная с момента коннекта (по сути это uptime в секундах) Больше ~3500 секунд максимум не получатся чтобы устройство работало, время замирает. Как я понимаю подводит переходник. Вот фрагмент лога socat PHP код:
socat устанавливает соединение с сервером и сервер передает данные на устройство, роутер переправляет их serial port, но отваливается по таймуту, видимо serial port отваливается, хотя если набрать команду ниже, то файл устройства есть PHP код:
После того как socat отваливается по таймауту срабатывает вот эта команда в socat.sh. Она софтварным путем перетыкает usb в роутере. PHP код:
Вопросы: 1. Может как-то можно решить вопрос без разрыва TCP соединения? Т.е. раз уж serial port залип, то перетыкнуть его, но оставаться на связи. У socat есть адское кол-во параметров и разных способов и комбинаций применения. 2. Как нужно экранировать переходник, если я все хочу собрать в одном корпусе? Какие места на плате самые опасныев плане помех для переходника? Провода питания 220? Последний раз редактировалось BeZoom; 03.11.2013 в 00:05. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|