m0_38122594 2017-05-08 11:42 采纳率: 0%
浏览 1466

为什么我的上位机接受不到USB数据,且打开的文件是空白????

这是我的代码,求指教!!!!!!!
mfile.Open(_T("e:\1.txt"), CFile::modeCreate);
mfile.Close();
XferThread = NULL; //线程禁止
USBDevice = new CCyUSBDevice(m_hWnd); // Create an instance of CCyUSBDevice
if (XferThread) { //如果线程已经开始
bLooping = false; //置线程循环标志为假
InEndpt->Abort();
InEndpt->Reset();
AfxMessageBox(_T("开始"));
//m_StartBtn.SetWindowText(_T("be start")); //开始按钮为“start”
}
else {
if(USBDevice->Open(0))
InEndpt = USBDevice->EndPointOf(0x02);
// Launch the looping thread (Calls XferLoop() function, above.)
//启动线程循环,调用xferloop函数
if (USBDevice->IsOpen()) { //如果USB设备已经打开且传输自己不为0
bLooping = true; //线程循环标志为真
AfxMessageBox(_T("开始读线程"));
XferThread = AfxBeginThread(XferLoop, this); //启动线程
AfxMessageBox(_T("结束"));
}

    //m_StartBtn.SetWindowText(_T("读取结束"));
}

UINT XferLoop(LPVOID params) {

OVERLAPPED inOvLap;
CMFCApplication1Dlg *dlg = (CMFCApplication1Dlg *)params;       //使该线程可访问CBulkLoopDlg类的所有公有成员
PUCHAR inData = new UCHAR[512];
CString  str;
//ZeroMemory(inData, WINDOW_X*WINDOW_Y * 2);   //存储从USB固件发来的数据
ZeroMemory(inData, 512);
inOvLap.hEvent = CreateEvent(NULL, false, false, L"CYUSB_IN");
bool success;
dlg->InEndpt->TimeOut = 2000;
for (; dlg->bLooping;) {                        //线程循环,直到循环标志blooping为假
    LONG inlen;
    //inlen = WINDOW_X*WINDOW_Y * 2;
    inlen = 512;
    UCHAR  *inContext = dlg->InEndpt->BeginDataXfer(inData, inlen, &inOvLap);
    dlg->InEndpt->WaitForXfer(&inOvLap, 1200);
    success = dlg->InEndpt->FinishDataXfer(inData, inlen, &inOvLap, inContext);
    if (success) { 
        mfile.Open(_T("e:\\1.txt"), CFile::modeWrite);
        mfile.SeekToEnd();
        mfile.Write(inData, inlen);
        mfile.Close();;
    }
    if (!success)
        dlg->bLooping = false;
}
CloseHandle(inOvLap.hEvent);
delete[] inData;
dlg->XferThread = NULL;
dlg->USBDevice->Close();

return true;

}

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-05-08 16:09
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog