|
3驿站币
本帖最后由 djqlyy 于 2019-5-31 14:15 编辑
我用MFC,上面有一个按钮“开始”,点击开始时接收数据:
void CPageSpeed::OnBnClickedBtnStart()
{
//准备USB设备
CCyUSBDevice * pUSBDev=pParent->m_pUSBDevice;
int nDevIndex=pParent->m_nDevIndex;
if(pUSBDev->Open(nDevIndex))
{
//获取线程函数指针,并进行器件初始化
typedef UINT (*PSPEEDXFER)(LPVOID);
PSPEEDXFER SpeedXfer=NULL;
SpeedXfer=PageSpeed_BulkXferRead;
m_oXferParam.pPageSpeed=this;
m_oXferParam.pUSBDev=pUSBDev;
((CFxClientDlg*)GetParent())->LockAll(TRUE);
m_pXferThread=AfxBeginThread(SpeedXfer, &m_oXferParam);
}
else {}
}
接收数据的函数为PageSpeed_BulkXferRead
UINT PageSpeed_BulkXferRead(LPVOID lpParam)
{
CCyUSBDevice * pUSBDev=pBulkParam->pUSBDev;
CCyBulkEndPoint * pBulkEpIn=pUSBDev->BulkInEndPt;
BYTE * pContext=NULL;
OVERLAPPED oRdOvLap;
oRdOvLap.hEvent=CreateEvent(NULL, FALSE, FALSE, _T("CYBULK_IN"));
while(1)
{
Old_Buf = My_Read_Buf;
pContext=pBulkEpIn->BeginDataXfer(My_Read_Buf, My_Read_Buf_Size, &oRdOvLap);
}
}
当前的情况是下位机无条件一直发数据,发的数据如下,一个包512个数据,第一个数据代表第几个包,递增的
每两个包的时间间隔是200us,传输使用的USB3.0
1 0 1 .... 255 0 1 ...254
2 0 1 .... 255 0 1 ...254
3 0 1 .... 255 0 1 ...254
。。。
但接收到的数据My_Read_Buf应该是漏了很多数据,类似下面这样
1 0 1 .... 255 0 1 ...254
100 0 1 .... 255 0 1 ...254
202 0 1 .... 255 0 1 ...254
不是太有规律,但从打印出来的一些数中可以看出,两个相邻的包中间貌似大致差了100个包左右,
这个是什么原因呢??? |
上一篇: define问题下一篇: DialogBoxIndirectParamA()函数嗲用失败问题,0xx5
|