我有一个连接到 USB 端口上连接的Epson TM-T20的现金抽屉。 我找到了一个示例here,并将他们的想法应用于here 到打印机的代码:
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;
}
我们看到密钥文件中的值似乎是正确的(至少前两个)。不幸的是,我无法找到它发送数据的代码。 你知道我在哪里可以找到更多信息吗?爱普生网站似乎有点稀疏。
修改: 事实证明,连接电缆已损坏,需要重新安装新电缆才能连接打印机。
答案 0 :(得分:1)
根据手册页,bash
的{{1}}命令以及独立的echo
,要求八进制字符常量以前导零开头。这与C略有不同。
所以,试试
echo
或只使用十六进制。
看起来你也发送了4个字节,而Java片段表明需要5个字节。
答案 1 :(得分:0)
我也有一台爱普生TM-T20,发现这个答案和链接主要解决了我的问题,但我检查了手册,发现打开抽屉的代码是ESC p m t1 t2
这转化为:
echo -en '\033p011' | lp -d EPSON_TM_T20 -o raw
我使用lpstat -p
查找要使用的正确打印机名称。