???
Математика на уровне МГУ

Показано с 1 по 25 из 86

Тема: ПО "T.A.R.G.E.T"

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Механик
    Регистрация
    21.08.2007
    Возраст
    37
    Сообщений
    271

    Re: ПО "T.A.R.G.E.T"

    Цитата Сообщение от risske Посмотреть сообщение
    Здравствуйте! У меня такая же проблема. Если не сложно, объясните, пожалуйста, как ее оживить.
    Джой - Thrustmaster T16000
    А у меня там скрипт выложен несколькими постами ранее, там вот эти строки:
    Код:
    MapKey(&T16000, H1U, DXHATUP);
    MapKey(&T16000, H1R, DXHATRIGHT);
    MapKey(&T16000, H1L, DXHATLEFT);
    MapKey(&T16000, H1D, DXHATDOWN);
    оживляют хатку. Она работает точно так, как и должна, после этих строк, больше ничего делать не надо, в том числе и промежуточные положения(типа DXHATUPRIGRT) мапить не надо. Хотя, наверно, можно и замапить.

    Цитата Сообщение от Serduko Посмотреть сообщение
    Мне нужно не третье действие, а производная от крайних положений, другими словами 4 действия от переключателя с тремя положениями (два действия выбираются в зависимости от куда идет рычажок). На скрипте есть, что -то подобное?
    Да, можно так сделать, может, есть даже встроенные функции для чего-то подобного, но как минимум можно это сделать эвент хэндлером. Я так понял, вы хотите сделать так: переключатель из центра в положение 1 - сделать первое, из центра в положение 2 - сделать второе, из положения 2 центр - третье, из положения 1 в центр - четвертое. Это сделать не трудно, например, вы можете завести переменную, которая будет хранить положение, в котором был переключатель до текущего момента, и использовать разную обработку событий в зависимости от значения этой переменной, кроме того, в обработке события должно быть изменение значения этой переменной. Только вот вы не сможете из крайнего положения переключить в другое крайнее так, чтобы не произошло два действия, а не одно.

  2. #2
    Курсант
    Регистрация
    16.04.2010
    Адрес
    СПб
    Сообщений
    163

    Re: ПО "T.A.R.G.E.T"

    Цитата Сообщение от Razum Посмотреть сообщение
    Да, можно так сделать, может, есть даже встроенные функции для чего-то подобного, но как минимум можно это сделать эвент хэндлером. Я так понял, вы хотите сделать так: переключатель из центра в положение 1 - сделать первое, из центра в положение 2 - сделать второе, из положения 2 центр - третье, из положения 1 в центр - четвертое. Это сделать не трудно, например, вы можете завести переменную, которая будет хранить положение, в котором был переключатель до текущего момента, и использовать разную обработку событий в зависимости от значения этой переменной, кроме того, в обработке события должно быть изменение значения этой переменной. Только вот вы не сможете из крайнего положения переключить в другое крайнее так, чтобы не произошло два действия, а не одно.
    Спасибо. Т.е. переменная все время мониторится ТАРГЕТом или надо создавать функцию мониторинга данной переменной? Раньше не пробовал под ТАРГЕТ программировать.

  3. #3
    Механик
    Регистрация
    21.08.2007
    Возраст
    37
    Сообщений
    271

    Re: ПО "T.A.R.G.E.T"

    Цитата Сообщение от Serduko Посмотреть сообщение
    Спасибо. Т.е. переменная все время мониторится ТАРГЕТом или надо создавать функцию мониторинга данной переменной? Раньше не пробовал под ТАРГЕТ программировать.
    Нет, переменная не мониторится сама по себе. Посмотри мой пост от 11.10.12(чуть выше на этой странице), там есть полный скрипт. Вот, там есть функция int EventHandle(int type, alias o, int x), которая вызывается всегда, когда происходит какое-то событие на физическом устройстве, будь то перемещение оси или нажатие/отпускание любой кнопки. Надо вне этой функции создать переменную(кажется, ключевое слово static не поддерживается таргетом), которая будет хранить состояние переключателя. Когда ты переключаешь переключатель, функция вызывается, а в аргумент "х"(кстати, это я назвал аргумент, как в мануале, можно дать ему любое имя, и есть более лучшие информативные варианты, например, назвать этот аргумент "source") этой функции передается код твоего переключателя, который говорит нам, что с переключателем что-то случилось. При помощи if`а ты отлавливаешь именно это событие(у меня там отлавливаются нажатие кнопок В11 или В12), и совершаешь необходимое действие на виртуальном контроллере. Т.е., например, из позиции 1 переключатель переключился в центр. В переменной x ты получишь код, соответствующий нажатию переключателя в центр, а в твоей переменной будет лежать что-то(ты сам можешь это определить, например, так 1 - первая позиция, 2 - вторая позиция, 0 - центр), что, как ты знаешь, соответствует нахождению переключателя в позиции 1. При помощи еще одного if`а ты проверяешь, что лежит в твоей переменной - если 1 - прогаешь один набор действий, если 2 - то другой набор. Кроме самих действий(нажатие кнопочек на виртуальном контроллере и т.д.) тебе нужно будет присвоить своей переменной новое значение (в нашем примере - 0, т.к. переключатель переместился в центр), вот, как бы, и все. Не нужно специальной функции мониторинга, все действия с переменной будут производиться только тогда, когда будет происходить событие, этой переменной касающееся.
    К сожалению, это такое объяснение на пальцах пока, у меня таргета ща нет под рукой, и я чутка подзабыл, что точно там передается, но схема примерно такая.
    Кстати, если ты не программист и тебе непонятны какие-то конструкции местого языка, можешь смело гуглить эти конструкции, как если бы они относились к языку Си, т.к. таргетовский язык практически точно его копирует, там есть даже некоторые функции из стандартной библиотеки, например, printf.
    Если не справишься, пиши, я поставлю таргет, и сделаю примеры кода. И еще, там, в таргете, есть device analizer, запусти его, и посмотри, что происходит, когда ты переключаешь переключатели. По идее, джойстик с точки зрения программы - это много кнопок и несколько осей, так вот, посмотри, какие кнопки в аналайзере отжимаются/нажимаются, когда ты щелкаешь переключателем. И сюда напиши результаты наблюдений. Находятся ли какие-то из них в нажатом положении всегда, если переключатель в определенной позиции.

    --- Добавлено ---

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •