在 Windows 上,有几个不错的替代方案(大部分是付费的),它们允许您监视串行端口通信。在 OSX 上,有很多终端应用程序可以让您与串行设备通信,但我还没有找到一种机制来监视串行端口通信。具体用例是:我有一个 USB 串行设备,它位于 /dev/tty.usbmodem99999我编写了一个运行多个命令的集成测试(成功)。但是,在重新运行命令时,设备没有响应。我已经(尽我所能)确认该设备没有问题。它按预期在其他平台上工作。但是在 OSX 上,我只能在重置设备(重启)后重新运行测试。我的理论是我的代码没有正确释放设备,但是当我看不到我的设备和我的应用程序之间的通信时很难确认。这个应用程序:“ http://www.aggsoft.com/serial-port-monitor.htm ”有一个“间谍”功能,我在 OSX 上找不到类似的功能。我已经在 osx 上尝试了“串行工具”,但它看起来不像是在单个端口上进行间谍操作,在这种情况下,用例看起来像是两个设备之间的直通,而不是在端口上进行监控.任何想法都非常感谢。正在使用的串行库是:https : //github.com/jacobsa/go-serial
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
你用过DTrace吗?
我用它来监视 FTDI USB/串行转换器和 3rd 方“黑盒”应用程序之间的 USB 通信。所以,我可以在得到一切的应用程序发送到USB串行端口。
这非常简单,因为我知道应用程序的名称,因此 DTrace 可以观察到。我编写了 DTrace 脚本来观察应用程序打开的文件描述符(寻找“/dev/tty.usbmodem...”),然后观察与该文件描述符的交互。
我没有观察到设备驱动程序。原则上,如果内核或设备驱动程序被编译为与 DTrace 一起使用,DTrace 可以做到这一点,尽管并不确定它是。Apple 还可以构建对 DTrace“不可见”的代码(例如,我认为 iTunes 对 DTrace 不透明以保护其 DRM 机制。)
因此,一个可能的起点是观察所有操作系统 open/creat 调用,查找 /dev/tty.usbmodemXXX,并尝试识别子系统并观察它。您可能会发现可以观察到子系统,这应该有助于了解 OS+设备驱动程序在做什么。
这不是小事。如果您的时间有任何价值,那么获取硬件 USB 嗅探器并将其放入电缆中可能更便宜和更可靠,尤其是如果它只有 1.2Mbits 或 12MBits USB(嗅探器对于更高的数据速率要贵得多)。
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报
0/150
提交
取消