通过linux上的usb发送原始数据

Luc*_*rim 7 linux printing usb zebra-printers

我打印斑马TLP-2844打印机上的一些标签,并已通过发送EPL指令来共享USB打印机如下精做它在Windows上:

键入Label.prn>\my-pc\zebra

它似乎也适用于串口

键入Label.prn> COM1

现在我正试图在Linux上做同样的事情,但它变得非常难!我的第一个猜测是:

cat Label.prn | 的/ dev /总线/ USB/005/002

因为我的打印机在005总线,设备002(用lsusb命令检查)但它根本不起作用,因为我得到以下内容:

bash:/ dev/bus/usb/005/002:权限被拒绝

任何猜测?

unb*_*eli 5

您执行的命令

cat Label.prn | /dev/bus/usb/005/002
Run Code Online (Sandbox Code Playgroud)

将尝试运行/dev/bus/usb/005/002,该文件不可执行,因此“权限被拒绝”。正确的命令将类似于Windows

cat Label.prn > /dev/bus/usb/005/002
Run Code Online (Sandbox Code Playgroud)

但是,不确定是否真的可以像在Linux中那样将任何内容写入打印机。如果打印机设置正确,您也可以尝试:

lpr Label.prn
Run Code Online (Sandbox Code Playgroud)

  • 解决了!似乎不可能直接将数据发送到设备,但是当使用CUPS通用文本打印机驱动程序并使用lpr设置打印机时,它可以完美工作!非常感谢! (3认同)
  • 在连接到Linux的Lexmark激光打印机上,您实际上可以“ cat文件> / dev / usb / lp0”。该文件应为ps,pdf,jpg,html(有关本机支持的文件,请参阅docs,这意味着不需要驱动程序)。 (2认同)

小智 5

以防其他人尝试访问原始 USB 打印机端口;通过将用户添加到组“lp”可以避免“权限被拒绝”问题,如下所示:

$ sudo usermod -aG lp USERNAME
Run Code Online (Sandbox Code Playgroud)

其中 USERNAME 是您的用户名。