• 締切済み

テラタームとRS-232cについて

テラタームでPCにデータを送る際に、自分の来て欲しいデータ量と実際のデータ量に違いが出ていて困っております。 現在、東京エレクトロンデバイスの評価ボードを用いてカメラから来るデータをRS_232cで転送しているのですが、 307200バイトのデータが欲しい所実際は100から200前後のずれが出てしまいます。 テラタームを用いてデータを受信する際、フロー制御のxon,xoffを設定すれば PC側のバッファが足りなくなった時自動的にxoffを送り、大丈夫になった時は xonを送ってくれて、送信側はそれの受理さえすれば良くて 自分は返事を返す必要もなくただそれに従って動けばいいと言う事でしょうか? そうなれば評価ボード側にxonとxoffを受理出来る様な仕組みを作りさえすれば大丈夫な気がするのですが・・・・ また、データを送る間隔を増やしてもなかなか思い通りには行きませんでした。 RS_232cで一度に307200バイトのデータを送る事自体が無謀なのでしょうか? 数秒の間隔を空けて、少しずつデータを送るしかないのでしょうか? 現在APIも少し見てはいるのですが、テラタームで出来なければ APIを使っても無駄な気もしています。 以下の環境で動かしています カメラ:dalsa FA21-3HK3H-00-R 評価ボード virtex5 TB-5V-155T-GB-R クロック→80MHzを921600bpsに合わせて、86分周 クロックの分周も問題の様な気がしますが、921600用にとなるとどうしても正確な値に近づけるのは難しく・・・・ 何か助言を下されば幸いです、宜しくお願い致します

みんなの回答

回答No.1

通信速度は921600bpsということでよいですか。 一般的なPCのシリアルポートは、115kbps程度までです。この辺は大丈夫ですか。 80MHz / 86 = 930232.6 で送信したとすると、 930232.6 / 921600 = 1.0094 で、約1%位送信側が速いということですね。 たしか、シリアル通信は、同期信号を送っていないので、送受信側のタイマのずれが、受信側のデータを取りこぼしに繋がっているのだと思います。 とりあえず、通信速度をいろいろ変えてみて、エラーが発生具合を見てみては。 シリアル通信でエラー無しを保障することは難しいので、最終的には、エラー部分だけ再送するような仕組みも必要になると思います。 肝心のフロー制御の部分については、詳しくないので、わかりません。ごめんなさい。

kujira12gou
質問者

お礼

ご回答ありがとうございます。 PCの物理的な対応の是非は調べていませんでした、そこをまずは調べようと思います!! あとすいません、確認したら分周0~86なんで87でした^^; ただそれでもほぼ100%になってしまっているので、あと少し落として ずれのポイント等を試してみる事にします^^