0

これが私のコードです:

import create 
robot = create.Create(3) 
robot.toFullMode()

robot.setSong(0,[(36,16),(36,16),(38,32),(36,32),(53,32),(52,32),\
(36,16),(36,16),(38,32),(36,32),(55,32),(41,32),\
(36,16),(36,16),(48,32),(33,32)]) 

robot.setSong(1,[(53,32),(40,32),(38,32),(34,16),(34,16),\
(33,32),(41,32),(43,32),(41,32)])  

robot.playSongNumber(0)
robot.playSongNumber(1) 

最初の曲は再生されますが、2 番目の曲は再生されません...理由について何か考えはありますか? create.pyこれは、iRobot Create への Python インターフェイスでコーディングされています。

4

2 に答える 2

0

ドキュメンテーションやソース コードを見ないで、これは大げさな推測ですが…</p>

このplaySongNumber関数は、ロボットが終了するのを待たずに再生コマンドをロボットに送信するに違いありません。ロボットが既に何かを再生しているときに再生コマンドを送信すると、ロボットは無視します。

私が正しければ、API が完了するまで待機する方法を提供してくれることを願っています。それが提供されていなくても、現在の状態をポーリングする方法が提供されている場合は、それが完了するまでループ (各チェックの間の短いスリープ) でそれを行うことができます。それさえ提供されない場合は、音符の数を数えて(または、これらのペアのそれぞれの数字の1つが持続時間である場合は持続時間を追加して)曲にかかる時間を計算し、それをスリープする必要があります。長いです。

于 2014-11-13T01:01:37.587 に答える