阅读:1661回复:7
USB 驱动难题
// 数据采集线程,将USB传来的数据填入环形缓冲池
VOID UDAQDevice::Sample(void) { ULONG nBytesRead; bool Tag; LONG i,gap,k; PUCHAR temp; t << "UDAQDevice::Sample Begin\n"; //nBytesRead=0; while(1) { if(!BTerminate) { pSampleThread->Terminate(STATUS_SUCCESS); return; } PURB pUrb = m_BULKIN.BuildBulkTransfer( m_pTail, // Where is data go to m_Size, // How much data to read? TRUE, // direction (TRUE = IN) NULL, // Link to next URB TRUE // Allow a short transfer ); m_BULKIN.SubmitUrb( pUrb,NULL,NULL,1000); //设置成1000以使驱动程序可以自动卸载,即1秒后若无数据接收则此函数返回,不至于死等。 //以上函数如提交给底层硬件后,如没有数据收到,则应马上返回,且nBytesRead=0, //但实际情况是WINDOWS底层没有很快地提交,示波器观察到是1ms多才交一次 //而底层硬件是0.5ms就准备好一帧数据,则上述函数要比0.5ms更短内的时间内 //提交一次才不至于丢帧。 nBytesRead = pUrb->UrbBulkOrInterruptTransfer.TransferBufferLength; delete pUrb; if(!nBytesRead) //{t << "NO DATA " << "\n"; continue; //} //如果此次提交URB没采集到数据,则立即返回,重新循环 temp=m_pTail; m_pTail += nBytesRead; t << "Data: " << nBytesRead << " Bytes \n"; /*for(k=0;k<nBytesRead;k++) t << *temp++ ; t<<"\n";*/ } } |
|
|
沙发#
发布于:2005-08-05 15:26
10.095 Default UDAQ: UDAQDevice::Create(KIrp I)
10.095 Default UDAQ: UDAQDevice::Create Status 0x00000000 11.427 Default UDAQ: UDAQDevice::DeviceControl(KIrp I) 11.427 Default UDAQ: UDAQDevice::Sample Begin 11.427 Default UDAQ: Data: 0x0000003f Bytes 11.427 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.437 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.447 Default UDAQ: Data: 0x0000003f Bytes 11.457 Default UDAQ: Data: 0x0000003f Bytes //从这儿可以看出,我的DS27带的MONITOR只能以10ms为单位打印数据 11.467 Default UDAQ: Data: 0x0000003f Bytes //可能还有数据没打出来,还是别的原因?11.447这个时间单位内打印了20多个数据 11.467 Default UDAQ: Data: 0x0000003f Bytes //如果都是这样就对了,因为我下面单片机是0.5ms发一帧数据,10ms应该接收到20帧 11.467 Default UDAQ: Data: 0x0000003f Bytes //但接着11.457这个10ms就只打印了一帧,不知是MONITOR没时间打印还是实际真的没接收到数据 11.477 Default UDAQ: Data: 0x0000003f Bytes //还有,我看武安河那本书上的MONITOR能把打印时间精确到10us,也就是小数点后5位,我的为何只有3位, 11.477 Default UDAQ: Data: 0x0000003f Bytes //而且最后一位还不变,则只精确到10ms 11.477 Default UDAQ: Data: 0x0000003f Bytes 11.477 Default UDAQ: Data: 0x0000003f Bytes 11.477 Default UDAQ: Data: 0x0000003f Bytes //结合我的驱动程序里数据采集线程那段可以看出,如果m_BULKIN.SubmitUrb()这个函数执行得很快的话, 11.477 Default UDAQ: Data: 0x0000003f Bytes //打印结果应该是打很多行“NO DATA“后才打一行"DATA 0x0000003f Bytes",而实际情况不是这样。 11.477 Default UDAQ: Data: 0x0000003f Bytes 11.477 Default UDAQ: Data: 0x0000003f Bytes 11.477 Default UDAQ: Data: 0x0000003f Bytes 11.477 Default UDAQ: Data: 0x0000003f Bytes 11.487 Default UDAQ: Data: 0x0000003f Bytes 11.487 Default UDAQ: Data: 0x0000003f Bytes 11.487 Default UDAQ: Data: 0x0000003f Bytes 11.497 Default UDAQ: Data: 0x0000003f Bytes 11.497 Default UDAQ: Data: 0x0000003f Bytes 11.497 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.507 Default UDAQ: Data: 0x0000003f Bytes 11.517 Default UDAQ: Data: 0x0000003f Bytes 11.537 Default UDAQ: Data: 0x0000003f Bytes 11.557 Default UDAQ: Data: 0x0000003f Bytes 11.557 Default UDAQ: Data: 0x0000003f Bytes 11.557 Default UDAQ: Data: 0x0000003f Bytes 11.557 Default UDAQ: Data: 0x0000003f Bytes 11.557 Default UDAQ: Data: 0x0000003f Bytes 11.557 Default UDAQ: Data: 0x0000003f Bytes 11.567 Default UDAQ: Data: 0x0000003f Bytes 11.567 Default UDAQ: Data: 0x0000003f Bytes 11.587 Default UDAQ: Data: 0x0000003f Bytes 11.607 Default UDAQ: Data: 0x0000003f Bytes 11.607 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.617 Default UDAQ: Data: 0x0000003f Bytes 11.627 Default UDAQ: Data: 0x0000003f Bytes 11.627 Default UDAQ: Data: 0x0000003f Bytes 11.647 Default UDAQ: Data: 0x0000003f Bytes 11.667 Default UDAQ: Data: 0x0000003f Bytes 11.667 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.677 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.687 Default UDAQ: Data: 0x0000003f Bytes 11.697 Default UDAQ: Data: 0x0000003f Bytes 11.717 Default UDAQ: Data: 0x0000003f Bytes 11.737 Default UDAQ: Data: 0x0000003f Bytes 11.737 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.747 Default UDAQ: Data: 0x0000003f Bytes 11.757 Default UDAQ: Data: 0x0000003f Bytes 11.777 Default UDAQ: Data: 0x0000003f Bytes 11.797 Default UDAQ: Data: 0x0000003f Bytes 11.827 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.837 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.847 Default UDAQ: Data: 0x0000003f Bytes 11.857 Default UDAQ: Data: 0x0000003f Bytes 11.877 Default UDAQ: Data: 0x0000003f Bytes 11.897 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.908 Default UDAQ: Data: 0x0000003f Bytes 11.918 Default UDAQ: Data: 0x0000003f Bytes 11.968 Default UDAQ: UDAQDevice::DeviceControl(KIrp I) 11.978 Default UDAQ: Data: 0x0000003f Bytes Monitor -- end -- |
|
|
板凳#
发布于:2005-08-05 16:26
你要说明什么问题
是不是告诉我你的驱动会丢数据,或者速度达不到 如果是这样,肯定是你的驱动问题 |
|
|
地板#
发布于:2005-08-05 16:27
你要说明什么问题
是不是告诉我你的驱动会丢数据,或者速度达不到 如果是这样,肯定是你的驱动问题(当然,硬件也可能,我的意思是实际上是可以做到满足你的速度要求的) |
|
|
地下室#
发布于:2005-08-05 16:32
是呀, 你的问题是什么都没有说明, 别人怎么帮你
|
|
|
5楼#
发布于:2007-01-06 13:43
期待中
|
|
|
6楼#
发布于:2007-01-11 14:49
期待中
|
|
7楼#
发布于:2007-01-15 09:32
2年前的东西了,楼上几位期待什么???
|
|