MaixPyでboard_infoを参照しようとしてImportErrorやAttributeErrorが出た時の対処法

MaixPyでboard_infoを参照しようとしてImportErrorやAttributeErrorが出た時の対処法のご紹介です。

先日、ファームウェアをカスタムビルドして、Maixduinoにロードして動作確認しました。

今日は、IO周りのスクリプトを 書いていたところ、以前のファームウェアで動いていたはずのスクリプトが、動かなくなっていました…。なぜ!?

その他のMaixPyとMaixduinoの関連記事はここ>>

board_infoのImportError

ImportErrorの原因

これは簡単、board_infoがインポートできないと起こる症状です。
まずは、import周りの構文に間違いがないか、確認してみてください。
よくあるのはスペルミスですね。VSのIntellisenseに慣れてしまっている私は、よくやります。

で、今回の場合はこれ、

from fpioa_manager import board_info

記憶が正しければ、このコードは動いてたはずなんですけど、新しいファームウェアだと”InportError”になります。前のファームウェアに戻しての確認はしてません。おそらくファームウェアのバージョンアップとともに使用が変わった模様。公式サイトのマニュアルにもこの表記はもうなかった。

ImportErrorの解決法

正しく書き直す。

from board import board_info

board_infoのAttributetError

AttributetErrorの原因

使っているデバイスのIO情報を保管している”config.json”が存在しないか、中身が間違っている場合、また参照しようとしているオブジェクト(Attribute)が存在しない場合に起こります。

例えば、以前は使えていた書き方、

board_info.D[0]

は、新しいファームウェアではサポートされていないようです。

正しくは、

board_info.PIN0

なのですが、下記のようにエラーになります。

>>> from board import board_info
[Warning] Not loaded from /flash/config.json to board_info.
>>> board_info.PIN0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'board_info' has no attribute 'PIN0'
>>> 

私の場合、”config.json”がそもそも存在してませんでした。

>>> os.listdir()
['freq.conf', 'main.py']

AttributetErrorの解決法

”config_maix_***.py”を実行して、”config.json”を生成します。

config_maix_***.pyはここからダウンロードできます。
MaixPy_scripts/board at master · sipeed/MaixPy_scripts (github.com)

私はMaixPyIDEで”config_maix_duino.py”を開いて、ビルド、実行しました。
うまく実行されると、”board_info”の中身がターミナルに出力されます。

その後、もう一度”config.json”と”board_info”を確認すると?

>>> os.listdir()
['freq.conf', 'main.py', 'config.json']
>>> from board import board_info
>>> board_info.PIN0
4
>>> 

うまくboard_infoでピン情報を拾えました。

タイトルとURLをコピーしました