我在树莓派 3 (debian) 上运行 node.js。
我有一个小型原型项目,它从我的 Turbo 教练机上的 ANT+ 发射器收集数据,这些数据通过 Suunto Movestick USB 加密狗发送。
我正在使用Ant-Plus
用于管理 ANT+ 协议的节点模块和将数据输出到控制台并通过 REST API 发送到云存储的脚本。
无论如何,切入正题,一切都工作正常,多个进程启动和停止没有问题,直到我无意中通过点击杀死了该进程ctrl + z
代替ctrl + c
现在,当我尝试运行我的脚本时,出现以下错误:
/home/pi/ant-plus/node_modules/usb/usb.js:168
this.device.__claimInterface(this.id)
^
Error: LIBUSB_ERROR_BUSY
at Error (native)
at Interface.claim (/home/pi/ant-plus/node_modules/usb/usb.js:168:14)
at GarminStick2.USBDriver.open (/home/pi/ant-plus/build/ant.js:287:20)
at Object.<anonymous> (/home/pi/ant-plus/sample/cadence-sensor.js:39:12)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
经过搜索,似乎由于节点进程没有正常关闭,某些进程仍然连接到 USB。
我尝试了各种方法来终止该进程:
ps | grep <something>
kill <somepid>
killall node
但不知何故,我不认为这是我需要杀死的节点进程,我“感觉”像我需要以某种方式清理 USB 接口,但我不知道如何做到这一点。
该项目使用node-usb https://github.com/nonolith/node-usb库,但我不确定是否可以以某种方式使用它来清理东西。