Windows和Linux中USB串行的区别

时间:2017-10-27 03:29:53

标签: c++ linux windows serial-port termios

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

将一些printf放入内核模块以查看失败的位置。使用DKMS构建系统重建内核模块。 Linux中的某个配置文件将内核模块列入黑名单/白名单 - 这对于确保加载正确的模块非常有用。

我正在做的是修复USB串行设备的驱动程序。

相关问题