зачем перехватывать UDP? просто отправка своего пакета на инструменты, а там проверка, что за пакет пришел. если кондорский, то читаем параметры, если свой, то меняем МС.
зачем перехватывать UDP? просто отправка своего пакета на инструменты, а там проверка, что за пакет пришел. если кондорский, то читаем параметры, если свой, то меняем МС.
Ммм... Можно и так. Технически разницы с точки зрения обработки пакетов нет. Но есть разница концептуальная. Клиент, отображающий доску, может обрабатывать либо один поток, либо два, причём сам должен их идентифицировать. Если мы (т.е. ты) делаешь прогу, которая "расширяет" и ретранслирует поток, то клиенту нет необходимости разбираться с этими потоками, он просто работает как-будто Кондор выдаёт всё, что нужно. Ежели что, то переписывать придётся только эту прогу, "расширяющую" поток. А если оставить разборку потоков клиенту, то "ежели что", придётся переписывать и "расширитель" и клиент.
Но, опять же, всё зависит от реализации.
Позывной в онлайне - TSD.
флудер. ретранслятор кеев должен тупо передавать кеи по удп. а вот конечный получатель должен знать что с ними делать. запуск ретранслятора производится из ахк например так:
#IfWinActive ahk_class Condor<А_@
End::
Send {End}
Run D:\Prog\Condor\Condor_UDP_extender.exe key=end
return
на самом деле я уже написал скрипт для ахк, который также передаст потом и сигнал о закрытии окна кондора.
Сам такой.
Читал мой пост? Там русским по белому написано следующее: "Технически разницы с точки зрения обработки пакетов нет. Но есть разница концептуальная."
А ещё написано, что "всё зависит от реализации".
Однако вопрос: в потоке UDP один пакет - один параметр, или пачка параметров в одном пакете?
Позывной в онлайне - TSD.
В потоке UDP от кондора - пачка параметров в одном пакете.
Позывной в онлайне - TSD.
Я понимаю, а вот ты, похоже, нет. В любом случае, хоть так, хоть так, потребуется доработка инструментов (кстати это не клиент, а сервер), причем твой вариант намного более трудоёмкий.
в мой пакет первым ставится символ, которого не может быть в пакете кондора, а конкретно "@". сервер проверяет первый символ (сам понимаешь, насколько это быстро), и в зависимости от него продолжает разбор принятого пакета по разному.
В моем варианте требуется простейший udp-sender, который и был написан за 10 минут. Единственное что от него требуется, так это при запуске отправить на тот-же адрес и порт, что и кондор, строку, состоящую из "@" и первого параметра командной строки. Линух вэй, йопт. Много маленьких утилит, которые вместе могут сделать много больше чем каждая в отдельности. В идеале сендер не должен знать, что он отправляет. Именно этот, идеальный вариант, я и реализовал. А дальше уже да хоть АХК, хоть саитовской утилитой, хоть руками его запускай. На настоящий момент сервер понимает следующие пакеты расширения:
Для работы с АХК я написал скриптег, который перехватывает дефолтные кнопки управления МС и переключения лифт/круиз, и запускает указанный выше сендер. Причем ставится сторожок на закрытие окна кондора, при срабатывании которого сбрасываются МС и лифт/кондор в инструментах.Код:MC_UP MC_DOWN LIFT_CRUISE TERMINATED
Добавлено через 5 минутКод:#MaxThreadsPerHotkey 2 #IfWinActive Condor End:: Send {End} Run D:\Prog\Condor\UDPSender.exe MC_DOWN CondorCloseWait() return #IfWinActive Condor Home:: Send {Home} Run D:\Prog\Condor\UDPSender.exe MC_UP CondorCloseWait() return #IfWinActive Condor RCtrl:: Send {RCtrl} Run D:\Prog\Condor\UDPSender.exe LIFT_CRUISE CondorCloseWait() return CondorCloseWait() { global CondorCloseWaiting if ( CondorCloseWaiting <> "" ) return CondorCloseWaiting = waiting WinWaitClose Condor global Condor_UDP_extender Run D:\Prog\Condor\UDPSender.exe TERMINATED }
Ведь сервер (инструменты) слушает не кондора, а порт. И уж кто что на него шлет ему неизвестно, и надо разбираться в том, что тебе прислали.
Крайний раз редактировалось klimrmad; 24.08.2008 в 02:57. Причина: Добавлено сообщение
Free Condor Instruments beta 0.1.13
+ Компас
+ Шарик
Кто тут сервер, а кто клиент - вопрос спорный и я бы даже сказал философский. Посему оставим его.
А насчёт трудоёмкости - не факт. Зависит как раз от того, что за поток пойдёт на панель. Если, например, это будет стандартный поток типа
time=12.0047670302163
airspeed=22.0239849090576
altitude=1850.51428222656
...
gforce=0.782935019054666
mc=2.5
cruise=1
то если вдруг Кондор начнёт передавать эти данные в будущем патче или версии (например, по просьбам трудящихся), то переделка доски потребуется минимальная - заменить параметры "mc" и "cruise" на то, что будет передаваться Кондором. А если дать возможность конфигурять эти параметры через ini-файл, то переделка доски не потребуется вообще.
А в сендере в этом случае вообще нужно будет просто выкинуть кусок кода и всё. А если добавить в ini-файл что нибудь типа "sendmc=1/0" и "sendliftcruise=1/0", то даже и выкидывать ничего не придётся. В идеальном варианте необходимость в сендере может вообще отпасть (т.е. переделка сендера быдет выполнена нажатием клавиш Shift+Delete в иксплорере).
Да, при этом сендер будет чуть посложнее. Это в нём, а не в доске нужно будет хранить текущее значение и изменять МС, как и хранить и изменять состояние лифт/круиз по нажатию клавиш. Но я не вижу здесь никаких технических проблем. Как и в том, чтобы тупо принять поток от Кондора и бросить его дальше, добавив 2 строчки. Зато доска при этом будет исключительно доской - информационным табло, т.е. тупо отображать приходящий поток, не занимаясь вообще никакой обработкой данных.
Однако, это моё видение. А т.к. ты автор, то твоё видение безусловно имеет приоритет над моим.
Добавочка.
В скрипте для ахк вот это может не покатить:
RCtrl::
Send {RCtrl}
Я сталкивался с тем, то такие посылки от ахк Кондор иногда не пропускает. Поэтому я в скрипте всегда пишу так:
RCtrl::
Send {RCtrl down}
Sleep 100 ; ну или 50
Send {RCtrl up}
Крайний раз редактировалось twww; 24.08.2008 в 18:23.
Позывной в онлайне - TSD.
Это не вопрос ни разу. В инструментах открыт сокет, который слушает порт. Это называется сервер.
Переделка потребуется в любом случае, поэтому говорить о трудоемкости глупо. А ставить промежуточное звено между кондором и инструментами, ну его нахер, лучше так как уже сделано. Я не выкладываю только потому что по англицки не смогу написать.
Да нивапрос, тут тебе виднее.
UDPSender
exe-шник положить в папку кондора.
В скрипте поправить путь к кондору и добавить в тот что у вас есть.
Если вы не пользуетесь АХКто вот вам достойный повод начать пользоваться.
За подробностями пинайте тввв, хоть что-то на него ляжет.
2 twww: надо бы на английский перевести и выложить.![]()
Я ш сказал, что обсуждать термины не буду. А то уйдём от темы, т.к. вопрос действительно философский и зависит как от терминологии, так и от того, на каком уровне мы рассматриваем систему.
Насчёт промежуточного звена и что именно лучше - выбор за тобой, хотя то, что лучше по одному критерию, может быть хуже по другому. А промежуточное звено всё равно есть и даже не одно, а два
.
Если напишешь по-русски то, что нужно написать по-аглицки, то я охотно помогу перевести. Причём можешь просто тезисы набросать - остальное я беру на себя.
Добавочка.
Может положить на кондорофорум запрос на то, чтобы по UDP выдавалось МС и статус лифт/круиз? А может ещё что нужно?
Позывной в онлайне - TSD.
Сейчас промежуточное звено есть только для получения МС. А в другом случае оно будет для всего, это совершенно не нужная мне головная боль.
По русцки я написал постом выше. Положить ехе и добавить в ваш скрипт. Это всё.
Запрос я через хитцу отправил ужено не помешает и на форуме явно описать проблему. Кроме МС и лифт/круиз вроде больше ничего и не надо.
А вот это уже неважно, для чего нужно промежуточное звено. Главное, что оно есть. А раз оно (пока) есть, то можно его использовать на всю катушку, чтобы остальная часть была максимально универсальной
.
Вот. Щас брошу всё, и буду чинить тебе велосипед!©РНА (Русский Народный Анекдот). Ты изложи, как автор, тезисы инструкции пользователя. А я ужо облеку в нужную форму. Просто я по ряду причин чуть упустил развитие событий, и мне, чтобы получить достоверную информацию о текущем состоянии, надо анализировать всю ветку, лог аськи, и т.д.
Ок. Напишу.
Позывной в онлайне - TSD.
1. БЕЗ промежуточного работает? работает. Пипл доволен? доволен. Нах$%. Кому надо тот сделает себе АХК и скрипт.
2. спрашивай в аське.
3. пока без результатов.
зы: не злите меня, мне скоро негде будет прятать трупы.
Без промежуточного звена (сендера) работает. Но только как бета. Как полноценный продукт - нет...
С аськой сложно - я к компу подбегаю минут на 5-10 и отбегаю опять на пару часов.
Кстати, кондорофорум читал - http://forum.condorsoaring.com/viewt...?p=90547#90547 ? Небольшой баг заметили бета-тестеры с е-варио.
Позывной в онлайне - TSD.
Вот мой запрос на кондорофоруме: http://forum.condorsoaring.com/viewtopic.php?t=9274
Всё правильно сформулировано?
Позывной в онлайне - TSD.
Клим, ну ты ж меня уже знаешь. Обидеть? Ни ва фто! А вот заронить в душу сомнение - это да. Но в конце концов ты сам разберёшься с этим сомнением, и как профессионал сам примешь самое грамотное решение. Мой-то голос здесь сугубо совещательный, а твой - решающий. Т.к. ты девелопер, а я - так... заноза в попе
.
Позывной в онлайне - TSD.
Прошу прощения у всех, кто ждет релиза Free Condor Suite за задержку с отрисовкой оставшихся приборов. Приболел я ребята, сорри.
Итак, трам-тарарам, выкладываю бету за номером 1.15 с новыми приборами от ателье доктора Димана. Как обычно, при обнаружении глюков и прочих глупостей просьба сразу же сообщать.
http://www.condorsoaring.ru/files/Fr..._beta_1_15.rar
Желаю всем удачных полетов, прочих рулесов и свежих бибов.
PS. Пофиксил баг с отображением V на электроварио, который нашли орлы с кондорфорума.
Крайний раз редактировалось drDiman; 08.09.2008 в 15:27.
А вот ещё вопросец с кондорофорума: http://forum.condorsoaring.com/viewt...?p=91318#91318 .
Кстати, неплохая тема.
Позывной в онлайне - TSD.
Версия с нормальным черным шариком:
http://www.condorsoaring.ru/files/Fr..._beta_1_16.rar
Кайняя версия всегда тут - http://condorsoaring.ru/projects/Fre...ents/download/