www.open-tager.ru

открытый лазертаг форум
Текущее время: 26 ноя 2024, 08:30

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


Реклама

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


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



Начать новую тему Ответить на тему  [ Сообщений: 5319 ]  На страницу Пред.  1 ... 411, 412, 413, 414, 415, 416, 417 ... 532  След.
Автор Сообщение
 Заголовок сообщения: Re: LTAscetik
СообщениеДобавлено: 11 ноя 2014, 15:09 
Не в сети
Новосел

Зарегистрирован: 01 мар 2013, 11:18
Сообщений: 91
Откуда: Мончегорск Мурманская обл.
если LCD просто отключили шифрование и оборудование на протоколе MilesTag заработало с LCD и мы превосходно провели время сыграв в месте 40 на 40 то полегон64 нервно курил наблюдая за месивом


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: LTAscetik
СообщениеДобавлено: 11 ноя 2014, 17:12 
Не в сети
Местный

Зарегистрирован: 09 май 2013, 15:47
Сообщений: 487
Откуда: Россия, Пермь.
loner32 писал(а):
если LCD просто отключили шифрование и оборудование на протоколе MilesTag заработало с LCD и мы превосходно провели время сыграв в месте 40 на 40 то полегон64 нервно курил наблюдая за месивом

У п64 заявлена была возможность совместимости с майлс, врут чтоли? ))


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

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

Блютуска то все выплюнет, что в неё поступило, а вот в Аскете кольцевой буфер на 256 байт - на 16 выстрелов, с учетом заголовка и таймаута.

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

Это все мои догадки, надо будет серьёзно исследовать причину.
Первым делом проверить, что идет от повязки.


Самый простой выход - очищать буфер после воспроизведения звука.
Можно буфер увеличить, но не панацея, если скорострельность будет выше и он забьется.
Ещё вариант - переработать систему воспроизведения звуков.
У нас только выстрел воспроизводится "фоном", остальные блокируют главный цикл на время воспроизведения.

Так что ...
Какие будут мысли? :?

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


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

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

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Цитата:
//прерывание по завершению приема
ISR(USART_RXC_vect)
{
if (rxCount < SIZE_BUF){ //если в буфере еще есть место
usartRxBuf[rxBufTail] = UDR; //считать символ из UDR в буфер
if (usartRxBuf[rxBufTail]=='\r')
{
cr_received=true;
}
rxBufTail++; //увеличить индекс хвоста приемного буфера
if (rxBufTail == SIZE_BUF) rxBufTail = 0;
rxCount++; //увеличить счетчик принятых символов
}
}


Цитата:
//чтение буфера
unsigned char USART_GetChar(void)
{
unsigned char sym;
if (rxCount > 0){ //если приемный буфер не пустой
sym = usartRxBuf[rxBufHead]; //прочитать из него символ
rxCount--; //уменьшить счетчик символов
rxBufHead++; //инкрементировать индекс головы буфера
if (rxBufHead == SIZE_BUF) rxBufHead = 0;
return sym; //вернуть прочитанный символ
}
return 0;
}


:? :?: :|

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


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

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Либо тут косяк
Цитата:
/*****************************************
* Èçâëåêàåì äàííèå èç ïàêåòà, ïðèíÿòîãî ïî áëþòóñ
******************************************/

trx_event parsing_bt_data(void) //àíàëèçèðóåì ïàêåò, ïîëó÷åííûé ïî áëþòóñ, èçâåêàåì èç íåãî äàííûå
{
volatile unsigned char tmp_char;
trx_event result;

result = NOT_EVENT;

while (rxCount)//ïîêà íå ñ÷èòàåì âñå ñèìâîëû èç áóôåðà
{
tmp_char = USART_GetChar();
switch(tmp_char)
{
case 'h'://íàøëè çàãîëîâîê ïàêåòà
{
bt_header_received = true; //ôèêñèðóåì ïîëó÷åíèå çàãîëîâêà
bit_in_bt_rx_buff=0;//ñòàâèì êóðñîð â íà÷àëî áóôåðà ïàêåòà
}
break;
case '0'://ïîëó÷åí áèò "0"
{
if(bt_header_received) set_bt_buffer_bit(bit_in_bt_rx_buff++, false);//åñëè çàãîëîâîê ïîëó÷åí, çàíîñèì çíà÷åíèå áèòà â áóôåð ïàêåòà
}
break;
case '1'://ïîëó÷åí áèò "1"
{
if(bt_header_received) set_bt_buffer_bit(bit_in_bt_rx_buff++, true);//åñëè çàãîëîâîê ïîëó÷åí, çàíîñèì çíà÷åíèå áèòà â áóôåð ïàêåòà
}
break;
case 'e'://ïàêåò áèòûé
{
bt_header_received = false;//íóæíî èñêàòü ñëåäóþùèé çàãîëîâîê
return RX_ERROR;//âûõîäèì ñ îøèáêîé
}
break;
case 't'://òàéìàóò ïðèåìà áèòà
{

if((bt_header_received)&&(bit_in_bt_rx_buff>0))//åñëè çàãîëîâîê ïîëó÷åí è áóôåð ïàêåòà íå ïóñòîé
{



switch(bit_in_bt_rx_buff)//ïðîâåðèì, ñêîëüêî áèò ïðèíÿòî
{
case 14:
{
result = RX_COMPLETE; //Ãåíåðèì ñîáûòèå "ïðèíÿò ïàêåò"
break;
}
case 24:
{
result = RX_MESSAGE_COMPLITE;//ïðèíÿòî ñîîáùåíèå;
break;
}
default:
{
result = RX_ERROR; //ãåíåðèðóåì ñîáûòèå - "îøèáêà ïðè¸ìà"
}
}

bt_header_received = false;//çàãîëîâîê îáðàáîòàëè
// return RX_COMPLETE;//âûõîäèì ñ ñîîáùåíèåì î ïîëó÷åíèè ïàêåòà
}
else
{
bt_header_received = false;//çàãîëîâîê îáðàáîòàëè
}
}
break;

}



}

//âñ¸ ñ÷èòàëè, ñîáéòèé íåò
return result;


Похоже - тут напортачил!

Нужно выйти из функции с результатом, когда таймаут зафиксирован!
Цитата:
case 't'://òàéìàóò ïðèåìà áèòà
{

if((bt_header_received)&&(bit_in_bt_rx_buff>0))//åñëè çàãîëîâîê ïîëó÷åí è áóôåð ïàêåòà íå ïóñòîé
{



switch(bit_in_bt_rx_buff)//ïðîâåðèì, ñêîëüêî áèò ïðèíÿòî
{
case 14:
{
result = RX_COMPLETE; //Ãåíåðèì ñîáûòèå "ïðèíÿò ïàêåò"
break;
}
case 24:
{
result = RX_MESSAGE_COMPLITE;//ïðèíÿòî ñîîáùåíèå;
break;
}
default:
{
result = RX_ERROR; //ãåíåðèðóåì ñîáûòèå - "îøèáêà ïðè¸ìà"
}
}

bt_header_received = false;//çàãîëîâîê îáðàáîòàëè
return result;
// return RX_COMPLETE;//âûõîäèì ñ ñîîáùåíèåì î ïîëó÷åíèè ïàêåòà
}
else
{
bt_header_received = false;//çàãîëîâîê îáðàáîòàëè
}
}
break;

}


А у меня событие произошло, нет, чтобы бросить все и обработать - продолжаю считывать из буфера UART и затираю ещё не обработанный пакет!
Завтра буду пробовать.

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


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

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

Причем накосячил, когда понимание команд добавлял, изначально то выход был (закоммичен).

Теперь такой расклад, если мы после обработки попадания чистим буфер UART
USART_FlushRxBuf();
bt_header_received=false;

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

Если эти строки закоммитем

Цитата:
void test_bt_data()
{

switch(parsing_bt_data())//проверим роиемный буфер
{
case RX_COMPLETE: //получен пакет
{
if(!get_bt_buffer_bit(0)) //если этот бит равен 0, то это пакет с данными (выстрел)
{
bt_rx_packet = get_bt_packet_value();
hit_processing(bt_rx_packet);
/*
USART_FlushRxBuf();
bt_header_received=false;
*/

}

}
break;
case RX_ERROR: //ошибка приема
{


то всё, что попало в буфер - обработается.

Выглядит нелепо, конечно.
Дал очередь, прекратил уже стрелять, а таг ещё несколько раз кричит "я ранен".
Но можно звук проиграть один раз, а урон суммарный посчитать.

Короче - выбор есть, и это хорошо!

Так то оно лучше будет! ;) :D


Надо ещё пульт собрать, а то готовый неохота разбирать.


Вложения:
LTAscetic_Atmega32_bt_parsing_fix.zip [351.95 KiB]
Скачиваний: 257

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: LTAscetik
СообщениеДобавлено: 12 ноя 2014, 10:57 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 мар 2012, 11:27
Сообщений: 1497
хмм.. я правильно понимаю что в одном случае у вас в качестве реального спаса-шока выступает длиттельность проигрыша звука ранения? если это так то такой вариант - эо однозначно не айс - это чит , которым могт воспользоваться нерадивые игроки...

_________________
Пенни: Как заколки могут привлечь мужчин?
Говард: Добавим туда блютус!!!
Шелдон: Гениально! Мужчины обожают блютус!
Пенни: Вы собираетесь сделать заколку с блютус?
Шелдон: Все становится лучше когда есть блютус! (с) Теория Большого Взрыва


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

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

Москва не сразу строилась. ;) :)
Я вообще пока мало представления имею о всех этих "спасах" и "шоках" - как оно работает и для чего нужно?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: LTAscetik
СообщениеДобавлено: 12 ноя 2014, 13:20 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 мар 2012, 11:27
Сообщений: 1497
система спаса/шок.
Спас - это время за которое пораженный комплект неуязвимый. Вводится длятого чтобы попавший под обстрел имел шанс уйти с линии огня.
Шок/нокаут - это время за которое пораженный комплект не может стрелять. Вводится для того чтобы будучи неуязвимым от спаса человек не мог открыть ответный огонь.
По опыту стараются спас денлать меньше нокаута/шока чтобы стимулировать активность - т.к. атакующий всегда имеет преимущество...
В редких случаях делают равным, но вменяемые никогда не сделают спас больше нокаута - это сразу поднимает уровень истерии игроков на поле из -за возможности неуязвимых бойцов вести огонь.

По соотношению спас/нокаут в серьезных "злых" клубах полигона система 0,5с/1с, иногда вводят послабже - 1с/2с... Первый вариант позволяет с точной короткой очереди очереди вынести игрока, никаких бегов вокруг колонн и труб не получается...

_________________
Пенни: Как заколки могут привлечь мужчин?
Говард: Добавим туда блютус!!!
Шелдон: Гениально! Мужчины обожают блютус!
Пенни: Вы собираетесь сделать заколку с блютус?
Шелдон: Все становится лучше когда есть блютус! (с) Теория Большого Взрыва


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: LTAscetik
СообщениеДобавлено: 12 ноя 2014, 13:34 
Не в сети
Аксакал форума
Аватар пользователя

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

По соотношению спас/нокаут в серьезных "злых" клубах полигона система 0,5с/1с, иногда вводят послабже - 1с/2с... Первый вариант позволяет с точной короткой очереди очереди вынести игрока, никаких бегов вокруг колонн и труб не получается...

Спасибо.
Понятно.

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


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5319 ]  На страницу Пред.  1 ... 411, 412, 413, 414, 415, 416, 417 ... 532  След.

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


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

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


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

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