我正在使用 Aldebaran 的 Nao,我想编写一个 python 脚本来检查电池是否正在充电。
有关于 naoqi 模块的文档。我发现了这个事件1。但这是一个事件。在我看来,我可以等待一个事件,但我不能像 bool 一样阅读它。我对吗?
此链接页面显示有可供读取的 Current 和 Charge% 值。与使用电池运行相比,我会测试它们,看看充电时电流的符号是否会发生变化。或者,检查 Charge% 的上升速度是否足以检测到充电正在进行中。
在我看来,我可以等待一个事件,但我不能像 bool 一样阅读它。我对吗?
电池不可能。发布的每个事件都会发送一个信号,该信号会“翻转” ALMemory 中的一个开关。如果存在这样的内存键,您只能读取数量的值或状态。否则,信息将丢失且无法检索。
例如,每次充电百分比发生变化时,都会触发一个事件并向此存储键发送信号:
Device/SubDeviceList/Battery/Charge/Sensor/Value
然后,您可以使用提供的 API 直接读取此值,就像您在问题中通过方法描述的方式一样。对于充电,根本没有这样的钥匙。
你可以试试:
mem = ALProxy(ALMemory, pip, pport)
mem.getData("BatteryPowerPluggedChanged")
访问事件的布尔变量:“BatteryPowerPluggedChanged”,你会得到真/假。但这对您没有帮助,因为如果您没有事先订阅该事件,它不会反映实时更改。
希望这可以帮助。
您可以使用 ALMemory API 订阅事件“BatteryChargingFlagChanged”:http ://doc.aldebaran.com/2-4/naoqi/core/almemory-api.html#ALMemoryProxy::subscribeToEvent__ssCR.ssCR.ssCR
此方法需要一个回调:只需定义一个设置您可以使用的标志的方法。