8000 GitHub - lapkoshka/rts: Race Timing System
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

lapkoshka/rts

Repository files navigation

RTS

Приложение регистрирует участников соревнования и устанавливает лучшее время круга при участии в гонке.

В процессе используются два RFID считывателя и EPC-метки. Участник прислоняет свою метку к портативному считывателю и в приложении всплывает окно регистрации участника. Администратор приложения регистрирует участника и далее, главный считыватель расположенный на гоночной трассе присылает в приложение метки (если он активирован), по которым и считаются результаты гонки для каждого зарегистрированного участника.

Разработка

Установи зависимости, собери серверную и клиенсткую часть, запусти electron выполнив в терминале:

npm install
npm run server-watch
npm run dev

Приёмники (Windows)

Если ты на Linux или Mac то этот шаг можно пропустить.

  • Скачай готовые бинари https://github.com/lapkoshka/rts/releases -> bin.zip -> разархивируй в корень проекта в папку bin

  • Либо собери в Visual Studio файлы проектов .sln из папки core, затем скопируй скомпилированные приложения и библиотеки в папку bin командой npm run ub скопирует скомпилированные бинари приложений ядра в папку bin (выполнять после перекомпиляции .NET приложений)

Исправление ошибок

  • В случае с ошибкой sqlite3: \node_modules\sqlite3\lib\binding\electron-v2.0-win32-x64\node_sqlite3.node' выполни

install-app-deps

https://stackoverflow.com/questions/32504307/how-to-use-sqlite3-module-with-electron

Симуляция приёмников

Если у тебя нет двух китайских Chafon CF-RU6403 R2000 и UHF Reader 09 то в консоли приложения можно набрать fakePortableTag(uid: string) чтобы симулировать приход метки для портативного приёмника и fakeMainTag(uid: string, rssi: number) для главного.

Архитектура

Core

В папке core находится два проекта .NET

  • MainReaderAdapter - находит IP главного считывателя в локальной сети с помощью библиотеки dmdll.d 72D3 ll, за это отвечает модуль Search.cs. Далее подключается по установленному адресу к приемнику - модуль MainReader.cs.
  • PortableReader - подключается по COM порту, устройство должно быть подключено в USB, драйвера на Windows должны быть установлены, загрузка: https://github.com/lapkoshka/rts/releases

Оба проекта на выходе представляют собой консольные приложения, на ввод ожидают команд на подключение к устройствам, на вывод шлют данные о найденных EPC-метках. Команды можно найти в enum типа ProtocolMessages в папке src/lib/readers.

Backend

  • спавн .net приложений
  • обертка для ввода-вывода в виде модулей MainReader и PortableReader, подписка на пришедшие теги. В модуле root.ts подписка и логика разделена по смысловым модулям-контроллерам, логика гонок зашита там же.
  • Файл services.ts инициализрует контроллеры, сами контроллеры служат точкой обработки событий с фронта на бек и обратно.

БД

  • Все запросы в БД осуществляются через интерфейс dbMorda[type][methodName]
  • Есть недоработки по созданию и подготовке БД к использованию (асинхронность)
  • кэшируется в нескольких местах, в основном там где большой поток меток должен быть ассоциирован с пользователем, следует обратить внимание на модуль database/cache.ts

Frontend

React+Redux, в компонентах-контейнерах живет шина общения с главным процессом ноды - ipc. Обменивается только теми событиями которые нужны компоненту.

About

Race Timing System

Resources

Stars

Watchers

Forks

Packages

No packages published
0