none
シリアル受信で文字バッファのオーバーランが発生 RRS feed

  • 質問

  • いつもお世話なっております。

     VS2005で、SerialPortコントロールを使って、データの送受信アプリを

     作っています。毎回受信したデータの量は、1~2Kバイトくらいで、ReadBufferSize

     を1Mにしていますが、2万回以上の連続受信の場合、時々、ErrorReceivedイベントを受けてしまいます。

     エラーのタイプは、Overrun(文字バッファのオーバーランが発生しました。次の文字は失われます。 )というエラーです。

     何故、この様なエラーが発生しましたか、回避手段があるでしょうか

     ご教授下さい

                以上

    2006年9月21日 4:21

すべての返信

  • >何故、この様なエラーが発生しましたか、

    データ受信と受信データを処理するペースより、相手方の機器がデータを送信するペースが(微妙に)早いからです。

    >回避手段があるでしょうか

    受信バッファを増やすのも1つの方法ですが、オーバーランエラーが出るまでの時間が長くなるだけです。

    データが間欠的に送信されてくる場合なら、これが解決策となる場合もありますが、データが絶え間なく送信されてくるような場合には何の解決にもなりません。

    汎用的な解決方法は、フロー制御を導入したり、通信手順を導入することです。

     

     

    2006年9月21日 9:51
    モデレータ