###前提・実現したいこと
Raspberry Piとpythonを用いてインターネットラジオとFM放送を受信するプログラムを作成しています。「たのしい電子工作 Raspberry Pi 2で電子工作をはじめよう!」という本に沿って行っているのですが、以下のエラーメッセージが出力され動作しませんでした。
###発生している問題・エラーメッセージ
shout_radio4.py:76: SyntaxWarning: name 'disp_message1' is assigned to before global declaration global disp_message1 TOKYO FM Traceback (most recent call last): File "shout_radio4.py", line 69, in <module> TuneStation(st_info[0], st_info[1], st_info[2]) File "shout_radio4.py", line 55, in TuneStation subprocess.Popen(['/home/pi/fmradio_sub.sh', freq]) File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
###該当のソースコード
python
1#!/usr/bin/python 2import subprocess 3import spidev 4import time 5import datetime 6import os 7 8stations = ( ('0', 'RADIO OFF', 'n'), 9 ('291180', 'Deep Techno fm', 'i' ), 10 ('499023', 'DeepHouse', 'i' ), 11 ('612055', 'WRCJ 90.9 - Classical Days Jazzy Nights', 'i' ), 12 ('60020', 'DRUM AND BASS LOUNGE', 'i' ), 13 ('61384', 'Deep Mix Moscow Radio', 'i' ), 14 ('99179829','A-JAZZ-FM-WEB', 'i' ), 15 ('80.0', 'TOKYO FM', 'f' ), 16 ('82.5', 'NHK FM', 'f' ), 17 ('81.3', 'J-WAVE', 'f' ) ) 18 ('0', 'RADIO OFF', 'n'), 19 ('0', 'RADIO OFF', 'n'), 20 ('0', 'RADIO OFF', 'n'), 21 ('0', 'RADIO OFF', 'n'), 22 ('0', 'RADIO OFF', 'n'), 23 ('0', 'RADIO OFF', 'n') ) 24 25# Open SIP Bus 26spi = spidev.SpiDev() 27spi.open(0,0) 28 29disp_message1 = "STOP" 30time.sleep(3) 31 32# Read ADC 33def ReadChannel(channel): 34 adc = spi.xfer2([1,(8+channel)<<4,0]) 35 data = ((adc[1]&3) << 8) + adc[2] 36 return data 37 38# Tune radio station 39def TuneStation(freq, name, mode): 40 global disp_message1 41 global disp_message2 42 43 d = datetime.datetime.today() 44 year2 = d.year - 2000 45 disp_message2 = '%2d/%02d/%02d %02d:%02d' % (year2, d.month, d.day, d.hour, d.minute) 46 disp_message1 = '%20s' % name 47 subprocess.Popen(['/home/pi/oledsp', disp_message2, disp_message1]) 48 49 if mode == 'n': 50 subprocess.Popen(['killall', 'mplayer']) 51 subprocess.Popen(['/home/pi/radiomute']) 52 elif mode == 'i': 53 subprocess.Popen(['/home/pi/shout_sub.sh', freq]) 54 else : 55 subprocess.Popen(['/home/pi/fmradio_sub.sh', freq]) 56 57delay = 0.1 58ad_channel=0 59last_data = 0 60tcount = 0 61 62while True: 63 data = ReadChannel(ad_channel) 64 data = data>>6 65 if last_data != data: 66 last_data = data 67 st_info = stations[data]; 68 print st_info[1] 69 TuneStation(st_info[0], st_info[1], st_info[2]) 70 71 # Delay for Next data 72 time.sleep(delay) 73 # Update Clock 74 tcount = tcount + 1 75 if tcount > 100: 76 global disp_message1 77 global disp_message2 78 79 d = datetime.datetime.today() 80 year2 = d.year - 2000 81 disp_message2 = '%2d/%02d/%02d %02d:%02d' % (year2, d.month, d.day, d.hour, d.minute) 82 subprocess.Popen(['/home/pi/oledsp', disp_message2, disp_message1]) 83 tcount = 0
###試したこと
最初は、手入力によりコードを書いたのですが実行できなかったため、書籍のサポートページ(http://www.shuwasystem.co.jp/support/7980html/4625.html)からダウンロードしたコードをコピー&ペーストして実行しましたが上記のエラーが発生し、実行できませんでした。このコードが05-shout_radio4.pyにあたります。
また、エラーに"No such file or directory"と表示されたので"/usr/lib/python2.7/subprocess.py"を確認しましたが、このファイル自体は存在していました。そのため、エラーの原因が不明です。
###補足情報(言語/FW/ツール等のバージョンなど)
Raspberry PiはPi3のModel Bを使用しています。また、pythonのバージョンを確かめたところ2.7.9でした。
最近、Raspberry Piおよびpythonを始めたばかりです。また、teratailを使用するのも初めてなので表現や質問の仕方に不足している点もあると思います。質問や表現も含めアドバイスをいただけると幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/04 02:29