www.open-tager.ru

открытый лазертаг форум
Текущее время: 25 апр 2024, 20:35

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


В разделе запрещены - обсуждение оборудования не поддерживающего открытых протоколов, реклама и ссылки на готовые продукты лазертага, обсуждение политики производителей и самих производителей. Виден всем.



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 16:15 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Народ пытается разобраться в прошивке, что меня очень радует.
Народ хочет разобраться, но возникают затруднения.
Не хочу, чтобы руки опустились у отважившихся, поэтому постараюсь описать основные функции прошивки.

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


Давайте кратко об общем принципе работы прошивки.

У нас есть прерывания, есть главный цикл, который крутиться бесконечно.

Основную работу делают прерывания - они фиксируют те или иные события, такие как - прием пакета по ИК каналу (или ошибка приема), нажатие кнопок, прием символов по UART? и ... да и все, в общем то.

Как только наступает событие, прерывания информируют об этом главный цикл через глобальные переменные.

Основные события системы:
События клавиатуры (курка), за них отвечает глобальная переменная
keyboard_event
может принимать всего два значения - было нажатие на курок, или не было нажатия

no_key_pressing,
key_pressing,


Как только мы нажали на курок и удержали нажатым несколко миллисекунд (защита от дребезка) - сразу прерывание присваивает переменной
keyboard_event = key_pressing
Главный цикл, поочерёдно опрашивая все переменные-события обнаруживает, что было нажатие на курок и вызывает соответствующие функции, такие как отправка пакета по ИК
send_ir_package();
и воспроизведение звука выстрела - но об этом позже расскажу, так акак звук выстрела воспроизводится не так, как остальные звуки.

Разумеется, перед этим проверит - а есть ли патроны в магазине. ;) :)

После того, как мы обработали событие, мы должны сделать так
keyboard_event=no_key_pressing;
Надеюсь, понятно, зачем?

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

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 16:40 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Следующея глобальная переменная - событие это
reload_key_event
Событие кнопки перезаряда.
Так же всего два значения (пока, возможно изменю потом)
no_key_pressing - не было нажатия
key_pressing - было нажатие

Расписывать обработчик не буду - сами догадайтесь, что он делает

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 17:00 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Далее
rx_event - событие ИК приемника

Может принимать значения
NOT_EVENT, //нет событий
RX_COMPLETE, //принят пакет
RX_MESSAGE_COMPLITE,//принято сообщение
RX_ERROR //ошибка приема пакета

Переменная такого же типа, но отслеживает события блютус-повязки

bt_rx_event;

Те же самые значения может принимать
NOT_EVENT, //нет событий
RX_COMPLETE, //принят пакет
RX_MESSAGE_COMPLITE,//принято сообщение
RX_ERROR //ошибка приема пакета

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 17:05 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Я извиняюсь за грамматику в названиях переменных и описаниях типов - не пинайте сильно, английския язык - единственный предмет по которому у меня за четверть тройка была (единожды). :oops:

Да и русский не далеко ушел. ;) :)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Последний раз редактировалось Pingvin 16 окт 2014, 17:12, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 17:11 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
joystick_event

Догадались, о чем речь?
Конечно - о джойстике.
Какие могут быть события?
Вот такие:

no_pressing, - не было нажатий
key_up_pressing, - была нажата клавиша "вверх"
key_right_pressing, - была нажата клавиша "вправо"
key_down_pressing, - была нажата клавиша "вниз"
key_left_pressing, - была нажата клавиша "влево"
key_central_pressing - была нажата клавиша "центральная"

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 19:08 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
LTagKirov писал(а):
Pingvin писал(а):
Народ пытается разобраться в прошивке, что меня очень радует.
Не хочу, чтобы руки опустились у отважившихся, поэтому постараюсь описать основные функции прошивки.



Хорошее начинание: есть предложение добавить в эту тему заметки "как сделать" какую нибудь типовую функцию.
Помню были ранее написаны описания как сделать пульт, как сделать новую команду и тд
Примерно как в ардуино скетчи народ выкладывает.

Примерные темы:
- смена сценария поведения оборудования, простейшие примеры:
как добавить задержку между нажатием на кнопку огонь и выстрелом ИК(гранатомёт)
или как сделать полный цикл перезарядки магазина и тд
- поддержка N зон поражения(бронежилет как встроить в логику сценария игры)
- работа с АЦП (контроль батарейки как встроить в процесс главного цикла)
и тд

Писать готовыми эти куски не надо, но хотя-бы с какого места начинать их встраивать и предпочтительный способ как реализовать функцию (как автор-основатель это желал бы видеть)


Верно!

А две зоны уже работают!
Одна - по блютус, вторая - провод!
Независимые абсолютно.
Но фича - у блютуса большой кольцевой буфер и он может все попадания запомнить и обработать.
А проводная зона имеет буфер на одно попадание - следующее затирает предидуще.
Батарейка уже контролируется и в главном цикле.
Есть прошива, где при разряде Жирик каждую минуту орет - "Батарея разряжена, все!"

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Последний раз редактировалось Pingvin 16 окт 2014, 19:11, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 19:10 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Я предлагаю вопросы и комментаррии к теме вынести в отделбную ветку, чтобы не нарушать целостность повествования.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 19:14 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Трудящиеся предлагают в настройки добавить выбор количества жизни при старте игры.
Обязательно пошагово распишу, как это сделать и как добавить любую настройку.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 16 окт 2014, 23:35 
Не в сети
Новосел

Зарегистрирован: 01 мар 2013, 11:18
Сообщений: 91
Откуда: Мончегорск Мурманская обл.
Pingvin писал(а):
Трудящиеся предлагают в настройки добавить выбор количества жизни при старте игры.
Обязательно пошагово распишу, как это сделать и как добавить любую настройку.


режим огня: одиночный, очередь, автомат.
параметр установки длины очереди от 2 до 20.
скорость стрельбы. от 250 до 800
длительность перезарядки в секундах.
шок при попадании в секундах когда игрок не может управлять оружием и когда в него не могут попасть.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: API прошивки "Аскета"
СообщениеДобавлено: 17 окт 2014, 05:07 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
loner32 писал(а):
Pingvin писал(а):
Трудящиеся предлагают в настройки добавить выбор количества жизни при старте игры.
Обязательно пошагово распишу, как это сделать и как добавить любую настройку.


режим огня: одиночный, очередь, автомат.
параметр установки длины очереди от 2 до 20.
скорость стрельбы. от 250 до 800
длительность перезарядки в секундах.
шок при попадании в секундах когда игрок не может управлять оружием и когда в него не могут попасть.

Некоторые вещи уже есть (длительность перезарядки), для некоторых придется существенно переписать (дописать) прошивку.
Прошивка не совершенна, есть явно "узкие" места.
Но вижу - народ заинтересован в её развитии, поэтому, общими усилиями и с Божьей помощью будем дорабатывать.

Скорострельность легко добавить, но не в количестве выстрелов в минуту, а в проценте "отсечки" звука.
То есть, при стрельбе очередью, воспроизводится звук выстрела на N%, затем следующий выстрел.
Меняя процент отсечки от 10 (к примеру) до 99 - будет меняться скорострельность в широких пределах.
Это я готов сделать хоть завтра.
Не - сделаем это вместе. ;) :)

А игрок сейчас неуязвим и не может стрелять, пока звук ранения воспроизводится. А точнее - если во время воспроизведения было несколько попаданий, то после воспроизведения в буфере останется только последнее попадание. Но легко сделать, чтобы и оно игнорировалось, после
play_hit_sound()
напишем
rx_event = NOT_EVENT

Это я о проводе.
Блютуска же запомнит все попадания, и я сейчас просто их игнорирую после звука
bt_rx_event = NOT_EVENT

Не пинайте - так сложилось исторически. :?

Все поправимо (исправимо).

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB