使用(DR)STRACE比较Windows程序执行

时间:2017-11-03 02:55:47

标签: node.js serial-port pyserial strace

我在这里直接提出了一个问题,关于github上this issue的node-serialport。简而言之,过去在库的v4.x中工作正常的东西不再适用于库的v6.x.我认为它必须与库如何打开COM端口(选项或其他东西)有关,而我怀疑它人为地限制了当前版本库中通过USB传递的功率。

我编写了最简单的脚本,我可以使用以下方法重现问题(问题中发布的脚本):

  • 图书馆的NodeJS和v4.x [工作]
  • 库的NodeJS和v6.x [失败]
  • Python和PySerial等价物[作品]

根据存储库维护者的建议,我研究并发现了一个名为drstrace的Windows实用程序,它允许我捕获执行一段时间内执行的每个脚本的日志(这些日志作为附件发布在引用的问题中)。

现在我卡住了,因为我不知道如何制作drstrace日志的正面或反面,尽管我确信在比较三个文件时差异可能很明显。我只是不知道如何阅读drstrace日志和Windows驱动程序和系统调用来突破。

我意识到在这里发布这个问题是一种绝望的行为,但我觉得它值得一试。希望很明显,我并不缺乏自己的努力,我现在只是在我的头上,并可以使用更多的帮助。任何指导将不胜感激。最令人敬畏的是那些精通这种诊断水平的人,让他们看一看并阅读茶叶。回馈这样一个重要的开源库会很棒。

2017年11月10日更新

我向FTDI支持部门询问:

  

我在许多产品中使用FT231X。我需要一些帮助   了解Windows FTDI驱动程序如何管理电源。更多的是   我希望你能帮我理解如何指导司机   允许USB允许的全部500mA电流输送到我的产品   通过Windows计算机。

答复是:

  

只需使用我们的FT_Prog实用程序将最大VBUS电流设置为500   毫安:enter image description here

     

FT231X枚举后,此驱动电流可用。

我还没有尝试过这个建议,但我想和读这篇文章的人分享。事实上,node-serialport 6.0.4行为与node-serialport 4.0.7行为和pyserial行为都不同。

2 个答案:

答案 0 :(得分:2)

我阅读了一些关于Windows驱动程序以及它们如何管理的内容我只发现它与硬件制造商相关我觉得它不是串口自动失败因为它真正使用它自己的驱动程序它没有添加额外的那个级别。

我是SerialPort的贡献者,并且可以告诉您它只提供操作系统到节点的绑定,这意味着它不会执行任何操作,它只提供API从Microsoft读取以下内容他们说您应该询问您的硬件供应商

串行端口驱动程序中的电源管理(Windows CE 5.0)

Windows CE 5.0 发送反馈 串行端口驱动程序可以提供的最小电源管理是使用HWPowerOff功能将串行端口硬件置于其最低功耗状态,并使用HWPowerOn功能完全重新打开串行端口硬件。这两个功能都在较低层实现。除了这种最小化处理之外,串行端口驱动程序可以通过保持端口断电来更有效地节省电源,除非应用程序打开了串行端口。如果驱动程序不需要检测可移动串行端口设备的对接事件,则驱动程序可以更进一步,如果没有应用程序,则从串行端口的通用异步接收器 - 发送器(UART)芯片断电使用端口。 即使没有为串行线路驱动器供电,大多数串行端口硬件也可以支持读取端口的输入线路。请参阅串行端口硬件的文档,以确定串行端口电路的哪些部分可以选择性地打开和关闭,以及哪些部件必须为各种使用条件供电。

<强>来源: https://msdn.microsoft.com/en-us/library/aa447559.aspx

关于serialport v4 =&gt;的更改6

  • 新流界面
  • 但是没有改变端口的核心打开方法。
  • 在打开端口的绑定中也没有任何改变
  • node serialport是用c ++
  • 编写的绑定集合

答案 1 :(得分:2)

以下是您可以研究的替代理论:

与V6.x交互的Windows可能与流控制设置的交互方式不同,这可能导致您的设备以意外状态响应,从而导致测试失败。