roboforum.ru

Технический форум по робототехнике.

Программный конструктор

Обсуждаем рождающиеся мысли и результаты экспериментов.

Программный конструктор

Сообщение vadinator » 31 янв 2010, 07:02

Я не профессиональный программист, скорее техник, провода и блоки для меня понятнее программного кода (хотя и программирую сам на разных языках, больше на любительском уровне). :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
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: Программный конструктор

Сообщение Angel71 » 31 янв 2010, 08:38

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

:) вы не сможете соединить так входы и выходы. у вас нет ни rx ни tx, они есть только в физическом устройстве. при желании конечно можно и программно такое реализовать, только смысла особо нет. так же, как и в обычном (физическом уарте) соединении. по крайней мере без веского основания такое вытворять. а в данном случае я их не вижу.
:oops: а способов передачи данных между приложениями минимум десятки. имхо, что-то "эдакое" мудрить не стоит, тем более кроссплатформенное.
Последний раз редактировалось Angel71 31 янв 2010, 08:49, всего редактировалось 1 раз.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Программный конструктор

Сообщение Виктор Казаринов » 31 янв 2010, 08:48

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

Re: Программный конструктор

Сообщение =DeaD= » 31 янв 2010, 08:53

Мде... vadinator, научно технический прогресс обошел вас стороной :)

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

Добавлено спустя 1 минуту 26 секунд:
И вообще почитайте DSS от майкрософта (на базе которых MSRS сделано), у них именно это реализовано на TCP/IP, там как раз ваши смесители\разветвители реализуются через механизмы подписки на сервисы и т.п.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Программный конструктор

Сообщение Виктор Казаринов » 31 янв 2010, 08:55

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

Re: Программный конструктор

Сообщение =DeaD= » 31 янв 2010, 08:58

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

Re: Программный конструктор

Сообщение Angel71 » 31 янв 2010, 09:30

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

Re: Программный конструктор

Сообщение vadinator » 31 янв 2010, 09:56

Господа, я предупреждал что новичёк :crazy: но всё же постараюсь не мучить вас дурацкими вопросами :oops:
а способов передачи данных между приложениями минимум десятки

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

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

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

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

Re: Программный конструктор

Сообщение =DeaD= » 31 янв 2010, 10:07

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

Re: Программный конструктор

Сообщение vadinator » 31 янв 2010, 10:20

Иной раз "простота хуже воровства"

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

Re: Программный конструктор

Сообщение =DeaD= » 31 янв 2010, 11:15

Из этой фразы следует обычно что-то типа такого (в который раз уже тут на форуме привожу эту цитату с башорга):
XXX: Зачем ставить целый движок для какого то файлообменника? Ведь такой файлообменник который ему нужен пишется буквально за пару часов....

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


Задачи которые не требуют большой сложности и т.п. сами по себе не требуют разбиения на кучу программ.
Воля ваша - можете попробовать сначала походить по граблям :) как надоест, просто вспомните про TCP/IP ;)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Программный конструктор

Сообщение vadinator » 31 янв 2010, 11:41

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

Re: Программный конструктор

Сообщение =DeaD= » 31 янв 2010, 12:00

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

Re: Программный конструктор

Сообщение blindman » 31 янв 2010, 12:02

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!

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

Re: Программный конструктор

Сообщение vadinator » 31 янв 2010, 12:29

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

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

значит имеет смысл копать в этом направлении? благодарю :good:
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

След.

Вернуться в Идеи

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

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