Я пытаюсь преобразовать аудиофайл в формат .h, который Arudino может прочитать, и я могу использовать его для воспроизведения звука через динамик без использования модуля SD-карты. Итак, я следовал этому учебнику, чтобы использовать эту avr sound программу от Github для конвертации аудио. Он дал мне указание использовать эту программу на python для преобразования, однако в командной строке выдается ошибка, сообщающая, что в строке 23, где находится вторая кавычка, есть синтаксическая ошибка. Есть идеи, что я сделал не так или как я могу это исправить?
#! /usr/bin/python
import sys, os, os.path
from avr_snd import *
SEGMENT_MAX = 256
SEGMENT_TMP = """
#define %s%d_len %d
const unsigned char %s%d[] PROGMEM=%s;
"""
PLAY_TMP = """
void play_%s() {
%s
}
"""
def convert(prefix, file_i, file_o):
a=array.array('B', (open(file_i, 'r').read()))
i,j=analyze(a)
b=array.array('B', compress(a,i,j)).tostring()
print "size=", len(b)
out=open(file_o, "w+")
for l, i in enumerate(range(0, len(b), SEGMENT_MAX)):
segment=b[i:i+SEGMENT_MAX]
out.write( SEGMENT_TMP % (prefix, l, len(segment), prefix, l, repr(segment).replace("'", '"')))
out.write(PLAY_TMP % (prefix, "\n".join(map(lambda i: "avr_sound_play(%s%d, %s%d_len);" % (prefix, i, prefix, i), range(l+1)))))
out.close();
def main():
file_i=sys.argv[1]
prefix='.'.join(os.path.basename(file_i).split('.')[:1])
file_o=os.path.join(os.path.dirname(file_i), prefix+".h")
convert(prefix, file_i, file_o)
if __name__ == "__main__":
main()
Командная строка выдает мне это сообщение об ошибке при попытке конвертировать файл.
File "snd2h.py", line 23
print "size=", + len(b)
^
SyntaxError: invalid syntax