ishikawa
2014年4月24日 10時06分
ishikawaです。
お世話になっています。
現在「Armadillo440」でUART処理(同期)を作成しています。
通信はできているのですが、エラー処理がよくわからないため、相手先に異常があった場合に「write」や「get」で処理が固まってしまいます。
「オープンできない場合はエラー」「送受信できない場合はエラー」「?msの間、送受信できない場合はエラー」などのエラー処理ができて、処理が固まらないようにするにはどうすればよいでしょうか?
初歩的な質問で申し訳ありませんが、よろしくお願いいたします。
コメント
ishikawa
ishikawaです。
select()でタイムアウト監視できるようになりました。
ありがとうございました。
> Linux は、UART だけ使いたいのに、tty のレイヤーが被さっているので若干面
> 倒ですね。
>
> 1. オープンできない場合はエラー
>
> open()
が失敗することって、ありました? もしopen()
に
> 失敗するのであれば、戻り値を確認するだけで ok です。
>
>
> ret = open(...); > if (ret < 0) { > : > : > } >
> とか
>
> 2. 送受信できない場合はエラー
>
> Unix系の OS では、read()
や write()
する前に、
> 実際に読めるか、書けるか調べるのが定石のようです。select() を使ってみてください。
>
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
>
> 3. ?msの間、送受信できない場合はエラー
>
> select() の timeout を使うと可能です。
>
> こちら↓も参考になるかも。
> http://armadillo.atmark-techno.com/faq/serial-programming
>
at_yashi
2014年4月24日 15時34分
Linux は、UART だけ使いたいのに、tty のレイヤーが被さっているので若干面
倒ですね。
1. オープンできない場合はエラー
open()
が失敗することって、ありました? もしopen()
に失敗するのであれば、戻り値を確認するだけで ok です。
とか
2. 送受信できない場合はエラー
Unix系の OS では、
read()
やwrite()
する前に、実際に読めるか、書けるか調べるのが定石のようです。select() を使ってみてください。
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
3. ?msの間、送受信できない場合はエラー
select() の timeout を使うと可能です。
こちら↓も参考になるかも。
http://armadillo.atmark-techno.com/faq/serial-programming