VC++でReadFileをするには?


ぺこ  2005-11-24 00:31:47  No: 59746

私は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には,何も出力されません.もし,どこが悪いのかわかる人がいたら,ご教授ください.


KING・王  2005-11-24 02:32:12  No: 59747

まず、どこまで正しく動作しているのか、どこで正しく動作しなくなるのかを切り分けましょう。

(1)ReadFile()の行が実行されていますか?
=>実行されないようなら、ReadFile()以前の問題です。

(2)実行されている場合ReadFile()の戻り値は?
=>戻り値でエラーが返されているようなら、GetLastError()等で、詳細なエラーを取得しましょう。

(3)ReadFile()を実行した直後の、rdBufの値は?
=>デバッガのウォッチなどを利用して、rdBufの中にデータが格納されているか、確認しましょう。

#ReadFileで受信したファイルの先頭が'\0'なだけだったりして・・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加