私はVC++のかなり初心者です.勉強不足のまま質問させていただく事をご勘弁ください.
今,VC++でシリアル通信を行うプログラムを開発中です。
MFCなどは使っていません.
Win32 Applicationでプロジェクトを作っています.
エラーが起こってしまい解決できないので,そのプログラムの一部を記します。
DWORD dwErrors;
COMSTAT ComStat;
DWORD dwCount;
DWORD dwRead;
ClearCommError(hComm, &dwErrors, &ComStat); //ポートの状態を取得
dwCount=ComStat.cbInQue; // 受信バッファのバイト数の取得
if(dwCount != 0 ){ // バッファにデータがあれば受信する
//バッファからデータを取得
ReadFile(hComm, rdBuf, dwCount , &dwRead, NULL);
//IDC_EDIT1に取得したデータを出力
SetDlgItemText(hDlg, IDC_EDIT1, rdBuf);
}
またrdBufは,
WCHAR rdBuf[516] = L"" ;
と宣言してあります。このプログラムを実行するとreadfileの部分に問題があるらしく,コンパイルはとおるのですが,データを取得してくれません.IDC_EDIT1には,何も出力されません.もし,どこが悪いのかわかる人がいたら,ご教授ください.
まず、どこまで正しく動作しているのか、どこで正しく動作しなくなるのかを切り分けましょう。
(1)ReadFile()の行が実行されていますか?
=>実行されないようなら、ReadFile()以前の問題です。
(2)実行されている場合ReadFile()の戻り値は?
=>戻り値でエラーが返されているようなら、GetLastError()等で、詳細なエラーを取得しましょう。
(3)ReadFile()を実行した直後の、rdBufの値は?
=>デバッガのウォッチなどを利用して、rdBufの中にデータが格納されているか、確認しましょう。
#ReadFileで受信したファイルの先頭が'\0'なだけだったりして・・・
ツイート | ![]() |