Unfortunately, print sequence is not same across different printer models. In order to support a wide model range, print tasks have been implemented.
The name of the print task does not necessarily represent the only model it will work with.
PrintEnd should be sent after the print is finished (progress polling is used).
Used in old D11 models.
Print progress is fetched by continuously waiting In_PrinterPageIndex packet with Data == total pages.
Init:
SetDensity [density(u8)]
SetLabelType [type(u8)]
PrintStart [1(u8)]
Page:
PrintClear [1(u8)]
PageStart [1(u8)]
SetPageSize [rows(u16)]
PrintQuantity [quantity(u16)]
PrintEmptyRow | PrintBitmapRow | PrintBitmapRowIndexed
PageEnd [1(u8)]
End:
(status wait)
PrintEnd [1(u8)]
Print progress is fetched by continuously sending PrintEnd. Print is finished when Data == 1.
Init:
SetDensity [density(u8)]
SetLabelType [type(u8)]
PrintStart [1(u8)]
Page:
PageStart [1(u8)]
SetPageSize [rows(u16), cols(u16)]
PrintEmptyRow | PrintBitmapRow | PrintBitmapRowIndexed
PrinterCheckLine [line(u16), 1(u8)] - after every 200 lines (data example: 00c701, 018f01, 025701, 031f01, ...)
PageEnd [1(u8)]
End:
(status poll)
Used in 203 DPI D110, D11.
Print progress is fetched by continuously sending PrintStatus.
Init:
SetDensity [density(u8)]
SetLabelType [type(u8)]
PrintStart [1(u8)]
Page:
PrintClear [1(u8)]
PageStart [1(u8)]
SetPageSize [rows(u16), cols(u16)]
PrintQuantity [quantity(u16)]
PrintEmptyRow | PrintBitmapRow | PrintBitmapRowIndexed
PageEnd [1(u8)]
End:
(status poll)
PrintEnd [1(u8)]
Used in most printers released recently (2024).
Print progress is fetched by continuously sending PrintStatus.
Init:
SetDensity [density(u8)]
SetLabelType [type(u8)]
PrintStart [totalPages(u16), 0(u8), 0(u8), 0(u8), 0(u8), pageColor(u8)]
Page:
PageStart [1(u8)]
SetPageSize [rows(u16), cols(u16), copiesCount(u16)]
PrintEmptyRow | PrintBitmapRow | PrintBitmapRowIndexed
PageEnd [1(u8)]
End:
(status poll)
PrintEnd [1(u8)]
pageColor is 0
Print progress is fetched by continuously sending PrintStatus. PageStart command is not used.
When printer responds In_PrinterCheckLine after sending bitmap data packet, PrintStatus.
Init:
SetDensity [1b]
SetLabelType [1b]
PrintStart [9b]
Page:
SetPageSize [13b]
PrintEmptyRow [3b] | PrintBitmapRow [dyn] | PrintBitmapRowIndexed [dyn] | (status poll)
PageEnd [1b]
End:
PrintEnd [1b]
(status poll)
pageColor is 0
B21_PRO: for some reason this printer drops the first packet after PrintStart. So you need to send SetPageSize twice. This applies only to Bluetooth connection.