繁体   English   中英

Windows 和 Linux 中 USB 串口的区别

[英]Difference between USB Serial in Windows and Linux

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

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

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

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

任何帮助都会很棒。 我一直在为这件事撕心裂肺! 谢谢!

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

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

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

将一些printf s放入内核模块以查看失败的地方。 使用 DKMS 构建系统来重建内核模块。 Linux 中有一个配置文件可以将内核模块列入黑名单/白名单 - 有助于确保加载正确的模块。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM