0

我试图通过串行端口连接读取信息。我正在尝试使用超级终端向我的程序发送一个字符或字符串。代码构建良好,并且会调试,直到它到达我正在使用的 ReadFile 函数。一旦启动该功能,它就会等待发送信息。一旦我输入 4 个字符,我就会收到我在标题中声明的未处理异常。断点将我留在 AfxWinMain 以及 hPrevInstance CXX0030 表达式无法评估。我可以使用我的程序将数据发送到超级终端,但无论出于何种原因,它都会与 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 回答