2017-01-27 83 views
0

我试图将ESC序列发送到收据打印机以触发收银机打开。我是一个JavaScript新手,所以我只想检查我是否正确。尽管我可能会发送错误的代码序列,但打印机/钱箱没有任何问题。 我知道抽屉确实打开,因为我可以使用打印机测试软件触发它打开。使用JavaScript向打印机发送十六进制命令

这里是Javascript。

var windowUrl = 'about:blank'; 
var uniqueName = new Date();  
var windowName = 'CloseTillPrint' + uniqueName.getTime(); 
var PrintWindow = window.open(windowUrl, windowName, 'left=300,top=100,width=200,height=900');  

PrintWindow.document.open('text/plain') 

PrintWindow.document.write(0x1B); 
PrintWindow.document.write(0x70); 
PrintWindow.document.write(0x30); 
PrintWindow.document.write(0x37); 
PrintWindow.document.write(0x79); 
PrintWindow.document.close(); 
PrintWindow.focus(); 
PrintWindow.print(); 
PrintWindow.close();  

如果你可以确认我没有用上面的代码任何错误,我会认为我送十六进制的错误序列。 谢谢

回答

1

您正在打印数字,而不是字符。用这个代替你的write()命令:

PrintWindow.document.write(String.fromCharCode(0x1B, 0x70, 0x30, 0x37, 0x79)); 
+0

感谢您的输入,但我认为这是不对的。当我照你的建议去做时,我会在收据底部印上字符。此外,当我GOOGLE了你的命令“fromCharCode”我检查了这个页面http://www.w3schools.com/jsref/jsref_fromcharcode.asp这证实了我说的话。 –

+0

是的,你确实得到了角色。更具体地说,这是:'p07y'然而,第一个字符'0x1b'是十进制的27,即Esc键的ascii代码。当你的代码打印27时,我发送了实际的逃逸字符。我不知道我的建议是否可行,但你所做的仅仅是印刷数字:'271124855121'。 –

+0

您能指点我收据打印机的文档吗?也许我可以弄明白。 –