I found the code here:
github.com/maartenvds/libseek-thermalwritten in C on linux
the initial command are simmilar to seek thermal,if you have seem the seek thermal initial command,you'll easily understand it.
the device command seems the same as seek thermal.
GET_FACTORY_SETTINGS = 58
SET_FACTORY_SETTINGS= 57
GET_IMAGE_PROCESSING_MODE= 3f
......
in hex
FIRST:
ControltransferOut 41 54 0000 0000 0001 1 = 01
ControltransferOut 41 3c 0000 0000 0002 2 = 00 00
ControltransferIn c1 4e 0000 0000 0004 4
ControltransferIn c1 36 0000 0000 000c 12
ControltransferOut 41 56 0000 0000 0006 6 = 06 00 08 00 00 00
ControltransferIn c1 58 0000 0000 000c 12
ControltransferOut 41 55 0000 0000 0002 2 = 17 00
ControltransferIn c1 4e 0000 0000 0040 64
ControltransferOut 41 56 0000 0000 0006 6 = 01 00 00 06 00 00
ControltransferIn c1 58 0000 0000 0002 2
ControltransferOut 41 56 0000 0000 0006 6 = 01 00 01 06 00 00
ControltransferIn c1 58 0000 0000 0002 2
then,the difference,you should use a loop:
ControltransferOut 41 56 0000 0000 0006 6 = 20 00 valueB valueA 00 00
ControltransferIn c1 58 0000 0000 0040 64
(valueA valueB)=(00 00) to (09 e0) step 20
because of the endians.
you can read the attachment for details.
finally
ControltransferOut 41 55 0000 0000 0002 2 = 15 00
ControltransferIns c1 4e 0000 0000 0040 64
ControltransferOut 41 3e 0000 0000 0002 2 = 08 00
ControltransferOut 41 3c 0000 0000 0002 2 = 01 00
ControltransferOut 41 53 0000 0000 0004 4 = 58 5b 01 00
then you can get the frame data use bulktransfer,like the seek thermal.
the raw frame is 342*260,so you need a
177840 byte arraythen convert to a 88920 uint16 array
statusbyte in uint16[2]
framecountbyte in uint16[1]