We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ハードウェアリセット直後にget_is_online()を呼ぶと、I2Cの準備が完了していないのか、Remote I/O errorになります。 sakura.ioモジュールのI2Cがreadyかどうかの判断はどのようにすべきでしょうか?
Remote I/O error
$ echo 22 > /sys/class/gpio/export; \ echo out > /sys/class/gpio/gpio22/direction; \ echo 1 > /sys/class/gpio/gpio22/value; sleep 0.1; \ echo 0 > /sys/class/gpio/gpio22/value; \ python3 -c "from sakuraio.hardware.rpi import SakuraIOSMBus;print(SakuraIOSMBus().get_is_online())" -bash: echo: write error: Device or resource busy Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/commands/common.py", line 34, in get_is_online status = self.get_connection_status() File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/commands/common.py", line 24, in get_connection_status response = self.execute_command(CMD_GET_CONNECTION_STATUS) File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/base.py", line 44, in execute_command self.start(False) File "/usr/local/lib/python3.5/dist-packages/sakuraio/hardware/rpi/__init__.py", line 16, in start self.bus.write_i2c_block_data(SAKURAIO_SLAVE_ADDR, self.request[0], self.request[1:]) OSError: [Errno 121] Remote I/O error
とりあえず、ハードウェアリセットからI2Cアクセスまで2秒くらい待機することで回避しています。
The text was updated successfully, but these errors were encountered:
ご指摘の通り、sakura.ioモジュールのI2CがReadyになる前にアクセスしているので例外が発生しています。 例外が発生した場合は少し時間を置いてリトライするようにしていただければと思います。 以下のようなコードになるかと思います。(実際には動かしていないコードなのでご参考までに)
sakuraio = SakuraIOSMBus() while True: try: ret = sakuraio.get_is_online() if (ret & 0x80) == 0x80: break except: pass time.sleep(0.1)
Sorry, something went wrong.
No branches or pull requests
ハードウェアリセット直後にget_is_online()を呼ぶと、I2Cの準備が完了していないのか、
Remote I/O error
になります。sakura.ioモジュールのI2Cがreadyかどうかの判断はどのようにすべきでしょうか?
とりあえず、ハードウェアリセットからI2Cアクセスまで2秒くらい待機することで回避しています。
The text was updated successfully, but these errors were encountered: