зачем перехватывать 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/