したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

RS232Cで計測器との通信のシーケンスについて

1H8:2009/10/12(月) 18:09:07
はじめて質問させて頂きます。VC#2005でシリアル通信をしています。
SerialPortクラスを使用しています。
Write()でコマンドを送信後、DataReceivedイベントで、
受信処理をするところは理解できました。

Write()送信後、計測器側からの受信の内容を確認してから、
次のWrite()をしようとしています。

ただ、現状ですと、Write()を実施後、受信イベントが発生するのを
確認できずに、次のWrite()にいってしまいます。

この場合、1回目のWrite()後、受信イベント発生待ちというのは
何かありますでしょうか?

もしよろしければ、ご教授のほどお願い致します。

PC 計測器
(1) Write --------->
(2) Read
(3) <--------- Write
(4) DataReceived
(Read で受信確認)
・ここで、受信を確認できずに、(5)のWriteにいって
   しまう。
(5) Write ----------->

2H8:2009/10/12(月) 20:03:53
自己途中スレです。

SerialPortのDataReceivedイベントを使うと別スレッドでウィンドウが
固まる事はなさそうですが…。
受信イベントで次のシーケンスを判断するという形になる訳ですよね。
従って、DataReceivedイベント内が、swithなり、if/elseで、シーケンスを
進めていくという形式になる!?。

と、なるとデバイス側とのシーケンスがわかりにくくなりそうです。

SerialPortのDataReceiveを使うのでなく、自分で別スレッドを起こして
その中で、通信シーケンスを書いたほうが、わかりやすいですね。

そこで、Write()後、デバイス側からの受信イベントを待つ方法を
調査してみます。(Win32でいうところのWaitFor...があればいいですが。)

もし、ご存知の方がおられましたら、ご教授のほどお願い致します。

3igoten:2009/10/20(火) 14:53:51
すみません、投稿を見逃してしまいました。
まだ解決出来ていないなら、アドバイスします。

>ただ、現状ですと、Write()を実施後、受信イベントが発生するのを
>確認できずに、次のWrite()にいってしまいます。
Write時にフラグを立てて、測定器からの受信が完了したら、
フラグを下げて、フラグが下がっていたら、
次の送信要求を出すようにしたら良いと思うのですが。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板