roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 ноя 2024, 17:59

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 07:02 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
Я не профессиональный программист, скорее техник, провода и блоки для меня понятнее программного кода (хотя и программирую сам на разных языках, больше на любительском уровне). :oops:

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

http://www.aggsoft.ru/virtual-null-modem/

Для начинающих в роботехнике, такой вариант может оказаться интересным. Мы имеем множество виртуальных портов, которые могут быть соединены в общей программе, в разных вариантах. Не обязательно связывать программы между собой в обоих направлениях. Возможны различные структуры соединений, например выход 1-й программы, может соединяться с входом 2-й и 3-й, а их выходы через буфер, подключаться к входу 1-й. Таким образом, 1-я программа может опрашивать две другие и получать от них данные. Суть идеи в том, что мы получаем единый интерфейс, для программных кубиков от разных программистов, которые можно соединять между собой в разных вариантах. Тогда для того, что бы написать программу робота, можно взять систему распознавания речи от одного специалиста, распознавание лица от другого, удалённый терминал от третьего, интерфейс работы с железом от производителя или разработчика этого железа и написать собственную логику, для обработки данных и управления периферией самому. Нечто подобное реализуется сейчас на уровне специализированных роботехнических операционных систем, но мне кажется, это направление сложновато для начинающих и порой требует перехода, на новую (непривычную) операционку.

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

Программа может быть терминальной и не занимать экран, а её настройки возможны через INI-файл (вручную или с помощью "Мастера").

Этот протокол, может быть таким:
первые несколько символов, описывают тип передаваемых данных

- com или с обозначает, что передаётся управляющая команда или запрос данных
- dat или d обозначает, что передаются данные. После заголовка, возможно, требуется идентификатор типа данных
- другие варианты…

возможно, необходимо добавить какой-то идентификатор передающей программы (это может быть номер виртуального порта, к которому подключена программа или её персональный код) и адрес получателя (что в принципе не обязательно, если структура связи между программами чётко описана в связях виртуальных портов между собой)
за ними следуют данные, которые и несут нужную информацию... в конце строки сообщения, передаются стандартные символы конца строки и перевода каретки...
Конечно это лишь набросок, для более точного формирования протокола, нужно многое обсудить.

Интересно также, какая максимальная скорость передачи данных, допустима при использовании последовательных виртуальных портов. И варианты их реализации в Linux... Для меня довольно важным критерием, является кроссплатформенность такого решения.
Основная программа в таком варианте системы, получает последовательность строк (которые возможно потребуется сортировать по приоритетности). Выделяет из них нужную информацию и в соответствии с ней, отправляет данные и команды другим связанным программам... возможно, кто-то сумеет написать простой интерпретатор скриптов для этого или целую систему графического программирования, по типу VL в MSRS. Но в принципе, это можно делать в любом языке, где поддерживается работа со строковыми переменными...
---------------------------------------------------------
Такими программами-кубиками может быть очень многое:

работа с реальным железом робо-платформы или эмулятор реальной платформы и виртуальная среда обитания....
пульт дистанционного управления или телефон с ВТ...
удалённый компьютер, через ethernet...
различные USB устройства... клавиатура, мышь, устройство ввода или (и) вывода цифровых и аналоговых сигналов...
программа распознавания речи или её синтеза...
программы для работы с видеокамерами (распознавание объектов и траекторий движения и т.п.)
программы для запроса данных через Интернет...
отправки и приёма электронной почты...SMS...
специальные экспертные системы наконец, или базы данных :)
или простенькая программа выражения эмоций, с помощью рожиц на экране :crazy:

думаю, что и вы можете добавить что-то своё к этому списку
Разработчики OpenRobotics или других электронных модулей, могут создать программы эмуляции их устройств, тогда любой сможет опробовать их работу в собственной программе, что бы, наконец, точно решить, что ему надо. Ещё один плюс, это относительно небольшой код каждого программного кубика в отличие от программы, в которой одновременно присутствует множество аналогичных "кубиков". Так же, это возможность упростить коллективную работу над проектом, возможность каждому решать ту задачу, которая наиболее интересна и понятна лично ему.

Идея имеет смысл только в том случае, если её поддержит много человек. Но для начала, надо прийти к единому соглашению по структуре передаваемых данных. Фактически всё остальное уже существует. Это программы для создания виртуальных портов, ссылку на которую я поместил в начале. Но возможно кто-то напишет такую программу самостоятельно и выложит её с открытым кодом. Подобная программа не должна быть очень сложной, но писать на уровне драйверов системы, для меня пока сложновато. Возможно, кто-то заинтересуется моей идеей и подскажет, какие минусы есть в моём взгляде на подобные системы. Прошу пинать сильнее, потерплю... просто очень хочу знать мнение людей, больше меня разбирающихся в вопросе.


Вложения:
mag.PNG
mag.PNG [ 12.52 КиБ | Просмотров: 1600 ]

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 08:38 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
Цитата:
Возможны различные структуры соединений, например выход 1-й программы, может соединяться с входом 2-й и 3-й, а их выходы через буфер, подключаться к входу 1-й.

:) вы не сможете соединить так входы и выходы. у вас нет ни rx ни tx, они есть только в физическом устройстве. при желании конечно можно и программно такое реализовать, только смысла особо нет. так же, как и в обычном (физическом уарте) соединении. по крайней мере без веского основания такое вытворять. а в данном случае я их не вижу.
:oops: а способов передачи данных между приложениями минимум десятки. имхо, что-то "эдакое" мудрить не стоит, тем более кроссплатформенное.


Последний раз редактировалось Angel71 31 янв 2010, 08:49, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 08:48 
Не в сети
Аватара пользователя

Зарегистрирован: 21 июн 2006, 11:22
Сообщения: 1387
Откуда: г. Омск
Skype: victorkazarinov
прог. языки: почти все понемногу
ФИО: Казаринов Виктор Геннадьевич
А почему нуль-модемная связь? Давайте уж нуль-перфокарточную. Я в молодости на Фортран и Алгол много перфокарт извел. Правда меня сильно заканывали зажеванные в считывателе перфокарты. Приходилось много их по-новой набивать. А если серьезно, если касаться связи, то нужен хотя бы один слой абстракции от типа реальной связи.

_________________
Проект Robosonic RS http://www.aigod.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 08:53 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Мде... vadinator, научно технический прогресс обошел вас стороной :)

Связь между кучей программ на 1 компе уже давно организуют через TCP/IP это позволяет в дальнейшем разносить программы по разным компам ничего не переписывая. Например, так работает связка Apache+PHP+MySQL, запущенная на 1 компе.

Добавлено спустя 1 минуту 26 секунд:
И вообще почитайте DSS от майкрософта (на базе которых MSRS сделано), у них именно это реализовано на TCP/IP, там как раз ваши смесители\разветвители реализуются через механизмы подписки на сервисы и т.п.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 08:55 
Не в сети
Аватара пользователя

Зарегистрирован: 21 июн 2006, 11:22
Сообщения: 1387
Откуда: г. Омск
Skype: victorkazarinov
прог. языки: почти все понемногу
ФИО: Казаринов Виктор Геннадьевич
Золотые слова, Dead. TCP - гуд. Этот протокол желательнее всего использовать. Но вот что, зачем, откуда и куда посылать с его помощью?

_________________
Проект Robosonic RS http://www.aigod.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 08:58 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ну не знаю как кто, а мелкософт уже давно придумал что через TCP/IP передавать и передаёт :)
Вот сейчас ROS тут осваивают - думаю там тоже уже придумали что передавать.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 09:30 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
:) через сетевые протоколы много чего полезного можно напридумывать. и что передавать и зачем именно их применять и почему так будет лучше для конкретного случая. как впрчем и для всех остальных способов/механизмов/протоколов/...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 09:56 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
Господа, я предупреждал что новичёк :crazy: но всё же постараюсь не мучить вас дурацкими вопросами :oops:
Цитата:
а способов передачи данных между приложениями минимум десятки

есть ли среди них, настолько же простой, как нуль модем? что бы его мог использовать начинающий...
Цитата:
А если серьезно, если касаться связи, то нужен хотя бы один слой абстракции от типа реальной связи.

количество абстракций, может начать увеличиваться... что страшного в том, что бы реально соединить программы самым простым способом...при достаточной скорости канала, стоит ли множить сущности 8)
Цитата:
Связь между кучей программ на 1 компе уже давно организуют через TCP/IP

=DeaD=, это делается настолько же просто, как и с помощью сом-порта? умоляю, где посмотреть примеры?
насколько я себе представляю, на компьютере тогда должен быть установлен сервер? насколько такой способ понятен и прост в использовании таким тормозом, как я :crazy:
Цитата:
Но вот что, зачем, откуда и куда посылать с его помощью?

Виктор Казаринов, как что...результаты работы программ и команды и исходные данные к ним...
вы же говорили как то, что желающих ковыряться в абстракциях, до выхода платформы не находится...ну вот я и пытаюсь такую понятную платформу придумать...
ну как простой пример: существует программа распознавания голосовых команд, которая подключается по нуль-модему к программе которую я разрабатываю... и при распознавании команды, она отправляет моей программе последовательность буков или просто номер команды и мне не надо заморачиваться написанием распознавалки, я получаю однозначный код...который уже и обрабатываю например с помощью оператора case...и после выбора, отправляю по нуль-модему, номер телефона и текст sms.. который преспокойно отправляется на другой телефон... и для всего этого, несколько строк кода...
В общем, как то так....
а про TCP/IP , интересно узнать о простых методах связи между программами...если пнёте в нужном направлении... то прошу :pardon:

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 10:07 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
2vadinator: Иной раз "простота хуже воровства" :) вот тут именно этот случай. TCP/IP гораздо удобней COM-порта в серьезных приложениях. А если вам побаловаться - так не надо устраивать передачу данных между разными программами - это само по себе нетривиально.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 10:20 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
Цитата:
Иной раз "простота хуже воровства"

никогда не понимал эту фразу :) из неё следует, что если для решения задачи существует много методов, то надо выбирать самый сложный? да передавать данные между программами можно разными способами, да надо думать о синхронизации...но если мы получаем предсказуемый результат...то это уже не плохо...я говорю о задачах, которые не требуют больших скоростей передачи и различной структуры данных... надо обмениваться короткими фразами и исходя из этого и выбирается инструмент :ROFL:

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 11:15 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Из этой фразы следует обычно что-то типа такого (в который раз уже тут на форуме привожу эту цитату с башорга):
Цитата:
XXX: Зачем ставить целый движок для какого то файлообменника? Ведь такой файлообменник который ему нужен пишется буквально за пару часов....

SoftCore: Знаем мы вас. Два часа пишем, потом неделя отладки, потом три месяца обкатки, сотни жалоб пользователей. Через пол-года надо что-нибудь добавить, так программиста нет, а код непонятный, а деньги плати, а о чем вы вообще думали, есть же куча готовых решений?!


Задачи которые не требуют большой сложности и т.п. сами по себе не требуют разбиения на кучу программ.
Воля ваша - можете попробовать сначала походить по граблям :) как надоест, просто вспомните про TCP/IP ;)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 11:41 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
=DeaD= замечательно, я не зацикливаюсь на нуль-модеме, это лишь один из вариантов для обмена информацией между программами. Основная часть, это возможность множеству программ обмениваться данными между собой... К сожалению не могу найти ничего, достаточно стандартизированного и простого, создаётся ощущение, что это как то и не требуется людям, а точнее программистам. Существуют ли простые компоненты для такого взаимодействия, например для современных визуальных IDE? весь смысл этой темы как раз в том, что бы найти такие методы :oops: по TCP/IP постараюсь поковырять информацию... если кто то может указать направление, буду признателен :roll:

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 12:00 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Да конечно существуют, все они основаны на TCP/IP, обычно еще сверху это делают основанным на HTTP протоколе, именно по этой концепции делаются всякие XML-сервисы, SOAP и т.п. Ну и вообще HTTP протокол приятный сам по себе.
Можно хоть браузером общаться с таким сервисом :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 12:02 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
vadinator писал(а):
К сожалению не могу найти ничего, достаточно стандартизированного и простого

TCP/IP недостаточно стандартизирован? Или слишком сложен? :o

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программный конструктор
СообщениеДобавлено: 31 янв 2010, 12:29 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
То есть, все мои блуждания около нуль-модема в корзину и забыть нафик? т.к. то что я описывал решается простыми и доступными современными средствами...благодарю за подсказки... :oops:
Ну а как быть со второй частью, т.е. с единым протоколом обмена между программами... т.е. использования результатов вычисления других программ в собственной, а так же передачу данных и команд в другие запущенные программы... существуют подобные стандарты, для простого использования... или приходится пользоваться готовыми продуктами от микрософт MSRS ( к которой признаюсь, не питаю симпатий), или использовать что то типа ROS...
Конечно переписывание одного и того же кода тысячами программистов, помогает им получать дополнительные знания.
Но меня интересуют всё же десятки тысяч техников, которые представляют, что хотели бы сделать, но нет времени на освоения всех тонкостей...станки ломаются и их надо чинить, да ещё и новые модули и блоки для производства выпускаются и хорошо бы быть в курсе. И при этом попробовать сделать что то своё, с элементами машинного зрения и распознавания речи... в принципе...по простому, хотелось бы иметь простой доступ к подобным функциям, ну и возможно, поделится какими то собственными наработками с другими :friends:

Добавлено спустя 2 минуты 1 секунду:
Цитата:
TCP/IP недостаточно стандартизирован? Или слишком сложен?

значит имеет смысл копать в этом направлении? благодарю :good:

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 40


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO