Приложение регистрирует участников соревнования и устанавливает лучшее время круга при участии в гонке.
В процессе используются два RFID считывателя и EPC-метки. Участник прислоняет свою метку к портативному считывателю и в приложении всплывает окно регистрации участника. Администратор приложения регистрирует участника и далее, главный считыватель расположенный на гоночной трассе присылает в приложение метки (если он активирован), по которым и считаются результаты гонки для каждого зарегистрированного участника.
Установи зависимости, собери серверную и клиенсткую часть, запусти electron выполнив в терминале:
npm install
npm run server-watch
npm run dev
Если ты на 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 находится два проекта .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.
- спавн .net приложений
- обертка для ввода-вывода в виде модулей MainReader и PortableReader, подписка на пришедшие теги. В модуле root.ts подписка и логика разделена по смысловым модулям-контроллерам, логика гонок зашита там же.
- Файл services.ts инициализрует контроллеры, сами контроллеры служат точкой обработки событий с фронта на бек и обратно.
- Все запросы в БД осуществляются через интерфейс
dbMorda[type][methodName]
- Есть недоработки по созданию и подготовке БД к использованию (асинхронность)
- кэшируется в нескольких местах, в основном там где большой поток меток должен быть ассоциирован с пользователем, следует обратить внимание на модуль database/cache.ts
React+Redux, в компонентах-контейнерах живет шина общения с главным процессом ноды - ipc. Обменивается только теми событиями которые нужны компоненту.