平林さん 質問者のいとうです。
From: Kouichi Hirabayashi <k...@mogami.com> Subject: [FreeBSD-users-jp 94047] Re: umodem で PICC18F2550 にアクセスすると不安定 Date: Sun, 11 Nov 2012 18:18:14 +0900 > デバイスドライバを書く側から見たら、いつデータが来るか > わからないときは「100回以上回しても平気」なほうの構造 > にするか、センサ側がデータ送出指令を待つようにすべきだ > と思いますが、運がよければ、最初のプログラム構造でも、 > sleep() を close() の後に移動すると(完全ではないにして > も)改善されるかもしれないですね。 > > 平林 浩一 close()の後ろに sleep()を入れると、確かに快調なようです。ありがとうござ いました。 しかし、せっかく早速のお返事をいただいたんですが、飲み込めていません。 最初のメールでアプリケーション層プロトコルの説明を TriState のマニュア ルに譲ったため、状況が正確にお伝えできていなかったかと思いますので、補 足させて下さい。 気圧計は USB ポート経由の接続を待ち受けており、気圧計側から能動的にデー タを送ってくることはありません。例えばスクリプトの中にある BARH という のは、その自転での気圧を hPa 単位で要求するコマンドですが、他に BARI(気 圧を inchHg 単位で要求する)、RYUP(リレーを動作させるしきい値の設定)など、 いくつかのコマンドがあり、それを USB ポート経由で送信すると、応答が返る、 という動作フローです。したがって、いただいたメールにある「いつデータが くるかわからない」という状況ではないと理解していますが、いかがでしょうか? 例えば(送ったコマンドのエコーバックがないので書き加えていますが) sh# cu -l /dev/ttyU0 Connected BARH^M^J と打鍵しています Error これは応答 BARH^M^J と打鍵しています >1003.6hPa これは次の応答 >~ [EOT] のような要領です。 実は本番の(というほど大げさな話じゃないんですけど :-)プログラムは Perl じゃなくって C で書いているんですが、ともかく close()の後ろに sleep()を 入れると改善されることはわかりましたので、がんばってみます。 引き続き、何か情報がありましたら、よろしくお願いします。 kkdlabs.jp, featuring Koh-ichi Ito as just another DNS freak in town.