форумы для свободного общения
Технический форум => Интернет-проекты участников форума => Mind Run Way => Тема начата: QuickWitted от Мая 15, 2008, 09:28:09
-
Может даброуважаемый алл видел в енете внятное описание упаковки данных от сервера LIRC в стандартный UDP пакет?
киньте плиз...
------------------------------------------------
Основное вынесено в верх
Если кому надо, то вот
Исходники сервера и клиента WInlirc на Delphi (http://www.mindrunway.ru/Fayliki/WinLircServerClient.zip)
как потом выяснилось к UDP он не имеет отношения, а сам UDP отпочковался в свой проект
в разделе Блок 9 для 'Lan Bridge' освоен обмен пакетами по протоколу UDP.
http://www.mindrunway.ru/GraniCubLanB.html (http://www.mindrunway.ru/GraniCubLanB.html)
-
Может это подойдёт: "http://home.arcor.de/borkenhagen/IgorplugUDP/index.html"
-
Может это подойдёт: "http://home.arcor.de/borkenhagen/IgorplugUDP/index.html"
О этой страничке я уже знал
http://home.arcor.de/borkenhagen/IgorplugUDP/IgorplugUDP.py (http://home.arcor.de/borkenhagen/IgorplugUDP/IgorplugUDP.py)
Кстати это единственный ресурс с фото IgorplugUDP...
(даже у автора фотографий не было)
Но мне интересено описание посылки Lirc с комментариями, а не ковырять
чужой скрипт. (кстати а кто нить его проверял в работе?)
-
По тем данным, что найдены в енете
пакет Lirc содержит только имя кнопки...
а пакет игоря отправляет данные...
я не спец в линуксах, но по моему это демонстрационный
пример только поясняющий принцип...
(т.е. не рабочий... где табличный перевод пульса в имя)
Кстати вопрос к знатокам сетей
UDP порт должен быть виден снаружи по сети?
Запускаю плагин Игоря или свой аналог на 3 дельфи,
но внешние сканеры наличие нового порта не фиксируют...
-
По тем данным, что найдены в енете
пакет Lirc содержит только имя кнопки...
Что это значит "имя кнопки"? Краткое описание протокола, по которому работает демон lircrcd вот:
lircrcd syntactically uses the same protocol as lircd described in the last section. It supports the following commands:
[b]IDENT ident[/b] - each program connecting to lircrcd identifies itself using this program. ident is the string that is used in the prog token inside the .lircrc file.
[b]CODE code[/b] - when the client receives the code string from lircd it will send it to lircrcd and will receive back the applicable config string from the .lircrc config file. It should resend the CODE command until nothing is returned back which means that nothing (more) should happen in response to code. This command is used each time the lirc_code2char() function is called by a client.
[b]GETMODE[/b] - lircrcd will return the current mode string.
а пакет игоря отправляет данные...
Судя по всему, это так.
я не спец в линуксах, но по моему это демонстрационный
пример только поясняющий принцип...
(т.е. не рабочий... где табличный перевод пульса в имя)
Данный скрипт преобразует пакеты, полученные с устройства IgorplugUDP, в формат, понятный демону lircd, а затем пересылает их на localhost (то есть на тот же самый компьютер, который этот самый скрипт и исполняет) на порт 8765.
Кстати вопрос к знатокам сетей
UDP порт должен быть виден снаружи по сети?
Если он защищён брадмауэром, программным и/или аппаратным, то нет.
Запускаю плагин Игоря или свой аналог на 3 дельфи,
но внешние сканеры наличие нового порта не фиксируют...
Он и не появится. Прослушку сетевого порта должен организовывать демон (сервер, если угодно) lircd. Программа IgorplugUDP - лишь сетевой клиент.
-
Что это значит "имя кнопки"? Краткое описание протокола, по которому работает демон lircrcd вот:
Тогда переспрошу: Разве в lircrcd пакете упакованным в UDP передаётся длительность пульсов посылки?
Как я понял из енета - там имя кнопки (пример Key_Play) передаётся в программы клиенты...
и при совпадении имени с заданным - происходит действие в клиентской программе...
(например при приходе Key_Play плагин винампа запускает воспроизведение )
Или я ошибаюсь? Но тогда как происходит управление программамами с клиентом Lirc?
Данный скрипт преобразует пакеты, полученные с устройства IgorplugUDP, в формат, понятный демону lircd, а затем пересылает их на localhost (то есть на тот же самый компьютер, который этот самый скрипт и исполняет) на порт 8765.
Смущает отсутствие алгоритма ХЭШирования и таблицы перевода ХЭШ1 => Key_Play.
(это если в lirc UDP передаётся именно имя кнопки...)
Он и не появится. Прослушку сетевого порта должен организовывать демон (сервер, если угодно) lircd.
Программа IgorplugUDP - лишь сетевой клиент.
Сетевой клиент открывает порт для приёма данных... А сервер в этот порт данные и отправляет...
(это точно, после дрессировки антивиря - моя прога заработала, появился порт и данные забегали...)
1) моя прога создаёт порт и принимает с него данные – на этом этапе OK!
2) Дллка Игоря - его тоже создаёт, но данные дальше дллки Игоря не идут... наружу не выходят...
3) Схема Игоря - не жизнеспособна... Ток на ногах МК выше номинального, а данные не передаются...
(правильнее сказать принимаются с битой контрольной суммой и битым идентификатором пакета,
поэтому их сетевая не опознают и следственно они не приходят в программу...)
переделка схемы решила эту проблему... данные приходят, CRC - правильный...
-
Тогда переспрошу: Разве в lircrcd пакете упакованным в UDP передаётся длительность пульсов посылки?
Как я понял из енета - там имя кнопки (пример Key_Play) передаётся в программы клиенты...
и при совпадении имени с заданным - происходит действие в клиентской программе...
(например при приходе Key_Play плагин винампа запускает воспроизведение )
Или я ошибаюсь? Но тогда как происходит управление программамами с клиентом Lirc?
Думаю, что вот здесь имеется ответ на ваш вопрос:
Whenever lircd receives a IR signal it will broadcast the following string to each client:
<code> <repeat count> <button name> <remote control name>
code is a 64-bit encoding (in hexadecimal representation) of the IR signal. It's usage in applications is deprecated and should be ignored. [b]The repeat count shows how long the user has been holding down a button.[/b] The counter will start at 0 and increment each time a new IR signal has been received. The button name and remote control name are defined in the lircd config file. Their purpose should be quite self-explanatory. They must not contain any whitespace.
Смущает отсутствие алгоритма ХЭШирования и таблицы перевода ХЭШ1 => Key_Play.
(это если в lirc UDP передаётся именно имя кнопки...)
Насколько я успел разобраться, этого действительно нет.
Сетевой клиент открывает порт для приёма данных... А сервер в этот порт данные и отправляет...
(это точно, после дрессировки антивиря - моя прога заработала, появился порт и данные забегали...)
Здесь как-то всё очень странно. В таком случае lircd превращается в сетевого клиента, что вообще непонятно. По идее, lircd должен открыть UDP-порт, ваше приложение-клиент к нему подключается и начинает принимать данные. Конечно, если вы всё это делаете на одном компе, тогда ваши слова ясны.
1) моя прога создаёт порт и принимает с него данные – на этом этапе OK!
2) Дллка Игоря - его тоже создаёт, но данные дальше дллки Игоря не идут... наружу не выходят...
3) Схема Игоря - не жизнеспособна... Ток на ногах МК выше номинального, а данные не передаются...
(правильнее сказать принимаются с битой контрольной суммой и битым идентификатором пакета,
поэтому их сетевая не опознают и следственно они не приходят в программу...)
переделка схемы решила эту проблему... данные приходят, CRC - правильный...
То есть всё заработало?
-
Здесь как-то всё очень странно. В таком случае lircd превращается в сетевого клиента, что вообще непонятно. По идее, lircd должен открыть UDP-порт, ваше приложение-клиент к нему подключается и начинает принимать данные. Конечно, если вы всё это делаете на одном компе, тогда ваши слова ясны.
Устройство не имеет приёмника - только передатчик...
отправляет пакет на заданный порт заданного IP без каких либо проверок...
на компе этот порт должен быть открыт...
(устройство в силу односторонней направленности свой порт слушать не может, но эмулирует его наличие)
То есть всё заработало?
К сожалению НЕТ...
1) Нет бортовой распознавалки... потеря одного пакета из 5 приводит к
потере всей посылки... но это переделаю позже...
2) родная библиотека дохлая...
3) моя работает только на машинах с дэльфи...
Использую компоненты OleCtrls, isp3;
которые создают класс
type
TForm1 = class(TForm)
UDP1: TUDP;
отсутствующий на др. машинах...
Т.к. сейчас занят основной работай и доделкой IgorPlug2
нет времени ковырять енет для ответа на этот вопрос...
(не откажусь от помощи по адаптации данной проги...
вышлю по почте)
-
Устройство не имеет приёмника - только передатчик...
отправляет пакет на заданный порт заданного IP без каких либо проверок...
на компе этот порт должен быть открыт...
(устройство в силу односторонней направленности свой порт слушать не может, но эмулирует его наличие)
Хорошо, понял. Теперь хочу уточнить, что является принимающей пакеты от устройства программой, это в данном случае lircd, IgorplugUDP или ваша собственная разработка? Общую схему можете описать? То есть какой порядок расстановки элементов в этой схеме.
К сожалению НЕТ...
1) Нет бортовой распознавалки... потеря одного пакета из 5 приводит к
потере всей посылки... но это переделаю позже...
2) родная библиотека дохлая...
3) моя работает только на машинах с дэльфи...
Использую компоненты OleCtrls, isp3;
которые создают класс
type
TForm1 = class(TForm)
UDP1: TUDP;
отсутствующий на др. машинах...
Т.к. сейчас занят основной работай и доделкой IgorPlug2
нет времени ковырять енет для ответа на этот вопрос...
(не откажусь от помощи по адаптации данной проги...
вышлю по почте)
Я к сожалению не силён в электронике, но имею опыт в программировании на C. Коды на Delphi мне в большинстве своём понятны. Со 2 июня ухожу в отпуск, можем вместе поработать над этой задачей.
-
Хорошо, понял. Теперь хочу уточнить, что является принимающей пакеты от устройства программой
На данном этапе только моя прога (собственная разработка)
Комплектная дллка IgorplugUDP - не отдаёт принятые данные...
Общую схему можете описать? То есть какой порядок...
Порядок такой
1) берём пилу и молоток
(это не шутка)
2) ...
Дальнейшие пояснения и схему могу выслать мылом...
(К сожалению участились случаи плагиата, поэтому не буду раскрывать все тонкости)
Потом как закончу выложу со статьей на сайте...
Я к сожалению не силён в электронике
пояснения элементарны... ошибиться трудно...
можем вместе поработать над этой задачей.
Я за... у нас командная разработка... Ссылку на автора сохраню...
-
На данном этапе только моя прога (собственная разработка)
Комплектная дллка IgorplugUDP - не отдаёт принятые данные...
То есть вы не используете liircd?
Порядок такой
1) берём пилу и молоток
(это не шутка)
2) ...
Дальнейшие пояснения и схему могу выслать мылом...
(К сожалению участились случаи плагиата, поэтому не буду раскрывать все тонкости)
Потом как закончу выложу со статьей на сайте...
пояснения элементарны... ошибиться трудно...
Меня мало интересуют технические тонкости, тем более что касается там всяких схем устройства. Я могу оказать посильную помощь лишь в создании и апгрейде ПО. Но даже для этого потребуется больше информации, в частности подробное описание или сам код имеющегося приложения, так как, говоря откровенно, не имею опыта работы, связанной с подключением инфракрасников к компу.
Также хотелось бы узнать, как вы планируете распространять свой проект - под какой лицензией. Если ПО планируется продавать, нам, к сожалению, с вами не по пути. Повторюсь, при этом, что само устройство меня не интересует, исключительно приложение.
-
То есть вы не используете liircd?
Пока нет - но хочу...
потребуется больше информации, в частности подробное описание или сам код имеющегося приложения
Я не против - они открытые...
напиши мне на почту - отправлю...
не имею опыта работы, связанной с подключением инфракрасников к компу.
Подключением занимается специализированная прога...
но ей надо отдать данные... Обычно этим занимается библиотека которая в свою очередь
как-то общается с драйвером...
Также хотелось бы узнать, как вы планируете распространять свой проект - под какой лицензией.
Выложу на сайт... С бесплатными прошивками и библиотеками...
Лицензия по-моему GNU, но с закрытым кодом...
Если ПО планируется продавать, нам, к сожалению, с вами не по пути. Повторюсь, при этом, что само устройство меня не интересует, исключительно приложение.
А я ПО делать и не собираюсь... Т.к. оно уже дано сделано, причём профессионально несколькими конторами...
Есть платные, условно бесплатные, с открытым кодом и т.д. выбирай какое нравится...
Нужна только библиотека которая бы собирала и отдавала данные основному ПО стороннего разработчика...
Да чуть не забыл – если будешь разработчиком библиотеки, то и тип лицензии на неё выбирать тебе...
(уточню проект НЕ КОМЕРЧЕСКИЙ - т.е. библиотека должна быть полнофункциональной и без ограничений)
-
Вот, кстати, показался интересным текст с сайта www.cesko.host.sk/IgorPlugUDP/IgorPlug-UDP%20(AVR)_eng.htm:
Device supports only transmitting, because receiving is not possible at this microcontroller speed. Therefore we must use device on full duplex networks only! Otherwise is probability that on network occurs collisions during device transmitting and because device not checks collisions (not receiving), then the transmitted code is not delivered to destination. Full duplex networks are for example direct connection to computer network card through crossover cable. In the future I want to test the device on complex network with network switch and more active computers connected - if you have access to some network give me please your test result ;-) .
Ты уверен, что всё сделал правильно в своих тестах? Пробовал ли менять адрес назначения посылки пакетов?
-
Вот, кстати, показался интересным текст с сайта www.cesko.host.sk/IgorPlugUDP/IgorPlug-UDP%20(AVR)_eng.htm:
Ты уверен, что всё сделал правильно в своих тестах? Пробовал ли менять адрес назначения посылки пакетов?
В своих - уверен... <_< поэтому у меня и работает...
А с оригинальным два вечере провозился...
----------------------------------------------
Добавлено позднее
Если кому надо, то вот
Исходники сервера и клиента WInlirc на Delphi (http://www.mindrunway.ru/Fayliki/WinLircServerClient.zip)
как потом выяснилось к UDP он не имеет отношения, а сам UDP отпочковался в свой проект
в разделе Блок 9 для 'Lan Bridge' освоен обмен пакетами по протоколу UDP.
http://www.mindrunway.ru/GraniCubLanB.html (http://www.mindrunway.ru/GraniCubLanB.html)