掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信で常にコマンドを受信し続けるには? (ID:63040)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になります。 現在、↓の環境下で開発中ですが、わからないことが出てきたので質問させてください。 Windows XP Professional Version 2002 Service Pack2 Microsoft Visual Studio .NET 2003 MFC Application 【やりたいこと】 シリアル通信を使って送受信を行いたい。 そのとき、転送先からは常に文字が出力されているので、PC側で常にその文字を受信し、アプリ上に出力させたい。 そして、PC側から送信したい場合は、受信中でもその合間をぬって文字を転送したい。 【現状】 下記プログラムのsend()、receive()を使い、送信・受信それぞれ単体であれば動かすことはできます。 ボタンにイベントハンドラを割り当てて、そこから関数を呼ぶことで実現させています。 アプリ起動時に受信を開始するとして、起動時に呼ぶ関数内でreceive()をroopさせれば常に受信させることはできるのかと思いますが、それでは、メインの方に処理が返ってこず、次の送信処理に移行することができません。 何かいい方法はあるのでしょうか? どなたかご教授宜しくお願いいたします。 HANDLE hComm=NULL; char buff[20]; void comset(){ -------------略------------- hComm = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //COM通信パラメータを格納しているDCB構造体を設定する。 DCB lpDCB; GetCommState(hComm, &lpDCB); //if(GetCommState(hComm, &lpDCB)==0)return; lpDCB.DCBlength = sizeof(DCB); lpDCB.BaudRate = 9600; lpDCB.Parity = NOPARITY; lpDCB.StopBits = TWOSTOPBITS; lpDCB.fParity = FALSE; lpDCB.fBinary = TRUE; lpDCB.ByteSize = 8; -------------略------------- } void send() { DWORD dw; WriteFile(hComm,"hoge",4,&dw,0); return; } void receive(void) { DWORD dw; ReadFile(hComm,buff,20,&dw,0); return; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.