== Вендинговый матричный контроллер доступа == == Описание == Матричный контроллер позволяет управлять матрицей эектромагнитных защелок с управляющего компьютера (хоста) через интерфейс RS232. Дополнительно контроллер управляет двумя линиями 12В и анализирует показания датчика открытия двери. Хост выдает команды (STATUS, OPEN, POWERON) на контроллер. == Подключение == [[Image(vendmatrix.png)]] == Демонстрационная утилита == Демонстрационная утилита позволяет управлять контроллером с командной строки. Исходный код утилиты и exe-файл см. в аттаче (запускать с командной строки из каталога exe-файлом). Варианты запуска: Проверка доступности устройства: {{{ protodemo.exe COM1 ping }}} Проверка статуса: {{{ protodemo.exe COM1 status }}} Открытие электромагнитной защелки 2 ряд 3 колонка на период до 10 секунд (или до закрытия двери). {{{ protodemo.exe COM1 open 2 3 10 }}} Включение линии 1 на 2 минуты (120 секунд) {{{ protodemo.exe COM1 poweron 1 120 }}} == API == Управление контроллером с хоста осуществляется через порт RS232 Параметры последовательного порта: * Baudrate: 115200 * Parity: none * 8 bits * 1 STOP контроллер и хост обмениваются командами и данными, инкапсулированными в пакеты следующего формата: * (1 байт) sync - байт синхронизации, 0x55 * (1 байт) size - размер пакета (включая sync и crc) * (2 байта) адрес устройства, иные параметры - не используются, передавать 0x00 0x00 * (1 байт) cmd/response - код команды * (N байт) data - блок данных команды (может быть пустым) * (2 байта) crc - контрольная сумма CRC16-CCIT == PING (0x01): проверка связи с устройством == Без данных. Успешный ответ на команду (response = 0x01) поступает без данных. == OPEN (0x02): открытие защелки == Данные: * 1 байт - ряд защелки (нумерация с нуля: 0-7) * 1 байт - столбец защелки (нумерация с нуля: 0-7) * 2 байта - время открытия в секундах (Big Endian, например 300 сек = 0x01 0x2C). Если время открытия равно нулю, то защелка принудительно закрывается. Все защелки до закрытия команды закрываются. Успешный ответ на команду (response = 0x02) поступает без данных, ошибка (response = 0x00) поступает с кодом ошибки размером 1 байт в блоке данных. Закрытие защелки производится автоматически, если было обнаружено закрытие двери. Устройство переходит в режим Занято (BUSY) на время открытия защелки и на период, пока дверь не закрыта. == STATUS (0x03): текущее состояние устройства == Без данных, запрашивает текущее состояние устройства. В ответе (response = 0x01) в блоке данных последовательно возвращаются: * 1 байт: статус датчика открытия двери (0x01 - все двери закрыты, 0x00 - хотя бы одна дверь открыта) * 2 байт: оставшееся время открытия двери в секундах (0 - двери закрыты) * 2 байта: оставшееся время включения линии 1 в секундах (0 - линия выключена) * 2 байта: оставшееся время включения линии 2 в секундах (0 - линия выключена) * Дополнительные параметры статуса (не регламентированы на данный момент) == POWERON (0x04): включение линии 12В == Данные: * 1 байт - номер линии (1 или 2) * 2 байта - время включения в секундах (Big Endian, например 300 сек = 0x01 0x2C). Если время включения равно нулю, то линия принудительно выключается. Успешный ответ на команду (response = 0x04) поступает без данных, ошибка (response = 0x00) поступает с кодом ошибки размером 1 байт в блоке данных.