WINE 中的串行端口访问错误

WINE 中的串行端口访问错误

我有一个设置,其中我使用 USB 串行适配器 + 一些使用该串行 USB 发送和接收数据的应用程序。但是,这个设置在 Windows 上,甚至在 VMWare 虚拟 Windows 中都可以运行,但在 WINE 下却无法运行。它可以传输数据,但我无法接收数据。电缆和应用程序与工作和非工作场景中的相同。我猜想,应用程序在虚拟 Windows(在 Linux 上运行的 VMware)下,通过将 /dev/ttyUSB 映射到 com 端口,可以通过 USB 串行电缆正常工作,不需要外部软件/DLL,这意味着它不需要任何特定的驱动程序。(我是否正确地假设应用程序不需要任何驱动程序?)

(我也尝试了不同的设置(不同的 USB 串行适配器 + WINE 下的不同应用程序,但即使在 WINE 下也不起作用,但在 WIndows/虚拟 Windows 下运行良好)

我怎样才能让它在 WINE 下运行?

任何指点都值得赞赏。

答案1

我知道这个问题已经很老了,而 goldenmean 可能已经解决了它或者继续前进了,但其他人可能会偶然发现这个问题并寻找答案。

Wine 不会自动将 Linux 串行端口分配给 Windows 程序的 COM 端口,但可以使用简单的符号链接来完成。对于 Wine,您可以在命令终端中执行以下操作:

$ ln -s /dev/ttyS0 ~/.wine/dosdevices/com1
$ ln -s /dev/ttyS1 ~/.wine/dosdevices/com2

根据需要重复,以将所需的所有 ttySx 串行端口分配给 COMx 端口。

Wine 的商业版本 Crossover Linux 可能为此提供了 GUI 工具或自动执行此操作,但我从未使用过它。

答案2

WINE 不是模拟器或虚拟器,WINE 只是在 Linux 中实现 Windows API。当您在 WINE 下运行程序时,该程序需要一个串行端口,但 WINE 不提供它们,因此出现错误。另一方面,VMWare 虚拟化了包括端口在内的整个 PC,当程序请求端口访问时,它会将请求传递给主机 PC 上的端口,因此它可以正常工作。

总而言之,据我所知,请求端口的程序不可能在 WINE 下正常运行。

相关内容