www.open-tager.ru

открытый лазертаг форум
Текущее время: 23 ноя 2024, 13:14

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


Реклама

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


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



Начать новую тему Ответить на тему  [ Сообщений: 296 ]  На страницу Пред.  1 ... 18, 19, 20, 21, 22, 23, 24 ... 30  След.
Автор Сообщение
 Заголовок сообщения: Re: Android Лазертаг система
СообщениеДобавлено: 08 сен 2015, 10:43 
Не в сети
Аксакал форума

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Pingvin писал(а):
Гаджеты можно копеечными сделать. К примеру, повязку - только на одном блютус модуле, без дополнительного контроллера, тут обсуждалось.
Не сделать за копейки - ещё никто не смог сделать, хотя конечно возможно если вы меценат или спонсор всея руси :D
Бесплатно можно только нематериальные вещи раздавать, когда копия ничего не стоит ...

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


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

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

Дилемма, а то и трилемма - как распределить полномочия между тагом, повязкой и смартфоном?

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

То есть, исходя из условий задачи - смартфон "умным" (хранить в себе настройки игрока и оружия) быть не может.
Смартфон используется в полностью прозрачном режиме (PROXY MODE) и выполняет роль коммуникатора с сервером.
А так же отображает игровые параметры, сообщения от сервера и т.д.

Остается дилемма - "умная" повязка, или "умный" таг?
На Аскете таг ведуший.
Если попытаться сохранить обратную совместимость - играть на Аскетах с новой повязкой Армада - таг надо оставлять "умным".

Но чёрт кроется в деталях.
Если таг умный - подбор трофейного оружия реализовать сложнее.

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


В общем - в раздумьях....

Что посоветуете?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Android Лазертаг система
СообщениеДобавлено: 11 сен 2015, 08:45 
Не в сети
Аксакал форума
Аватар пользователя

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

Работы много, задачи непростые, аж немного боязно приступать. :?

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


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

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

http://vk.com/doc295953584_375295824

Не желаете поучаствовать в его разработке?
Дабы была совместимость.

Вот пример использования

Код:
#define LOW(val) (val&0x00ff)
#define HIGH(val) ((val&0xff00)>>8)



quint8 LasertagSystem::calculateCheckSun(QByteArray data)
{
    quint8 sum;
    sum=0;
    for(int i=0;i<data.size() ; i++)
    {
        sum = sum^data.at(i);
    }
    return sum;
}



QByteArray LasertagSystem::transportHeader(QString preamble, uint8_t player_id, uint8_t team_id, uint16_t club_ID, uint16_t zone_id, uint16_t data_Length, uint8_t data_CS)
{
    QByteArray result;
    result.clear();
    result.append(preamble);
    result.append(player_id);
    result.append(team_id);
    result.append(LOW(club_ID));
    result.append(HIGH(club_ID));
    result.append(LOW(zone_id));
    result.append(HIGH(zone_id));
    result.append(LOW(data_Length));
    result.append(HIGH(data_Length));
    result.append(data_CS);
    return result;
}

QByteArray LasertagSystem::createTransportPackage(QString preamble, uint8_t player_id, uint8_t team_id, uint16_t club_ID, uint16_t zone_id, QByteArray data)
{
    QByteArray header;
    qint8 dataCS;
    qint8 headerCS;
    dataCS = calculateCheckSun(data);
    header = transportHeader(preamble, player_id, team_id, club_ID,zone_id,data.size(),dataCS);
    headerCS = calculateCheckSun(header);
    header.append(headerCS);
    header.append(data);
    return header;
}




void LasertagSystem::tcpSocketConnected()
{
    QByteArray header, tmp;
    setTcpServerLedSrc("qrc:/images/led-green-on.png");
    emit tcpConnected();
    tcpSocket->write("Hello!!!");
    dataToTransport.clear();
    dataToTransport.append("1234567890");
    tcpSocket->write(createTransportPackage("@HSL",1,2,3,4,dataToTransport));
    tcpSocket->write("MYCOP");
    dataToTransport.clear();
    dataToTransport.append("Test! Super test!!!");
    tcpSocket->write(createTransportPackage("@HSL",1,2,3,4,dataToTransport));
}




И что самое интересное - оно работает! ;)

До 64 КБт данных - одним плевком.
Это аватарка с эмблемой клуба спокойно поместятся (в jpeg формате).

Вот реализация приема на серверной части

Код:
void MyThread::readyRead()
{
    // get the information
    QByteArray Data = socket->readAll();
 //emit socketClosed((qintptr)socketDescriptor);
    // will write on server side window
    qDebug() << socketDescriptor << " Data in: " << Data;
    parsingData(Data);
    socket->write(Data);

}

void MyThread::parsingData(QByteArray data)
{
    int index;
    buffer.append(data);
    data.clear();
    if(!preambleReceived)//если преамбула ещё не получена
    {
        index = buffer.indexOf("@HSL");//ищем преамбулу

        if (index != -1) //найдена преамбула
        {
            preambleReceived = true;
            buffer = buffer.mid(index);//удаляем данные до преамболы
            if (buffer.size() > 0) parsingData(data);//рекурсивный вызов
        }
    }
    else //приамбула уже получена
    {
       if (!headerRecieved)//заголовок ещё не получен
       {

           if (buffer.size() >= 14)//если все байты заголовок получен
           {
               headerRecieved = check_header();//проверяем контрольную сумму заголовка
               if(headerRecieved)//если заголовок корректный
               {
                   if (buffer.size() > 0) parsingData(data); //рекурсивный вызов
               }
               else //заголовок не корректный, ошибка
               {
                   buffer = buffer.mid(14);//удаляем битый заголовок
                   preambleReceived = false; //начинаем искать следующий заголовок

                   if (buffer.size() > 0) parsingData(data);//рекурсивный вызов
               }

           }

 
       }
       else //корректный заголовок получен
       {
           qint16 data_len;
           data_len = buffer.at(11);
           data_len =  data_len << 8;
           data_len |= buffer.at(10);
           if (buffer.size() >= (data_len+14))//все ли байты данных получены?
           {                                  //все получены
               QByteArray data_tmp;
               quint8 checkSUM;
               data_tmp = buffer.mid(14); //выдергиваем из пакета только прикрепленные данные
               data_tmp = data_tmp.left(data_len);
               checkSUM =  calculateCheckSun(data_tmp);
               if(checkSUM == buffer.at(12))//получен целый пакет, контрольная сумма совпадает
               {
                   RX_Package = buffer.left(data_len+14);//готовим пакет для выдачи "наверх"
                   buffer = buffer.mid(data_len+14);
                   emit incomingPackage((int)socketDescriptor, RX_Package);//сигналим, что пакет получен
                   headerRecieved = false;
                   preambleReceived = false;
                   data.clear();
                   if(buffer.size()>0)//если буфер не пустой
                    {
                       parsingData(data); //рекурсивный вызов
                    }
                }
               else //ошибка, не совпадает контрольная сумма данных
               {
                     buffer = buffer.mid(14);//удаляем из буфера заголовок
                     headerRecieved = false;
                     preambleReceived = false;
                     if(buffer.size()>0)//если буфер не пустой
                      {
                         parsingData(data); //рекурсивный вызов
                      }
               }
                   int i;
               i++;

           }
           else//ещё не все данные получены, дождемся следующей порции данных
           {
           }
       }

    }

}

bool MyThread::check_header()
{
    quint8 sum;
    sum=0;
    for(int i=0;i< 14-1 ; i++)
    {
        sum = sum^buffer.at(i);
    }
    if (sum == buffer.at(13)) return true;
    else return false;
}

quint8 MyThread::calculateCheckSun(QByteArray data)
{
    quint8 sum;
    sum=0;
    for(int i=0;i<data.size() ; i++)
    {
        sum = sum^data.at(i);
    }
    return sum;
}



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


Последний раз редактировалось Pingvin 11 сен 2015, 11:03, всего редактировалось 1 раз.

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

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Pingvin писал(а):
Alexies, как вам идея создания транспортного протокола под наши задачи?
Дабы была совместимость.
Есть куча готовых протоколов FTP, smtp, xmpp, HTTP наконец.
Всё уже написано до нас только библиотеки прикрутить к проекту.
Чем ваш протокол должен получится лучше ?
Какие нерешённые ранее задачи планируете реализовать ?
Как данный протокол будет интегрироваться в уже имеющиеся веб серверы ?

ЗЫ. Когда нечего делать https://www.youtube.com/watch?v=qiJHRn0f8yE
Кстати транспортный протокол использованный в вашем примере кода просто TCP, предполагаю вы говорите всё-таки о прикладном уровне :P


PS2. Не надо изобретать велосипедов, вот из заметок http://catethysis.ru/mcu_json_parse/ на МК не тестировал, но для веб/серверных приложений JSON типовое решение.
И ещё ликбез почитать http://derevyanko.blogspot.ru/2014/01/rest-android-1.html

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


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

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
LTagKirov писал(а):
Pingvin писал(а):
Alexies, как вам идея создания транспортного протокола под наши задачи?
Дабы была совместимость.
Есть куча готовых протоколов FTP, smtp, xmpp, HTTP наконец.
Всё уже написано до нас только библиотеки прикрутить к проекту.
Чем ваш протокол должен получится лучше ?
Какие нерешённые ранее задачи планируете реализовать ?
Как данный протокол будет интегрироваться в уже имеющиеся веб серверы ?

ЗЫ. Когда нечего делать https://www.youtube.com/watch?v=qiJHRn0f8yE
Кстати транспортный протокол использованный в вашем примере кода просто TCP, предполагаю вы говорите всё-таки о прикладном уровне :P

Извините - бред пишите!
Начни делать свою систему, может тогда поймете "зачем".
Я к Alexies обращался.
Ваше мнение и так знаю, предсказуемо.

А JSON дальше пойдет - от LT Servera до WEB сервера.
Делать нехрен - корячить его на смартфон?
Тем более - в контроллер!

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


Последний раз редактировалось Pingvin 11 сен 2015, 11:14, всего редактировалось 1 раз.

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

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Pingvin писал(а):
Начни делать свою систему, может тогда поймете "зачем". Ваше мнение и так знаю, предсказуемо.

Мы и делаем, правда за деньги, а не бесплатно, не опенсурс и не лазертаг, но всё равно весьма полезную для народного хозяйства, иначе бы заказчик не стал платить 8-) Вы же хотите соеденить лазертаг поделки с волшебным сервером в интернете, так посмотрите как это решается в реальных рабочих системах, не варитесь в собственном соку.

Pingvin писал(а):
Делать нехрен - корячить его на смартфон?

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

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


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

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

Пока реализую как умею и как могу.

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


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

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

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


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

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

WEB сервак сам я точно не напишу.
А вот серверное приложение (не WEB) - запросто.

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


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 296 ]  На страницу Пред.  1 ... 18, 19, 20, 21, 22, 23, 24 ... 30  След.

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


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

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


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

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