2014-11-13 4 views
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) 

Первая песня играет, но второй не будет ... какие-либо идеи относительно того, почему? Это кодируется с интерфейсом create.py Python к IRobot Создать:

+0

Есть ли публичная документация по API или открытый исходный код для библиотеки? Если это так, это поможет, если вы добавите ссылки на свой вопрос. (А если нет, то просто поставить этот факт в вопросе полезно.) – abarnert

ответ

0

Не видя каких-либо документов или исходный код, это дикое предположение, но ...

Держу пари, функция playSongNumber просто посылает робота команда воспроизведения, не дожидаясь ее завершения, и когда вы отправляете ей команду воспроизведения, когда она уже что-то играет, она игнорирует вас.

Если я прав, то, надеюсь, API предоставляет какой-то способ подождать, пока это не будет сделано. Если он не предусматривает этого, но он обеспечивает способ опроса текущего состояния, вы можете сделать это в цикле (спящий между каждой проверкой) до тех пор, пока это не будет выполнено. Если это даже не предусмотрено, тогда вам нужно определить, сколько времени займет песня, посчитав количество заметок (или добавив длительность, если один из чисел в каждой из этих пар длительность) и сон, который длинный.

+0

Да, извините за крайне неопределенный вопрос. Ваш ответ действительно разрешил мою проблему, хотя, спасибо. –

1

playSongNumber проверяет, играет ли песня в настоящее время, и она будет игнорировать новые песни до тех пор, пока первый не будет выполнен. Вы можете проверить, выполнена ли песня, опросив датчик song-playing? (номер 37).

Создать открытый интерфейс документ находится здесь:

http://www.irobot.com/filelibrary/pdfs/hrd/create/create%20open%20interface_v2.pdf

Из этого документа:

Play Song

Эта команда позволяет выбрать песню для воспроизведения из песни, добавленные в iRobot Create, используя команду Song . Вы должны добавить одну или несколько песен в Create, используя команду Song , чтобы команда Play работала. Кроме того, эта команда делает не работает, если песня уже воспроизводится. Подождите, пока в данный момент не будет исполнена песня перед отправкой этой команды. Обратите внимание, что сенсорный пакет «Song playing» может быть использован для проверки готовности этой команды этой команды.

Песня Игра

Packet ID: 37 Байт данных: 1 беззнаковое

состояние песни плеера О.И. возвращается. 1 = игра, исполняемая в настоящее время; 0 = OI песня не играть.