的代碼頁我有以下設置:藍牙票據打印機 - 不能更改打印機
- 工作站使用的內核
Linux work002 3.19.0-47-generiC#53~14.04.1-Ubuntu SMP Mon Jan 18 16:09:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 14.04.3 LTS
與Qt 5.5.1 Opensource 64bit
- 一些USB < - >藍牙加密狗,它一直在努力就好了
- 藍牙基於noname 48mm收據打印機從中國,這是發貨給我沒有任何文件(假設
ESC/POS
命令集)。
現在,這種設置似乎(初始連接時,配對,一旦配對藍色LED
二極管導通的打印機)的工作,因爲我可以通過QBluetoothSocket::write方法在打印機上打印一些文字:
this->ueBtPrinterSocket()->write(QByteArray("Printer ready. @[\\]^`{|}~ ĐŠŽĆČđšžćč"));
不過,我來自斯洛文尼亞,我需要斯洛文尼亞語的信件,這就是爲什麼我把斯洛文尼亞字母放到上面write
- ĐŠŽĆČđšžćč
,而我得到一些中文信件。因此,我試圖根據ESC t n function更改打印機的代碼頁,但沒有成功:
QByteArray cmdChangeCodePageToSlovene; // ESC t n
cmdChangeCodePageToSlovene.resize(3);
cmdChangeCodePageToSlovene[0]=0x1b;
cmdChangeCodePageToSlovene[1]=0x74;
cmdChangeCodePageToSlovene[2]=0x18;
qint64 result=this->ueBtPrinterSocket()->write(cmdChangeCodePageToSlovene);
qDebug() << Q_FUNC_INFO
<< " bytes written:"
<< result;
qDebug()
輸出通知我:
無效UeBluetoothManager :: ueSlotBtPrinterPairedAndConnected()個字節 寫:3
這沒關係。現在,中國製造商終於給我寄了一些Android
的代碼,這個代碼很難被稱爲SDK,並且有一個用於打印機的.jar
庫。我上傳這個.jar
文件網站,我發現下面的改變打印機的代碼頁反編譯的方法:
public int SetCharacterSet(int Value) {
if (g_nConnect != 1) {
return 101;
}
if (!(Value > 0 && Value < 10 || Value > 16 && Value < 19 || Value != 255)) {
return 104;
}
byte[] send = new byte[]{27, 116, 1};
send[2] = (byte)Value;
try {
out.write(send);
return 0;
}
catch (IOException e) {
e.printStackTrace();
return 402;
}
}
這是我改變打印機的代碼頁(正因爲如此,我可以Qt
代碼基本相同假設打印機命令集至少基本爲ESC/POS
),所以我可以假定我處於正確的軌道上。現在,我使用Wireshark
檢查了藍牙流量,但是,我找不到0x1b 0x74 18
(命令更改代碼頁)發送到打印機的數據流。這可能是代碼頁沒有改變的原因,或者有人可以給我一些指導嗎?我也嘗試將代碼頁更改爲Windows-1250
和ISO8859-2: Latin 2
,沒有任何效果。