我有一个钱箱连接到连接到USB端口的Epson TM-T20。 我在这里find了一个例子,并将他们的想法用于从这里到打印机的代码:
echo -en "\033\160\040\025" | lp -d "USB_TM-T20" -o raw
但是这似乎不起作用。 由于epson提供了一个java库,所以我决定查看它并反编译。
protected byte[] getOpenDrawerCommand() { byte[] arrayOfByte = new byte[5]; if (this.m_objDrawerPort.isSupportRealTimeCommand()) { arrayOfByte[0] = 16; arrayOfByte[1] = 20; arrayOfByte[2] = 1; arrayOfByte[3] = (byte)this.m_objDrawerSettings.getPinNumber(); // seems to be 0 arrayOfByte[4] = (byte)this.m_objDrawerSettings.getOnTime(true); // between 1 and 8 } else { arrayOfByte[0] = 27; arrayOfByte[1] = 112; arrayOfByte[2] = (byte)this.m_objDrawerSettings.getPinNumber(); // seems to be 0 arrayOfByte[3] = (byte)this.m_objDrawerSettings.getOnTime(false); // [1, 255] arrayOfByte[4] = (byte)this.m_objDrawerSettings.getOffTime(false); // [1, 255] } return arrayOfByte; }
我们看到keyfile中的值似乎是正确的(至less前两个)。 不幸的是,我无法find它发送数据的代码。 你有一个想法,我可以find更多的信息? 爱普生网站似乎有点稀疏。
编辑 :事实certificate,连接电缆损坏,需要重新连接新的电缆连接到打印机。
根据手册页, bash
的echo
命令以及独立的echo
,要求八进制字符常量以一个前导零开始。 这与C略有不同。
所以,试试吧
echo -en '\033\0160\040\025'
或者只是使用十六进制。
它也看起来像你发送4个字节,而Java片段表明5是必要的。
我也有一个爱普生TM-T20,发现这个答案和链接主要是解决我的问题,但是我查了一下手册,发现打开抽屉的代码是ESC pm t1 t2
这翻译成:
echo -en '\033p011' | lp -d EPSON_TM_T20 -o raw
我用lpstat -p
来找到正确的打印机名称来使用。