Обмен данными с Ethernet shield

Ultravibe
Offline
Зарегистрирован: 10.11.2015

Здравствуйте!

Вопрос следующий: Я отслеживаю нажатие кнопки и если та нажата - требуется отправить сообщение по локалке. Нужно, чтобы это был протокол tcp/ip, чтобы программа отправляла обычные символы (не в двоичном формате) и чтобы можно было задать IP компа на который она должна отправлять. Нужно для этого, чтобы программа с компа заранее подконнектилась к Ардуинке? (в моём случае это open socket for read, я программю на LiveCode). Подскажите как именно надо коннектиться из Ардуины?

Спасибо!

vde69
Offline
Зарегистрирован: 10.01.2016

Вы уверены, что протокол именно tcp/ip ? а например не UDP ???

Ultravibe
Offline
Зарегистрирован: 10.11.2015

Естественно. Объясню почему. При помощи Ардуины я собираюсь давать команду кнопкой на старт спортсменов. Кнопку нажимает судья, который даёт отмашку на старте. Далее ардуинка обрабывает нажатие и отправляет инфу в комп. Насколько я знаю, UDP хороший и понятный прокотол, но он не гарантирует, что ВСЕ пакеты дойдут до адресата. Практика показывает (и не только практика, но и теория), что пакеты могут затеряться (то есть сигнал о старте не дойдёт до тайминг-софта), а это категорически недопустимо на соревнованиях. Чего не скажешь о TCP/IP пакетах

vde69
Offline
Зарегистрирован: 10.01.2016

зачем для старта использовать отдельные устройства ????

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

ну а про то, что подтверждение в TCP/IP - да, оно есть, но там есть таймаут повторной передачи.... то есть протокол гарантирует, что все дошло, но не гарантирует, что дошло в одно и то-же время....

Ultravibe
Offline
Зарегистрирован: 10.11.2015

1) не совсем понял что значит "лампочки соединяем кабелем"... какие лампочки? Их как раз нет (пока). У меня программуля на компе, которая ведёт учёт времени. Таймер и фиксация времени старта и финиша индивидуально для каждого участника реализованы программно. В программе есть большая красная кнопка "старт"))))) и если оператор графики хочет сам запускать таймер - он нажимает её. Второй вариант - кнопку судье в зубы. Её нажатие просто передаётся в программу и погнали.

2) С учётом того, что локальная сеть в моём случае состоит только из шилда Ардуины и графической станции, то загрузка почти никакая и пакет не начнёт кружить по сети, выискивая свободный root to host)))))

vde69
Offline
Зарегистрирован: 10.01.2016

ну тогда возьми какой нибудь Modbus... библиотеки есть... или если у тебя только 2 устройства - то вообще RS-232 и протокол сам напиши, для 2х устройств это будет элементарно... проблеммы возникают когда их больше 2х...

tc/ip - сложно реализуемо многофункциональный протокол, со сложным стеком... самому сделать очень трудоемко.... бери что попроще.... (кстати сейчас пишу свой протокол обмена...)

Ultravibe
Offline
Зарегистрирован: 10.11.2015

1) дело в том, что в моём случае - tcp/ip не сложно реализовать. LiveCode очень удобен в этом. У меня программа для графики (собственного сочинения) свободно общается по обычному ethernet с удалённой прогой (для заполнения статистики, тоже собственная). Чувак, сидящий на поляне, стартует/стопит таймер, заполняет игрокам голы, броски, нарушения и прочую историю. Вся эта инфа приходит в основной комп, в графическую программу. Протокол очень простой - команда и параметры. Договориться как кодировать какое событие оч. просто. Особоенно с самим собой. Оператор графики просто выводит требуемые титры по команде режиссера, а не как оголтелый нажимает кучу кнопок помимо выдачи титров, чтобы зафиксировать все события))))) Так что не проблема общаться по tcp/ip, вопрос лишь как с Ардуины отправлять обычные символы, терминируя из в конце, например, переводом строки. В том числе по нажатию кнопки)))))

2) RS-232 сколько метров позволяет по проводам тянуться? К тому же, сделав такую связку по ethernet я смогу не только нажатие кнопки передавать а вообще всё, что угодно)))

dmitron1036
Offline
Зарегистрирован: 10.01.2016

Делал сервер и клиент на базе изернет-шилда. и всякие там веб приложения.

Расскажу мою точку зрения.

1) определяетесь кто сервер. Допустим сервер это ПК.

Надеюсь вы знаете, как из ПК сделать сервер. Для этого я бы поставил программу....Apache II например. открыл порт на приём. скрипт написал к которому будет ардуина обращаться. 

по нажатию кнопки ардуина запускает скрипт на сервере - он делает что надо.

2) допустим сервер - ардуина.

комп каждую секунду запрашивает состояние ардуины. если кнопка нажата - делает что надо.