Windows和Linux中USB串口的区别

Posted

技术标签:

【中文标题】Windows和Linux中USB串口的区别【英文标题】:Difference between USB Serial in Windows and Linux 【发布时间】:2017-10-27 03:29:53 【问题描述】:

我在学校为一个机器人项目购买了 Variense VMU931 惯性测量单元 (IMU),但我正在努力让它与我在 Ubuntu 中的笔记本电脑可靠地通信。我正在使用 C++ 和 termios 使用 8n1 no parity blah blah blah 连接到它。我已经尝试了所有我能想到的设置排列,但我仍然无法可靠地向 IMU 发送命令。

我致电 Variense 支持并与编写他们软件的工程师交谈,他说这是一个已知问题。显然它在 Windows 中运行良好(并且 Windows 演示软件在我的设备上运行良好),但我们都没有意识到 Windows 和 Linux 中的 USB 串行仿真之间的显着差异。

此文件顶部的构造函数显示了我如何打开和配置端口:

https://github.com/jsford/FFAST/blob/master/VMU931/src/vmu.cpp

任何帮助都会很棒。我一直在为此扯头发! 谢谢!

【问题讨论】:

【参考方案1】:

使用cu 实用程序运行具有不同参数的测试。

要调试问题:直接在 Linux 上以及在 VirtualBox/VmWare 中运行的 Windows VM 上使用 Wireshark 运行 USB 数据包捕获。比较流量。

检查为该 USB 设备选择并加载了哪个内核模块。为此,请使用/sys/ 文件系统:此虚拟 fs 具有来自内核的有关所使用内容的信息。此外,lsmod-kind 命令显示内核模块的使用情况。 USB 的驱动程序选择取决于<usb-manufacturer-id>:<usb-product-id>

将一些printfs 放入内核模块,看看哪里出错了。使用 DKMS 构建系统来重建内核模块。 Linux 中有一个配置文件可以将内核模块列入黑名单/白名单 - 有助于确保加载正确的模块。

这就是我修复 USB 串行设备驱动程序所做的工作。

【讨论】:

以上是关于Windows和Linux中USB串口的区别的主要内容,如果未能解决你的问题,请参考以下文章

linux下串口通信与管理

c语言win7 USB插上后怎么查找所在的串口?

从 Windows 到 Linux 的 PHP USB 串口调用

串口windows正常ubuntu

有了jlink还需要装usb转串口驱动吗

如何写一个Android USB接口驱动