Click to order
Cart
Ваша корзина
Total: 
ФИО
Для транспортных компаний - полностью
Ваш e-mail
Ваш телефон
Комментарий
Промокод
Подписаться на новости
Согласие на обработку персональных данных
Payment method
ODRFID-LAN
сетевой клиент
Сетевой RFID считыватель для работы с сервером
В этом сценарии считыватель передаёт по одному из сетевых протоколов (UDP/TCP/HTTP/HTTPS и т.п.) информацию о прочитанной карте, а сервер (контроллер или ПК) обрабатывает и отправляет команду.
Считыватель предлагает большое количество готовых настроек с Web-интерфейсе:
  • С помощью специальной строки форматирования можно указать считывателю, что требуется считать из карты.
  • Указать протокол передачи идентификатора, адрес и порт.
  • Можно задать тип и содержание ключа шифрования для карт, поддерживающих этот режим.
  • Изменить сетевые настройки
  • Указать сервер точного времени
Раздел "Администрирование" позволяет установить пароль на вход в раздел настроек и отключить редактор кода, а также на установить пароль на вход web-интерфейс.
Программа-сервер
Для вашего удобства вашей разработки мы собрали простую программу-пример сервера на Qt.
Её можно использовать, как шаблон для разработки своего ПО или как демонстрационный софт.
Программа ожидает получения UDP посылки от RFID считывателя
Если полученный идентификатор соответствует записанному в БД, то отображается карточка пользователя.
Иначе - сообщение об ошибке
Описание
Код
Код со второй вкладки реализует следующий алгоритм: устройство ожидает поднесения карты (используется 5 секундный фильтр от повторного срабатывания), при успешном чтении передаёт данные на tcp-сервер. В ответ ожидает команд "GRANTED" - разрешить проход или "BLOCKED" - не разрешать. При открытии двери на сервер отправляется контрольное сообщение "OPENED".

Данный код необходимо ввести в web-редакторе устройства. Нажать "Записать", перенести в постоянную память устройства кнопкой "Во Flash" и перезагрузить.
from time import time
from uasyncio import sleep, wait_for
from machine import WDT
from rfid_utils import RFID, Buzzer, GLED, RLED, CardFilter, OUT
from webserver import eprint
from config import settings
from uasyncio import TCPClient
import usocket

async def recv_wait(client):
    try:
        return await client.recv()
    except Exception as e:
        pass

async def run():
    await eprint("User code started")
    rfid = RFID()
    buz = Buzzer()
    GLED.off()
    RLED.off()
    OUT.on()
    c_filter = CardFilter(5)
    wdt_enabled = settings.get('wdt')
    str_format = settings.get('format')
    dest = settings.get('dest')
    dport = settings.get('dport')
    tcp = TCPClient(dest, dport)

    await buz.beep()
    if wdt_enabled:
        wdt = WDT(timeout=10000)
    await tcp.connect()
    while 1:
        if wdt_enabled:
            wdt.feed()
        c_filter.clean(time())

        uid = rfid.read(str_format)
        if uid and uid not in c_filter:
            c_filter.append(uid)
            await tcp.send(uid+'\n')
            await eprint(uid + ' sent')

        data = await wait_for(recv_wait(tcp), 0.2)
        if data:
            if data.strip() == b'GRANTED':
                await eprint('GRANTED')
                GLED.on()
                await buz.beep()
                GLED.off()
                OUT.off()
                await tcp.send('OPENED')
                await sleep(5)
                OUT.on()
            elif data.strip() == b'BLOCKED':
                await eprint('BLOCKED')
                RLED.on()
                await buz.beep(500)
                RLED.off()
Дополнительные ресуры
  1. Общая инструкция в PDF,
  2. Техподдержка,
  3. Руководство по языку MicroPython,
  4. Инструкция asyncio,
  5. Инструкции "Как написать свою программу".