2011/12/04

pyserialとリードタイムアウト

さて、ガイガーカウンター(V1)も一区切りついたので、簡単なロガーを作成するのですが、普通はLinux上でちょろっと書くのですが、最近はLinuxは仮想環境にしかないので、仕方なくWindows上で物色してみました。

とりあえず、「シリアルから読んでファイルにロギングしつつ、もしその気になればちょっとグラフを出す」程度のものにしようと思っています。
さすがにWindowsのネイティブアプリをVC++ Express Editionでシコシコ作る、というのも馬鹿馬鹿しいのでpythonを使うことにして、シリアルライブラリとしてはpyserialというのがあるようです。

プログラム構造としては、
  • シリアルがオープンできたらシコシコ読みだしてファイルに書く。
  • オープン失敗やリードエラー時はオープンをリトライする
といった作りにしたいのですが、
  • USB抜線によるリードエラーは、エラーや例外でなく無応答タイムアウトになる
  • リードのタイムアウト時には、例外でもNoneやNUL文字('\x00')でもなくて、空文字("")が返る
というところで若干ハマりました。

まあ、前者はUSBでないシリアルだとそうなのでしょうか?(RTS/CTSを効かせてもダメでしたが)。後者はなんだかやや微妙。

0 件のコメント: