> あぁ、たしかに call out ですね。/dev/cuaU0 だと open()がブロックされな
> くなりました。
> 
> read()から帰ってこなくなり、ttyin でブロックされています。

相手のデバイスがコマンド(BARH\r\n)を読めていないか、
コマンド/レスポンスがちぐはぐになっているような気が
します。相手側のデータを読み出す方法があるとよいの
ですが、それが非現実的でないとしたら、select() を使
わすに、

  open();       // LF 終端の canonincal 入力
  sleep();      // 1, 2 秒とか長めにして
  write();      // コマンド
  read();

を試して、それでもためなら、open() でデリミタ(LF)で
なく 1 バイト単位の入力を指定して、バイト単位で読ん
で見ると何かわかるかもしれません。

はるか昔の経験ですが、write() で文字列を一息に送る
とダメで、1 文字づつ、ゆっくり送ると認識してくれた
なんてこともあります。思い付くことを片端から試して
見るといったことも必要かもしれません。


平林 浩一

メールによる返信