pySerialを介して Arduino ボードにデータ パケットを書き込む Python スクリプトがあります。コードをボードに書き込んでいるときに、pySerial が errno 5 の入出力エラーを発生させることがあります。
一部の調査によると、これは Arduino ボードへの接続を表すファイルへの書き込み中にエラーが発生したことを示しています。
送信するコードは、1 バイト パケットのみを送信します。
try:
# Check if it's already a single byte
if isinstance(byte, str):
if len(byte) == 1: # It is. Send it.
self.serial.write(byte)
else: # It's not
raise PacketException
# Check if it's an integer
elif isinstance(byte, int):
self.serial.write(chr(byte)) # It is; convert it to a byte and send it
else: raise PacketException # I don't know what this is.
except Exception as ex:
print("Exception is: " + ex.__getitem__() + " " + ex.__str__())
このコードによって出力されるエラーは次のとおりです。
OS エラー 入出力エラー Errno 5
送信中にコードに何か問題がありますか? シリアル接続が何かを送信する準備ができているかどうか、または送信後に遅延があるかどうかを確認する必要がありますか? または、ハードウェアまたはハードウェアとの接続に問題がある可能性がありますか?
編集: pyserial から Linux の実装を調べましたが、実装はエラーをコードに渡すだけです。したがって、そこからの新しい真の洞察はありません。プログラムで何が起こっているかをテストする良い方法はありますか?