0

シリアル ポート接続を介して情報を読み取ろうとしています。ハイパーターミナルを使用してプログラムに文字または文字列を送信しようとしています。コードは正常にビルドされ、使用している ReadFile 関数に到達するまでデバッグされます。その機能が開始されると、情報が送信されるのを待ちます。4 文字を入力すると、タイトルに記載されている未処理の例外が表示されます。ブレーク ポイントは、hPrevInstance CXX0030 式を評価できないと共に、AfxWinMain に私を残します。プログラムを使用してハイパーターミナルにデータを送信できますが、何らかの理由で readfile でクラッシュします。

関数が呼び出される場所

void CThermotronDlg::OnBnClickedDelete()
{
Serial Port;
CString Temp("34");
bool ans;
int nItem = MyListEx.GetSelectionMark();



ans = Port.ReadPort(Temp);

}

関数

bool Serial::ReadPort(CString buf){

OpenPort();
LPCTSTR dope;


LPDWORD bytesRead =0;
char b[4];
BOOL ret = ReadFile(sSerial,b,4,bytesRead,NULL) ;


dope = reinterpret_cast<LPCTSTR>(b);
AfxMessageBox(dope,0,0);
return true;


}
4

1 に答える 1

6
DWORD bytesRead;
char b[4];
BOOL ret = ReadFile(sSerial,b,4,&bytesRead,NULL) ;

4番目のパラメーターは、実際に読み取られたバイト数を受け取る有効なポインターでなければなりません。NULLにすることはできません。より正確には、このパラメーターは、lpOverlappedパラメーターがNULLでない場合にのみNULLにすることができます。

于 2013-02-07T14:53:23.130 に答える