【问题标题】:what is the OSX version of Linux's /dev/usb/lp0?Linux /dev/usb/lp0 的 OS X 版本是什么?
【发布时间】:2014-08-10 19:47:42
【问题描述】:

我正在写入 centtronics 电缆并通过一个简单的“缓冲”电路使一些 LED 闪烁。

我可以通过引用 Ubuntu 机器上 /dev/usb/lp0 上的设备位置的 C 代码写出这些位。

但是,我希望能够在 OSX Mavericks 上执行此操作。我在 Linux 中看到的设备文件类型不同。

即Linux 上有 /dev/usb/lp0 的 OSX 模拟吗?

非常感谢。

【问题讨论】:

  • 您使用的是什么类型的 USB/并行适配器?是否可能需要安装驱动程序?
  • 它由 Sabrent 制造,使用 IEEE 1284 协议(A 型:25 针连接器)
  • 您确定它甚至在 Mac OS X 上也受支持吗? The web page I found 确实说它“与 Mac OS X 兼容”,但它没有列出任何系统要求,并且包装盒上也没有出现匹配的徽标。

标签: linux macos usb device


【解决方案1】:

在“一切都是文件”的概念下,lp0 只是一个允许对设备进行原始访问的特殊文件,在这种情况下,是第一个并行设备的“特殊字符文件”。如果存在与设备匹配的驱动程序或类似/dev/parport0 的驱动程序,OSX 上也会存在相同的情况。不过,OSX 的并行驱动程序集合非常有限。您可以尝试捏造它 - 创建一个“字符”设备文件,使用 mknod 将其指向某个通用并行驱动程序。

例如mknod lp0 c x y 其中 x 和 y 是设备类型的主要和次要编号。通常,您可以在 linux 上的 documentation/devices.txt 文件中找到这些数字,但不确定这些信息在 OSX 上的位置。

我见过设备使用通用打印机驱动程序来处理这个问题,例如“小工具打印机”: https://www.kernel.org/doc/Documentation/usb/gadget_printer.txt

(我最初的假设)

在这种情况下,设备实际上会在系统上显示为打印机。您可以使用 lpstat 等 CUPS 实用程序查找打印机列表及其位置:

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/lpstat.1.html#//apple_ref/doc/man/1/lpstat

还有环境变量 LPDESTPRINTER 应该列出默认打印位置:

echo $LDPEST

【讨论】:

  • 我认为您误解了这个问题。目标是驱动连接到 USB 并行端口适配器的硬件,但该设备不是打印机。 CUPS 不会有什么好处。
  • 我知道他所指的设备类型,他们使用 linux 打印机接口而不是创建适当的设备驱动程序。您只需将其视为打印机并向其发送命令,就像您愿意使用 lp 之类的东西进行打印一样。我虽然他试图找到的是这个虚拟设备在osx中​​的安装位置。 Lpstat 将列出所有打印设备及其相应的挂载,并且它正在挂载到 lp0,表明它是系统中唯一的打印设备,在这种情况下,$lpdest 或 $printer 应该提供他需要在其代码中定位的路径。从系统的角度来看,它是一台打印机。
  • 我的印象是他有一个定制的电路板,他用 USB 到并行电缆连接,在 Linux 上它被安装为打印机。然后,他使用原始打印设备向其发送指令(您将使用 lp 命令定位的设备)。假设 osx 也将其视为打印机,他需要找到原始“打印”设备的安装位置,这正是 CUPS 实用程序将提供的帮助。
  • 如果它显示为 USB 打印机,那他就是不走运。他尝试连接的设备类型基本上是将并行端口视为 GPIO 接口。试图把它当作打印机(基本上是宽串口)是行不通的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 2010-09-05
  • 2015-09-23
  • 1970-01-01
  • 2010-10-09
相关资源
最近更新 更多