12-08-2017 02:16 AM
シリアル通信でデータを受け取り、そのデータを解析しようと考えています。
現在、大体組みあがったのですが、プログラム起動直後は動作するのですが、
少し時間が経過すると、タイトルに記載したエラー「転送中にフオーバーフローエラーが発生しました。次の文字が到着する前にハードウェア殻文字が読み取られませんでした」と表示され、停止してしまいます。
同じような内容が投稿されていたのですが、その対策であるCOMポートの詳細設定タブが押せない(グレー表示になっている)ため、書かれていた対策をすることができませんでした。
そのため、別の対策手段(シリアル通信のボーレートを遅くする など)はあるのでしょうか。
ご回答をお願い致します。
12-13-2017 05:25 PM
TRkazu様
そのエラーはLabVIEWが表示しているものでしょうか。
エラーコードをご存知でしたら投稿していただけますでしょうか。
過去の投稿を参考にされたそうですが、その投稿のURLを載せていただくと、TRkazu様がどのようなことを試されて何ができなかったのかがわかりやすくなると思います。
また一般的にシリアル通信の場合、ボーレートは接続先機器と合わせる必要があると思います。接続先機器のボーレートは確認されましたでしょうか。
上記ご確認のうえ再度ご投稿いただけると幸いです。
12-14-2017 12:40 AM
エラーはlabVIEWが表示しています。
エラコードは、
−1073807252 (だったはずです)
「転送中にフオーバーランエラーが発生しました。次の文字が到着する前に、ハードウェアから文字が読み取られませんでした。」
過去の投稿された内容
接続先のボーレートと同じにであるのを確認しました。
12-14-2017 08:35 AM
どこかでバッファが一杯になって、いわゆるオーバーフローが起きているエラーかと思います。
シリアルポートは、どのようなもの使用していますか?変換機でしょうか?
PCバッファでオーバーフローしているのか、UARTのチップのFIFOで起きているのか切り分けるために、VISA プロパティノードのNumber of Bytes at Serial Portのデータ数を監視して、(例えば波形チャートなどでモニターする)設定したバッファー数を超えるか確認しても良いかもしれません。
デフォルトでは、4096数だったと思います。
ちなみにボーレートはどのくらいでしょうか?ボーレートを下げたらエラーの頻度は下がりますか?
PCの型や232変換器のレイテンシにより、不規則にオーバランエラーが起きることもあるようです。
よろしくお願いします。
12-18-2017 08:49 PM
質問の回答とずれていたら、申し訳ありません。
基盤→RS232CーUSB変換器→PC という流れで通信を行っています。
ボーレートの設定値は57600です。
ボーレートの設定は基盤内のソフトで決まっているので、ボーレートをさげることはできません。
「VISA プロパティノードのNumber of Bytes at Serial Portのデータ数を監視して〜」に関しては、どうやればいいのかわかりませんでした。
12-19-2017 05:21 AM - 編集済み 12-19-2017 05:21 AM
こんにちは。
VISA プロパティノードのNumber of Bytes at Serial Portは下記の資料の解答策の項目にございます。
http://digital.ni.com/public.nsf/allkb/A89A5CD746041E31862570D600074FE0
資料自体の内容は今回の問題とは関係ない(タイムアウトなので、オーバランとは逆の現象)ですが、プロパティノードがご参考になるかと思います。