Jump to content
NobbyNobbs

Программирование джойстиков CH Products

Recommended Posts

спс конечно за подсказку, но дело было в переназначении осей.. сн маппер это такой маппер, всем мапперам маппер.

Share this post


Link to post
Share on other sites

Итак, я нашел способ как выкупить резисторы 295 серии.

 

Пока у продавца есть лоты на 5 штук ($4,95) и на 10 штук ($13).  Доставка по США 5$ за лот.

 

Далее, будет доставка до моего адреса в России.   Здесь предлагаю определиться.  Можно примерно на 13 долларов - обычной почтой и очень долго (до 2-3 месяцев), можно поскорее, но это будет стоить 45-50 долларов (экспресс доставка 10-20 дней  из практики)

 

Пока трое желающих (я, джокер, беретта) заявили о желании приобрести 20 штук.

Я попробую договориться с продавцом на лот в 20 штук (это позволит сократить почтовые расходы на множественные посылки)

 

Пока от вас требуется сообщить каким способом будем доставлять до России.  Лично мне - без разницы (могу и  долгим, у меня пока ничего не шумит), могу и быстрым - 50 баксов на троих поделить не напрягает вовсе.

 

 

------

PS   В качестве информации:  Производитель (CTS) сообщили, что могут изготовить для нас хоть HP серию, хоть 295 - вопрос только в том, что заказ должен быть не менее чем на $1000    :)  

Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

Долгим !

Потерпим, пока работает всё. Тупо переплачивать.  ;) 

Тьфу,тьфу,тьфу. 

295, они чем отличаются от НР-100 ?

Share this post


Link to post
Share on other sites

 

 

Zulu' timestamp='1411150014' post='201283'] Пока от вас требуется сообщить каким способом будем доставлять до России. Лично мне - без разницы (могу и долгим, у меня пока ничего не шумит), могу и быстрым - 50 баксов на троих поделить не напрягает вовсе.

Я отписался в личку :gamer: Если нужно будет,могу взять побольше резисторов.К примеру не 7 а 10 штук.

 

 

Share this post


Link to post
Share on other sites

мужики, сорри, но не понятна конечная стоимость и кто будет рассылать по России? 

Share this post


Link to post
Share on other sites

PS   В качестве информации:  Производитель (CTS) сообщили, что могут изготовить для нас хоть HP серию, хоть 295 - вопрос только в том, что заказ должен быть не менее чем на $1000     :)

Если бы уточнить количество желающих, то набрались бы. В Тундре на форуме отписать, на форумах Ил-2 + тут ещё. Думаю реально набрать людей на эту сумму.

Edited by =2ndSS=JOCKER

Share this post


Link to post
Share on other sites

 

 

Zulu' timestamp='1411150014' post='201283']  Можно примерно на 13 долларов - обычной почтой и очень долго (до 2-3 месяцев),
 

Это они что по полкило весят, резисторы? Что за дикие цены и сроки, до 100гр доставка стоит 5$, и идет 2 недели.

Share this post


Link to post
Share on other sites

Я так мыслю надо отдельную тему замутить про резисторы :scratch_one-s_head:


 

Share this post


Link to post
Share on other sites

Не.... судя по таким заявлениям http://forum.il2sturmovik.ru/topic/988-programmirovanie-dzhojstikov-ch-products/?p=201553   у меня не получится вам помочь, - эт я потом всю жизнь буду оправдываться за дикий перерасход в 240 рублей, и разбираться с претензиями..  Чета меня эта перспектива не радует. И мне этот гемор и возня с перепиской нафик не нужен, а тем паче  две сотни рублей.

 

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

 

В качестве подсказки предлагаю купить пересылочный адрес в США для этих резисторов и пользоваться им - при этом у вас будет полный контроль за движением единичных долларов и десятков рублей. ;)  :lol:

-----------------------

 

Спасибо.   Я без обид. Просто я действительно не хочу этим заниматься.  Я то для себя вопрос уже решил.

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

 

 

Zulu' timestamp='1411206498' post='201635'] Не.... судя по таким заявлениям http://forum.il2stur...ducts/?p=201553 у меня не получится вам помочь, - эт я потом всю жизнь буду оправдываться за дикий перерасход в 240 рублей, и разбираться с претензиями.. Чета меня эта перспектива не радует. И мне этот гемор и возня с перепиской нафик не нужен, а тем паче две сотни рублей.

 

Да ладна :gamer: не обращай внимания.Давай отдельную тему откроем.Тот кто в оппозиции,не устраивают цены и т. д. пущай не суются.

Share this post


Link to post
Share on other sites

Не.... судя по таким заявлениям http://forum.il2sturmovik.ru/topic/988-programmirovanie-dzhojstikov-ch-products/?p=201553   у меня не получится вам помочь, - эт я потом всю жизнь буду оправдываться за дикий перерасход в 240 рублей, и разбираться с претензиями..  Чета меня эта перспектива не радует. И мне этот гемор и возня с перепиской нафик не нужен, а тем паче  две сотни рублей.

 

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

 

В качестве подсказки предлагаю купить пересылочный адрес в США для этих резисторов и пользоваться им - при этом у вас будет полный контроль за движением единичных долларов и десятков рублей. ;)  :lol:

-----------------------

 

Спасибо.   Я без обид. Просто я действительно не хочу этим заниматься.  Я то для себя вопрос уже решил.

Что за истерика, речь про продавца же.

Ну идет то оно канеш как повезет, но не 2-3 месяца. 2-3 недели.

Share this post


Link to post
Share on other sites

Да ладна :gamer: не обращай внимания.Давай отдельную тему откроем.Тот кто в оппозиции,не устраивают цены и т. д. пущай не суются.

Не, их не победишь, их много. :)

 

Что за истерика, речь про продавца же.

Вот иди его найди и с ним и бодайся, раз такой умный :)

 

А вообще, ты прав. Дело это неблагодарное. Тем более с почтой. Мне вон с Англии посылка 6 месяцев шла. И я бы очень хотел, что бы в закупке на эти резисторы участвовали такие подкованные и ответственные люди как ты. С тобой все ускорится в разы и диких денег не заплатим. Возьмись как ты за организацию процесса, раз тебя сюда что то привело.

 

--------------

И вообще это уже жутчайший оффтоп. 2 Moderators - почистите ветку плиз. Оставьте только программирование.

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

...а теперь немного по теме топика ;)...

Просьба поделиться Вашими соображениями на тему

КАК ВЫ РЕАЛИЗУЕТЕ:

1. Короткое и долгое нажатие для одной кнопки?

2. Двойной и одинарный "клик" для одной кнопки?

... интересны наработки...  :salute:

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

 

 

2. Двойной и одинарный "клик" для одной кнопки?
 

 

Полистайте тему, Зулу точно постил про включение даблкликом форсажа на Лавке. Вообще он про таймеры много писал, там пищу для размышлений о коротком/долгом нажатии можно найти наверное.

 

зы. купил задешево Файтерстик на замену Комбатстику, подключил... Теперь все что нажито непосильным трудом переписывать надо. 

Share this post


Link to post
Share on other sites

Да, я помню у Zulu... интересно и познавательно, "узнал много новых слов" :)...

ещё хочу :)

зы. купил задешево Файтерстик на замену Комбатстику, подключил... Теперь все что нажито непосильным трудом переписывать надо. 

...Сочувствую :( Тем не менее, когда перепишете расскажите, каково с кнопок переходить на хатки... это я к том, что в свое время была возможность выбрать между комбат и файтер версиями. И тогда именно недостаток кнопок на последнем определил выбор...

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

...а теперь немного по теме топика ;)...

 

Да уж :gamer: Ну что таки не у кого нет скрипта сглаживания осей?

Share this post


Link to post
Share on other sites

Да уж  :gamer: Ну что таки не у кого нет скрипта сглаживания осей?

 

Есть такая партия... такой скрипт!... Только его Terror зажал  :blush: , ...хотя и анонсировал 4-м пунктом в свое сообщении.

Так что надо его попытать на эту тему...

И ещё спрашивал я как-то у него про подруливание, про которое он там же упоминал. Но видно затерялся вопрос... :(

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Принцип детектирования двойного движения РУД в макс. положении (ака Дабл клик РУДом)

 

По аналогии переделывается под кнопки.  Для кнопок даже легче, ибо второй таймер уже не нужен, имхо

----------------------------

 

// Определения

%DEFINE MAXTHRTL1   D10     // Флаг контрольного интервала времени  для ожидания  движения рудом вниз

%DEFINE MAXTHRTL1   D11     // Флаг контрольного интервала времени  сек для ожидания второго достижения рудом макс

 

// Тело

TIMER (PERIOD,MAXTHRTL1,8) = [JS2.A3 <=3] AND NOT MAXTHRTL1;  // Выставляем флаг ожидания MAXTHRTL1 на время 0,4 сек при достижении РУДа максимального положения (<=3) 

                                                                                                                           // Что бы исключить повторное срабатываени таймера в период охранного интервала делаем

                                                                                                                            // проверку на самого себя: ' AND NOT MAXTHRTL1'

TIMER (PERIOD,MAXTHRTL2,8) = [JS2.A3 > 7] AND  MAXTHRTL1;         // Выставляем флаг ожидания MAXTHRTL2 на время 0,4 сек при условии что РУД двинулся вниз за время 1-го контрольного интервал    

 
PULSE(D9) = [JS2.A3 <= 3]  AND MAXTHRTL2;  // Если РУД снова в макс  то Дабл клик РУДом зафиксирован.  Даем коротки сигнальный импульс D9
 
SEQUENCE
WAIT(D9);        // Реализуем что хочем по наличию сигнальног импульса D9
bla bla bla  - Делаем что хотим
ENDSEQUENCE
 
 
 
Примечание:  
1) Скрипт расчитан на стандартный ход осей (Макс тяги - 0,  Мин тяги - 255)
2) Ось РУД  по скрипту JS2.A3
Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

Детектирование долгого нажатия вообще простейшая операция в CH - в одну строку.   Для этого применим Таймер типа ONDELAY.

 

 
TIMER (ONDELAY, D1, 30) = (JS4.B3 OR JS4.B4);    
 
-  при удерживании любой из кнопок B3 или B4 более 1,5 сек (30*50ms = 1,5 s) - битовый флаг D1 устанавливается в TRUE.   Как только кнопка отпускается флаг D1 тоже сбрасывается.
Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

...ага, это тот самый форсаж!..

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

...

про долгое нажатие пока не разобрался.. Я хочу, чтобы при кортком нажатии выполнялась одна последовательность, а при длительном нажатии той же кнопки выполнялась другая..., а та "одна" не выполнялась :)

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Дык так и будет.  Уже сейчас.  Их без особой доработки можно объединить    Пожалуйста.

 

Детектирование дабл клика и долгого нажатия на JS2.B1

 

// Определения

%DEFINE MAXTHRTL1   D10     // Флаг контрольного интервала времени  для ожидания  ОТЖАТИЯ КНОПКИ

%DEFINE MAXTHRTL1   D11     // Флаг контрольного интервала времени  сек для ожидания второго НАЖАТИЯ КНОПКИ

%DEFINE LONGPRESS   D13     // Флаг  детектирования долгого нажатия

// Тело для дабл клик

TIMER (PERIOD,MAXTHRTL1,8) = JS2.B1 AND NOT MAXTHRTL1;  

TIMER (PERIOD,MAXTHRTL2,8) = NOT JS2.B1 AND  MAXTHRTL1;        

SEQUENCE
WAIT(JS2.B1  AND MAXTHRTL2);        
bla bla bla  - Делаем что хотим при дабл клике JS2.B1
ENDSEQUENCE
// Тело для длинного нажатия
TIMER (ONDELAYLONGPRESS30) = JS2.B1 AND NOT MAXTHRTL2;    
SEQUENCE
WAIT(LONGPRESS);        
bla bla bla  - Делаем что хотим при долгом нажатии JS2.B1
ENDSEQUENCE

 

 

PS.  скрипт задействует кнопулю №1 на джое №2 (JS2.B1)

Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

Отлично, dbl и long работает! Спасибо!

Осталось обработать простое нажатие. Без dbl и long...

Share this post


Link to post
Share on other sites

Отлично, dbl и long работает! Спасибо!

Осталось обработать простое нажатие. Без dbl и long...

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

PULSE (D1) = TRUE;   - это очень короткий одноразовый импульс, действующий только в течение одного цикла сканирования.

 

А в конце скрипта запрети при его наличии чего либо делать.

Напр.

IF (D1) THEN

  CMS.B15 = FALSE;

ELSE

  CMS.B15 = JS2.B1   - сюда все, что по обычному нажатию

ENDIF

 

Таким образом

Если будет зафиксировано dbl или long то обработка обычного нажатия не состоится. И наоборот, при отсутствии первых двух, нажатие кнопки JS2.B1 будет обработано обычным образом, и ёё значение будет присвоено СMS

 

 

Можно, кстати dbl детектировать через счетчик, тогда можно обработать хоть двойной, хоть тройной клик..   А long тоже разделить на короткий лонг, до секунды, и длинный до 2 секунд, например  :)

 

ЗЫ   Ну и раз у тебя все заработало, значит в примере, приведенном в сообщении №303 ты нашел одну ошибку :)   Гы, гы, Молодец.  Я ее сам только сейчас увидел.

Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

Вот варинат детектирования даблов, триплов и т.д.   В примере трипл - тройной клик  ()

 
TIMER(PERIOD,GUARDTIME,18) = JS1.B1;
IF (NOT GUARDTIME) THEN
  Counter = 0;
ENDIF
SEQUENCE
WAIT(GUARDTIME AND JS1.B1);
Counter = Counter +1;
ENDSEQUENCE
IF ([Counter == 3] OR STARTED) THEN  // счетчик до 3   (можно поставить любое число) 
  SEQUENCE
    
    STARTED = TRUE;
        ........   bla bla bla   - делаем что нужнжо
 
    STARTED = FALSE;
  ENDSEQUENCE
 
Примечание:  GUARDTIME - обявить типом D,  Counter - объявить как аналогую переменную типа A,  STARTED - объявить типом B - она нужна для сохранения пробега по Sequence в том, случае если Sequence будет иметь операторы Delay() и окажется продолжительнее GUARDTIME.  Иначе не требуется.     
Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

 

 

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

 

Единственное неудобство с которым я столкнулся это стрельба из пушек. Всегда назначал на курок пулеметы, а на кнопку под большим пальцем пушки. Тут назначил также и вчера поначалу пытался "нажимать" на хатку вниз, меня даже убили за это пару раз :biggrin: Но человек привыкает ко всему, сейчас уже гораздо лучше.

 

А еще я кнопку, что справа на джойстике под указательным пальцем раньше использовал чтобы включать/выключать ХУД, карту, приборы (с двойным шифтом), а тут она переключает режимы. Все время ее по привычке нажимаю, летаю с цветомузыкой  :)

 

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

Раньше я использовал два режима на про-троттл: ВВС и Люфты, а теперь с помощью комбинаций переменных FTRSTKMODE and PROTHRMODE можно сделать для каждой стороны несколько режимов. Только гложет меня сомнение - оно вообще надо или это уже "излишества всякие нехорошие"  :biggrin:

  • Upvote 1

Share this post


Link to post
Share on other sites

А еще я кнопку, что справа на джойстике под указательным пальцем раньше использовал чтобы включать/выключать ХУД, карту, приборы (с двойным шифтом), а тут она переключает режимы. Все время ее по привычке нажимаю, летаю с цветомузыкой 

 

 

 

А ты ее запрети в GUI указав на другой девайс, например

post-4254-0-38731400-1411810837_thumb.gif

Share this post


Link to post
Share on other sites

А ты ее запрети в GUI указав на другой девайс, например

attachicon.gifGUI mode control.gif

 

спасибо за совет, у меня там вообще none выбрано  :blush:

Share this post


Link to post
Share on other sites

спасибо за совет, у меня там вообще none выбрано  :blush:

Вот и берет с того, что сама решит.  :) У тебя на файтер попало :)

 

Можешь, Кстати, в ГУИ указать, что режимы через скрипт, тогда для Mode можно будет назначить вообще, что захочешь,   а умолчальные хардварные высвободятся

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

Вот и берет с того, что самой вздумается :) У тебя на файтер попало :)

 

неа, похоже при none вообще не берет - я значение CURRENTMODE принудительно в скрипте назначаю. а лампочки своей жизнью живут.

 

 
sequence                    // js2 это ProThrottle
wait(js2.b1);
currentmode=1;
wait(js2.b1);
currentmode=2;
wait(js2.b1);
currentmode=0;
endsequence

Share this post


Link to post
Share on other sites

Странно. За сменой CURRENTMODE должны следовать лампочки. У меня так.   Хм... А Попробуй выставить Mode Control в GUI в режим CMS

Share this post


Link to post
Share on other sites

Лампочки привязаны к штатному переключателю режимов.

post-17467-0-35969200-1411820677_thumb.png

Share this post


Link to post
Share on other sites

Лампочки привязаны к штатному переключателю режимов.

Ясно.   Тогда, самое удобное, это перенести управление Режимом на ThrottlePro - там нажатием на микростик по центру переключается. Никогда не мешает и случайно не включишь ни за что :)

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

ZULU наконец-то дошло как работает первый скрипт :)... У тебя там тонко и хитро всё! Не сразу разобрался, хотя заработало сразу :)

Однако, надо иметь ввиду, что если сейчас после второго клика продолжить жать кнопку, то сработает "долгое нажатие". Хотя это не критично... 

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

PULSE (D1) = TRUE;   - это очень короткий одноразовый импульс, действующий только в течение одного цикла сканирования.

А в конце скрипта запрети при его наличии чего либо делать....

а вот здесь не разобрался... , с PULSom не заработало :( Буду разбираться дольше...

П.С. ... трипл ещё не пробовал :)... вернее не пробовал в "полном объеме", когда распознаются 1,2 и 3 нажатия... 

 

 

ЗЫ Ну и раз у тебя все заработало, значит в примере, приведенном в сообщении №303 ты нашел одну ошибку  :) Гы, гы, Молодец. Я ее сам только сейчас увидел.

После того как Terror выложил свое триммирование без 8 строк кода и потерянной одной скобкой в секции %DEFINE, которая обнаруживается как ошибка чуть-ли не в конце скрипта (так её и не поправил) мои навыки обнаружения мелких ошибок заметно улучшились :)

 

 

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites
sequence                    // js2 это ProThrottle
wait(js2.b1);
currentmode=1;
wait(js2.b1);
currentmode=2;
wait(js2.b1);
currentmode=0;
endsequence

Опс! Спасибо напомнил мне о такой возможности обработки в seguence последовательности... я и забыл про неё... !

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites
а вот здесь не разобрался... , с PULSom не заработало Буду разбираться дольше...

 

 

Пардон. Не сработает...  Это я погорячился.

 

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

 

Лонгпресс на одиночный прямого влияния не имеет. Однако опять же.  Если мы чего то на одиночный повесили (при нажатии), то при лонгпрессе в этом случае сработает сначала одиночный а уже затем - лонгпресс.   Отсюда, вывод, либо на одиночный ничего не вешать, либо детектировать одиночный по факту Отжатия кнопки, а не нажатия.  В этом случае елси отжатие произошло ранее ЛонгПресса, то распознаем одиночный клик.  В общем именно так работают на айподах кнопки - по отжатию. Именно по этой причине.

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

А что если стоя в гамаке и в противогазе?  :crazy:

 

Механизьм таймингов почерпнут из скрипта Зулу для закрылок Ла и Лагг.

 

Правда пока писал немножко запутался, поэтому там точно что-то не совсем правильно работает, и, вероятно, (~99,9%) есть лишние (ненужные, дублирующиеся) действия.

Но при всем при этом работает эта белиберда вполне удовлетворительно. 

Файл с картой для ProThrottle прикрепляю. Издевался над B13 (четырехпозиционная хатка под большим пальцем вправо).

%define Pushtiming a1;
%define ReleaseTiming a3;
%define CheckTime a2;
%define FirstPush b1; //флаг, истина если первое нажатие состоялось
%define SecondPush b2;//флаг, истина если второе нажатие состоялось
%define LongPush b3;

script

PULSE (d1) = JS1.B13 and !FirstPush; //слизано у Зулу, генерирует короткий импульс при первом нажатии кнопки
pulse (d2)=!JS1.B13 and FirstPush;//отпустили кнопку после первого нажатия, сгенерировали импульс

  if (d1) then //если первое нажатие кнопки то фиксируем время нажатия и ставим флаг
    CheckTime=TIMESTAMP;
    FirstPush=true;
  endif

  if (d2) then //если отпустили кнопку обнуляем время нажатия и ставим новую метку
    PushTiming=0;
    CheckTime=TIMESTAMP;
  endif

sequence
while (js1.b13 and !SecondPush);              //для первого нажатия
PushTiming=PushTiming + TIMESTAMP-CheckTime; //пока нажата кнопка считаем сколько прошло времени
endsequence

sequence
while (!js1.b13 and FirstPush);
ReleaseTiming=ReleaseTiming + TIMESTAMP-CheckTime; //считаем сколько прошло времени между нажатиями
endsequence

sequence                                                  //если за 4000 тактов не дождались второго нажатия
wait(FirstPush and [ReleaseTiming>4000] and !SecondPush);   //генерируем нажатие кнопки cms.b3
cms.b3=true;                                                //и обнуляем всю эту хрень (ы. 4000 тактов это многовато) 
delay(20);
cms.b3=false;
FirstPush=false;
ReleaseTiming=0;
endsequence

if ([ReleaseTiming>0]and[ReleaseTiming<4000] and js1.b13) then  //если дождались второго нажатия, ставим флаг
SecondPush=true;                                                
cms.b2=js1.b13;
endif


sequence
wait(SecondPush and !js1.b13);  //чтобы при отпускании кнопки джоя cms.b2 не осталась true навсегда
cms.b2=false;                   //сопоставляем флаг второго нажатия и кнопку
ReleaseTiming=0;                //при отпускании кнопки джоя все обнуляем
FirstPush=false;
SecondPush=false;
endsequence


if ([PushTiming>9999]) then //при длительном нажати на кнопку
cms.b1=js1.b13;             //срабатывает cms.b1 и устанавливается соответствующий флаг
LongPush=true;
endif

sequence                    //тут все аналогично двойному нажатию
wait(!js1.b13 and LongPush);
PushTiming=0;
LongPush=false;
FirstPush=false;
SecondPush=false;
cms.b1=false;
endsequence
endScript

DblClick.zip

  • Upvote 2

Share this post


Link to post
Share on other sites

Просили подруливание и сглаживание, говорите? Сорри, не заметил. Вот подруливание. Тут всё очень просто: при отклонении крестовой хатки от соответствующей оси отнимается фиксированное значение или прибавляется. Так достигаем отклонения оси пока нажата хатка. Удобно при полёте строем для плавного ввода в манёвр с фиксированной (удобнее для ведомого) скоростью (ручка всё время отклонена на фиксированное значение).

%DEFINE J_Stick_X           JS2.A1      //  Физическая ось джойстика - Х
%DEFINE J_Stick_Y           JS2.A2      //  Физическая ось джойстика - Y

%DEFINE C_Stick_X           CMS.A1      //  Выводимая ось джойстика - X
%DEFINE C_Stick_Y           CMS.A2      //  Выводимая ось джойстика - Y

%DEFINE J_Mini_Stick_Nose_Up     ( JS2.B5 )         //  Кнопка "нос вверх" (крестовая хатка на РУСе вниз - "на себя")
%DEFINE J_Mini_Stick_Nose_Down   ( JS2.B7 )         //  Нос вниз
%DEFINE J_Mini_Stick_Bank_Left   ( JS2.B8 )         //  Крен влево
%DEFINE J_Mini_Stick_Bank_Right  ( JS2.B6 )         //  Крен вправо
%DEFINE J_Mini_Stick_Center      ( JS2.B23 )                   //  Хатка в центре -- такая, типа, кнопка есть у каждой хатки.
                                                               //       Эти кнопки "нажаты" всё время, пока соответсвующая им хатка в центре.
                                                               //       Список такой: Хатка 1 - B21, 2 - B22, 3 - B23 4 - B24                                                              

%DEFINE Shift   JS3.B2  //  Кнопка шифт -- с шифтом мы будем подруливать "грубо", без него -- плавно

%DEFINE CONST_Mini_Stick_Fine             15  //  Собственно насколько надо отклонить ось при "плавном" подруливании
%DEFINE CONST_Mini_Stick_Coarse           30  //    и при грубом

script  // Понеслась
    if ( J_Mini_Stick_Center ) then // Хатка в центре, просто транслируем оси напрямую. Это надо, чтобы "отменить" действие хатки, возвращённой в центр
        C_Stick_X = J_Stick_X;      //      Тут надо обратить внимание, что 8-позиц. хатка может и не проходить через центр, когда её сдвигают в другое      
        C_Stick_Y = J_Stick_Y;      //      положение, поэтому тут надо будет городить более сложную проверку. Но тут выбрана хатка 4-х позиционная и
                                    //      при смене положения она всегда пройдёт через центр
    endif   

    if ( J_Mini_Stick_Bank_Left AND NOT Shift ) then // Если хатка нажата "влево" и без шифта -- подруливаем крен плавно влево
      C_Stick_X = J_Stick_X - CONST_Mini_Stick_Fine ;   //  Отнимаем значение подруливания от значения оси и передаём
    endif                                       
    if ( J_Mini_Stick_Bank_Left AND Shift ) then        //  То же, но с шифтом. "Грубое" подруливание.
      C_Stick_X = J_Stick_X - CONST_Mini_Stick_Coarse ; //  Дальше всё аналогично
    endif
    if ( J_Mini_Stick_Bank_Right AND NOT Shift ) then
      C_Stick_X = J_Stick_X + CONST_Mini_Stick_Fine ;
    endif
    if ( J_Mini_Stick_Bank_Right AND Shift ) then
      C_Stick_X = J_Stick_X + CONST_Mini_Stick_Coarse ;
    endif

    if ( J_Mini_Stick_Nose_Up AND NOT Shift ) then
      C_Stick_Y = J_Stick_Y - CONST_Mini_Stick_Fine ;
    endif
    if ( J_Mini_Stick_Nose_Up AND Shift ) then
      C_Stick_Y = J_Stick_Y - CONST_Mini_Stick_Coarse ;
    endif
    if ( J_Mini_Stick_Nose_Down AND NOT Shift ) then
      C_Stick_Y = J_Stick_Y + CONST_Mini_Stick_Fine ;
    endif
    if ( J_Mini_Stick_Nose_Down AND Shift ) then
      C_Stick_Y = J_Stick_Y + CONST_Mini_Stick_Coarse ;
    endif
endscript

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

    if ( [ J_Stick_Z != C_Stick_Z ] ) then
      if ( [ ( J_Stick_Z + 1 ) > C_Stick_Z ] ) then
        C_Stick_Z = J_Stick_Z - 1;
      endif
      if ( [ ( J_Stick_Z - 1 ) < C_Stick_Z ] ) then
        C_Stick_Z = J_Stick_Z + 1;
      endif
      if ( [ J_Stick_Z == 255 ] ) then
        C_Stick_Z = 255;
      endif
      if ( [ J_Stick_Z == 0 ] ) then
        C_Stick_Z = 0;
      endif
    endif
Edited by 72AG_terror
  • Upvote 1

Share this post


Link to post
Share on other sites

Спасибо, Nobby. Всё работает... Пугает только объем скрипта.... для 6 кнопок набежит :) Хотя вешать на одну кнопку и single и  double и long - это через чур. Думаю придется обойтись только single (на отпускание) и long... 

 

2Terror Спасибо, оперативно!

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...