我有一些在 Windows 上运行的软件。我安装了 Wine 并在 Linux 中运行它。它运行良好,但问题是它与串行端口通信。因此,我唯一能选择的选项是com1
,,com2
…
但我在Linux机器上的设备实际上位于该/dev/ttyUSBn
位置。如何在Linux Ubuntu中使用上述软件?
我已经尝试过了ln -s /dev/ttyUSBn COM1
。~/.wine/dosdevices/
但似乎不起作用。
答案1
从 Wine 2.8 开始,简单的符号链接编辑配置方法不再起作用。必须通过编辑 Wine 注册表来配置 COM 端口。从Wine 用户指南/其他配置/串行和并行端口:
要覆盖 Wine 的默认设备映射,请运行
wine regedit
并创建字符串条目,HKEY_LOCAL_MACHINE\Software\Wine\Ports
其中条目名称是 Windows 设备名称,条目值是 Unix 设备的路径。继续上面的示例,要使 COM1 成为第一个 USB 连接的串行端口,请创建一个名称为COM1
且值为 的条目/dev/ttyUSB0
。您可能还想创建一个名为COM5
且没有值的条目来删除COM5
现在与 重复的设备COM1
。编辑注册表后,使用 关闭 Winewineserver -k
,下次 Wine 运行程序时,您的更改将生效。
答案2
符号链接应该可以工作;但是,它们必须位于 中~/.wine/dosdevices/
,而不是任何随机目录中。WineHQ 文章还以小写形式显示名称。
4.3.1. 串行和并行端口
串行和并行端口配置与驱动器配置非常相似 - 只需使用
~/.wine/dosdevices
设备名称创建一个符号链接即可。Windows 串行端口遵循命名约定,即单词“com”后跟一个数字,例如com1
,com2
等。同样,并行端口使用“lpt”后跟一个数字,例如lpt1
。您应该将它们直接链接到相应的 Unix 设备,例如/dev/ttyS0
和/dev/lp0
。例如,要配置一个串行端口和一个并行端口,请运行以下命令:ln -s /dev/ttyS0 com1 ln -s /dev/lp0 lpt1
答案3
这可能是由于权限问题引起的。
tty 设备通常可由特定组读取/写入,例如dialout
。使用以下命令将自己添加到该组,最后注销并重新登录
gpasswd -a $USER dialout
说实话,最好先检查一下你的用户是否属于 dialout 组。使用此命令可以显示你的用户所在的组
groups $USER
如果dialout
没有,则通过临时更改文件夹ttyACMX/ttyUSBX
中文件的权限来测试该方法/dev
sudo chmod 666 /dev/ttyACMX_OR_ttyUSBX
使用 wine 重新运行你的程序并让我知道。
答案4
除了您创建的链接之外,还要确保用户位于正确的用户组中。从Wine 用户指南/其他配置/串行和并行端口:
确保您具有访问计算机串行和并行端口所需的权限。在 Linux 上,用户通常必须是
sys
或dialout
组访问串行端口