Есть (были) такие термопринтеры Paperang. Вот только оказалось, что под капотом там несколько протоколов. Изначально пакеты обрамлялись байтами 0x02 ... 0x03.
Насчитал еще три варианта: с первыми байтами 0x07 , 0xA5 и вариант общения по IPP.
Разбирался с Paperang P2.
{0xA5, 0x01} - префик
два байта длины
полезная нагрузка
crc32(4 байта)
0x5A - суффикс
{5,0x19,1,0,0}
5 - команда относится к термопечати
25 - начало передачи растра изображения
третий байт может быть 1/2/3 - АХЗ. В респонсе обычно 2. В данных, которые посылаются на принтер 1 (из андроид приложения) или 3 ( драйвера под винду)
int16(0) - длина аргументов
Сам растер засылается по типу матрешки. (тип,длина,((тип,длина,данные),(тип,длина,((тип,длина,(данные))))))