Skip to content

Документация команд устройства

Структуры пакетов

Структура пакета команды

Байт Значение
0 0x23 «#», всегда только это значение
1 0x43 «С», всегда только это значение
2 0x4D «M», всегда только это значение
3 0x44 «D», всегда только это значение
4 CMD_CODE, код команды
5 CMD_LENGTH, количество байт данных в команде (не более 4). Можно всегда отправлять 4
6 SEQ_NUMBER(low byte), номер последовательности (любое число). Возвращается в ответе на команду в неизменном виде.
7 SEQ_NUMBER(high byte), номер последовательности (любое число). Возвращается в ответе на команду в неизменном виде.
8.. DATA. Данные, необходимые для выполнения команды. Количество байт определяется полем CMD_LENGTH

Структура пакета ответа

Байт Значение
0 0x23 «#», всегда только это значение
1 0x41 «A», всегда только это значение
2 0x4E «N», всегда только это значение
3 0x53 «S», всегда только это значение
4 ANS_CODE, код ответа 0x2B «+», команда выполнена успешно 0x2D «-», команда не выполнена 0x3F «?», команда неизвестна
5 ANS_LENGTH, количество байт данных в ответе (не более 4). Сейчас всегда равно 2
6 SEQ_NUMBER(low byte), номер последовательности. Возвращается в ответе на команду в неизменном виде.
7 SEQ_NUMBER(high byte), номер последовательности. Возвращается в ответе на команду в неизменном виде.
8.. ANS_DATA . Данные, результат выполнения команды. Количество байт определяется полем ANS_LENGTH

Структура пакета данных

Байт Значение
0 0x23 «#», всегда только это значение
1 0x44 «D», всегда только это значение
2 0x41 «A», всегда только это значение
3 0x54 «T», всегда только это значение
4 DATA_LENGTH[0], младший байт размера данных в пакете. Размер данных в байтах
5 DATA_LENGTH[1], старший байт размера данных в пакете. Размер данных в байтах.
6.. данные

Значение DATA_LENGTH всегда чётное, то есть количество байт данных в пакете кратно 2.
Пакеты содержат не менее 400 байт данных (так реализована электроника), кроме последнего.

Список команд

WR_CR. Записать контрольный регистр

CMD_CODE = 0x01
CMD_LENGTH = 2
Поле DATA содержит новое состояние контрольного регистра.

Поле ANS_DATA в ответе содержит 0.

WR_TIMER. Установить таймер

CMD_CODE = 0x02
CMD_LENGTH = 4
Поле DATA содержит новое значение таймера.
DATA[0] = счётчик, младший байт
DATA[1] = счётчик, старший байт
DATA[2] = множитель
DATA[3] = 0

Поле ANS_DATA в ответе содержит 0.

WR_PIXEL_NUMBER. Количество данных в линии

CMD_CODE = 0x0C
CMD_LENGTH = 2
Поле DATA содержит новое значение количества данных в линии.
DATA[0] = младший байт
DATA[1] = старший байт

Поле ANS_DATA в ответе содержит 0.

RD_ERRORS. Прочитать ошибки

CMD_CODE = 0x92
CMD_LENGTH = 0
Поле DATA отсутствует.

Поле ANS_DATA в ответе содержит информацию об ошибках.
Если ANS_DATA равно 0, то ошибок нет.
Если bit0 ANS_DATA[0] равен 1, то ошибка переполнения фифо (потеря данных).

RD_VER. Прочитать версию

CMD_CODE = 0x91
CMD_LENGTH = 0
Поле DATA отсутствует.
Поле ANS_DATA в ответе содержит информацию об ошибках.
ANS_DATA[0] младший байт версии.
ANS_DATA[1] старший байт версии.
Версия = ANS_DATA[1].ANS_DATA[0]

Например. ANS_DATA[0] = 0, ANS_DATA[1] = 1, значит Версия = 1.0.

GET_KADR. Прочитать кадр

CMD_CODE = 0x05
CMD_LENGTH = 4
Поле DATA содержит количество линий в кадре.
DATA[0] = младший байт
DATA[1] = байт 2
DATA[2] = байт 3
DATA[3] = старший байт

Поле ANS_DATA в ответе содержит 0.

В результате выполнения команды устройство отправляет данные с линейки.
Один пиксель = 2 байта.
Количество пикселей в линии PIXEL_NUMBER = установленному командой WR_PIXEL_NUMBER.
Количество линий LINE_NUMBER в кадре = числу в поле DATA.

Общее количество пикселей в кадре = PIXEL_NUMBER * LINE_NUMBER.
Общее количество байт в кадре = PIXEL_NUMBER * LINE_NUMBER * 2.
Данные передаются пакетами (порциями).