我需要发送一个字符串的点阵打印机使用爱普生FX仿真,将打印一个简单的条形码.我可以通过手动将控制代码输入字符串来打印它.
This is an example from manual: https://files.support.epson.com/pdf/general/escp2ref.pdf#page=327
我手动将数据输入到字符串中:
var barcode = "\x1B\x28\x42\x10\x00\x06\x02\x00\x7D\x00\x01\x41\x32\x33\x40\x41\x21\x43\x44\x5B\x5D";
个
然后用"QZ托盘"模块发送.
这很好地工作,打印机通过正确打印所示的代码来响应.现在我的努力实际上是给它我自己的数据和改变最后10个字符串的代码,我已经try 了许多方法来正确地编码10个字符的字符串,到目前为止都没有奏效.在JavaScript中有什么方法可以做到这一点吗?
EDIT:个
正在做的事情:
var barcode = "\x1B\x28\x42\x10\x00\x06\x02\x00\x7D\x00\x01" + "1234567890";
个
是我try 的第一件事,结果导致打印机处于空闲状态,完全没有对命令做出react .事实上,我发现第一个命令1B不起作用,我必须用String.fromCharCode(27)
发送它.然后,打印条形码的完整工作命令变为:
var barcode = String.fromCharCode(27) + "\x28\x42\x10\x00\x06\x02\x00\x7D\x00\x01\x41\x32\x33\x40\x41\x21\x43\x44\x5B\x5D";
个
它会像手动打印一样打印数据.用转义的十六进制数据替换"1234567890"
,不知何故就会 destruct 它,打印机就什么都不做了.
EDIT2 , The solution:个
原来,在将数据发送到打印机时,我无意中跳过了负责设置条形码数据类型的控制代码,在这种情况下,它将是A.如果没有它,打印机将处于空闲状态.工作代码:
String.fromCharCode(27) + "\x28\x42\x10\x00\x06\x02\x00\x0A\x00\x01" + "A" + "1234567890";
个