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

Linux 打开连接到usb打印机的现金抽屉,linux,Linux,我有一个现金抽屉连接到一个爱普生TM-T20,通过USB接口连接。 我找到了一个例子,并将他们的想法应用到打印机的代码中: echo -en "\033\160\040\025" | lp -d "USB_TM-T20" -o raw 但这似乎不起作用。因为爱普生提供了一个java库,所以我决定看一看并对它进行反编译 protected byte[] getOpenDrawerCommand() { byte[] arrayOfByte = new byte[5]; if (this.

我有一个现金抽屉连接到一个爱普生TM-T20,通过USB接口连接。 我找到了一个例子,并将他们的想法应用到打印机的代码中:

echo -en "\033\160\040\025" | lp -d "USB_TM-T20" -o raw
但这似乎不起作用。因为爱普生提供了一个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中的值似乎是正确的(至少前两个)。不幸的是,我无法找到它发送数据的代码。 你知道我在哪里可以找到更多的信息吗?爱普生的网站似乎有点稀疏

编辑
结果表明,连接电缆已损坏,需要重新固定新电缆才能连接到打印机。

根据手册页,
bash
echo
命令以及独立的
echo
,要求八进制字符常量以前导零开头。这与C略有不同

所以,试试看

echo -en '\033\0160\040\025'
或者只使用十六进制


看起来您发送了4个字节,而Java代码片段表明5个字节是必需的。

我也有一个Epson TM-T20,找到了这个答案和链接来解决我的问题,但我查看了手册,发现打开抽屉的代码是
ESC p m t1 t2

这意味着:

echo -en '\033p011' | lp -d EPSON_TM_T20 -o raw

我使用
lpstat-p
查找要使用的正确打印机名称。

是的,我也观察到了这一点。但我也注意到打印机驱动程序不喜欢我的原始命令:“/usr/lib/cups/backend/epsonm failed”在我进行更多测试之前,我会先尝试解决这个问题。结果是安装了错误的ppd。我换了一个不同的。然而,这并没有解决问题。现在,我正在用windows进行尝试。