下面一段进程,怎么都不工作,请各位帮看看怎么回事?
这是一段对CY68013的Slave FIFO进行数据采集。
这是一段对CY68013的Slave FIFO进行数据采集。
UINT ReadThreadLoop( LPVOID params ) { //线程处理
int i;
bool okin;
CMySampleDlg *dlg = (CMySampleDlg *) params;
OVERLAPPED inOvLap; //是一个包含了用于异步输入输出的信息的结构体
PUCHAR inData = new UCHAR[512]; //数据缓冲区
ZeroMemory(inData,1024); //ZeroMemory用0填充一片内存,第一个参数是起始地址,第二个参数是长度
inOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_IN");
dlg->InEndpt->TimeOut = 0;
for (i=0;i<512;i++) //循环
{
LONG inlen=512;
//异步读数据
UCHAR *inContext = dlg->InEndpt->BeginDataXfer(inData,inlen,&inOvLap);
dlg->InEndpt->WaitForXfer(&inOvLap,200);
okin = dlg->InEndpt->FinishDataXfer(inData,inlen, &inOvLap,inContext);
if (okin) //假如读取成功,则保存数据
{
mFile.SeekToEnd();
mFile.Write(inData,inlen);
}
}
//结束Start
ept->Target = TGT_DEVICE;
ept->ReqType = REQ_VENDOR;
ept->Direction = DIR_TO_DEVICE;
ept->ReqCode = 0xAB; //请求码
ept->Value = 0;
ept->Index = 0;
PUCHAR buf=new UCHAR[2];
ZeroMemory(buf, 2);
LONG buflen = 2;
buf[0]=0xAB;
buf[1]=0x00; //结束Start
ept->XferData(buf,buflen);
CloseHandle(inOvLap.hEvent);
delete [] inData;
dlg->ReadThread = NULL; //线程结束
dlg->USBDevice->Close(); //关闭USB设备
mFile.Flush(); //关闭文件
mFile.Close();
return true;
}
有时候会提示“内存不足”
有时候会出现如图的提示:

这是用另一个软件接收到的传输的数据:

解决方案
30
单步运行一下到哪里出错的
10
你这段代码错误或不合理的地方有点多啊
这里 :
PUCHAR inData = new UCHAR[512]; //数据缓冲区
ZeroMemory(inData,1024); //你只申请了512却初始化1k;
这里:
delete [] inData;//这样会产生野指针,应该加上inData = NULL;
这里:
PUCHAR buf=new UCHAR[2];
ZeroMemory(buf, 2);
内存直接没有释放。
这里 :
PUCHAR inData = new UCHAR[512]; //数据缓冲区
ZeroMemory(inData,1024); //你只申请了512却初始化1k;
这里:
delete [] inData;//这样会产生野指针,应该加上inData = NULL;
这里:
PUCHAR buf=new UCHAR[2];
ZeroMemory(buf, 2);
内存直接没有释放。