我知道有很多關於狀態的打印機問題...狀態熱敏打印機
我有一個西鐵城CT-S310 II,我設法寫字符的所有代碼在沒有USB問題libusb_bulk_transfer(文字,加粗,居中,CR,CUT_PAPER等):
#define ENDPOINT_OUT 0x02
#define ENDPOINT_IN 0x81
struct libusb_device_handle *_handle;
[detach kernel driver...]
[claim interface...]
[etc ...]
r = libusb_bulk_transfer(device_handle, ENDPOINT_OUT, Mydata, out_len, &transferred, 1000);
現在,我需要從打印機接收數據ckeck的狀態,我的第一個想法是用相同的發送POS命令doc的「bulk_transfer」:
1D(hexa)72(hexa)n N => 1(發送PAPEL傳感器狀態)
和檢索由「bulk_transfer」與結束點「ENDPOINT_IN」該文檔說有8個字節以接收所述值:
bit 0,1 => paper found by paper near-end sensor 00H
bit 0,1 => paper not found by paper near-end sensor 03H
bit 1,2 => paper found by paper-end sensor 00H
bit 1,2 => paper not found by paper-end sensor 0CH
[...]
於是兩個「bulk_transfer」,一個用於發送命令狀態(ENDPOINT_OUT),一個用於接收結果(ENDPOINT_IN),但我總是有一個USB錯誤(「bulk_transfer」in read = -1)
也許USB不工作喜歡這個 ?所以,我的第二個想法是用在PrinterClass USB實現的功能與命令「control_transfer」:
int r = 0;
int out_len = 1;
unsigned char* _udata = NULL;
uint8_t bmRequestType = LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_INTERFACE;
uint8_t bRequest = LIBUSB_REQUEST_GET_STATUS;
uint16_t wValue = 0; // the value field for the setup packet (?????)
uint16_t wIndex = 0; // N° interface printer (the index field for the setup packet)
r = libusb_control_transfer(device_handle, bmRequestType,bRequest,wValue, wIndex,_udata,out_len, USB_TIMEOUT);
我並不確切如何填補所有的參數,我知道這取決於我的設備,但DOC的libsub不是很明確。
什麼是「wValue」?
什麼是「wIndex」?接口號?
參數LIBUSB_ENDPOINT_IN默認爲0x80,但是我的打印機使用0x81,我必須改變這個默認端點嗎?
Bus 001 Device 004: ID 1d90:2060
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1d90
idProduct 0x2060
bcdDevice 0.02
iManufacturer 1 CITIZEN
iProduct 2 Thermal Printer
iSerial 3 00000000
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 7 Printer
bInterfaceSubClass 1 Printer
bInterfaceProtocol 2 Bidirectional
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0001
Self Powered
在我的情況「control_transfer」的迴應是紙或without.How發好「control_transfer」的請求,我的打印機?
所有幫助的狀態始終爲0 :(解決我的問題是值得歡迎的!