Документация команд устройства
Структуры пакетов
Структура пакета команды
| Байт | Значение |
|---|---|
| 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.
Данные передаются пакетами (порциями).