打开连接到usb打印机的现金抽屉

时间:2012-03-12 15:08:29

标签: linux

我有一个连接到 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;
}

我们看到密钥文件中的值似乎是正确的(至少前两个)。不幸的是,我无法找到它发送数据的代码。 你知道我在哪里可以找到更多信息吗?爱普生网站似乎有点稀疏。

修改: 事实证明,连接电缆已损坏,需要重新安装新电缆才能连接打印机。

2 个答案:

答案 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查找要使用的正确打印机名称。