iRobot Create - Воспроизведение двух песен
Вот мой код:
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 Create:
2 ответа
Не видя никакой документации или исходного кода, это дикая догадка, но…
Я поставлю playSongNumber
Функция просто отправляет роботу команду воспроизведения, не дожидаясь его завершения, а когда вы отправляете ему команду воспроизведения, когда она уже что-то воспроизводит, она игнорирует вас.
Если я прав, то, надеюсь, API предоставит способ подождать, пока это не будет сделано. Если это не обеспечивает это, но предоставляет способ опроса текущего состояния, вы можете сделать это в цикле (кратко спать между каждой проверкой), пока это не будет сделано. Если он даже не обеспечивает этого, то вам нужно выяснить, сколько времени займет песня, посчитав количество нот (или добавив длительности, если одно из чисел в каждой из этих пар является длительностью), и засните, что долго.
playSongNumber
проверяет, воспроизводится ли в данный момент песня, и будет игнорировать новые песни, пока не закончится воспроизведение первой. Вы можете проверить, была ли песня сделана, опросив song-playing?
датчик (номер 37).
Документ "Создать открытый интерфейс" находится здесь:
http://www.irobot.com/filelibrary/pdfs/hrd/create/create%20open%20interface_v2.pdf
Из этого документа:
Играть песню
Эта команда позволяет выбрать песню для воспроизведения из песен, добавленных в iRobot Create, с помощью команды Song. Вы должны добавить одну или несколько песен в Create, используя команду Song, чтобы команда Play работала. Также эта команда не работает, если песня уже воспроизводится. Дождитесь окончания воспроизведения текущей песни, прежде чем отправлять эту команду. Обратите внимание, что пакет датчиков "Воспроизведение песни" можно использовать для проверки того, готов ли Create принять эту команду.
Воспроизведение песни
Идентификатор пакета: 37 байтов данных: 1 без знака
Состояние проигрывателя песен OI возвращается. 1 = песня OI, воспроизводимая в данный момент; 0 = песня не воспроизводится.