byte[] buffer = new byte[1024];
int by = 1024;
private CyBulkEndPoint cbep2;
bool x = cbep2.XferData(ref buffer, ref by)
。。。。。
CyUSB ----》 CyUSBEndPoint -----》XferData 调用此方法获取数据,运行一段时间后, 返回false 无法获取最新数据,一直重复获取最后一次数据。
重启软件 XferData 获取不到数据,需要对硬件断电 重启软件才可以正常工作
求助 如何解决此问题
谢谢
联系QQ:309065004
已解决! 转到解答。
Hi,抱歉我以为你们用的是FX3。 FX2可能调试起来没有这么方便。你们可以尝试这篇KBA中的描述:发生错误传输时,端点都会变成停止状态,必须调用ResetPipe()函数清除此状态。另外,在执行新的传输之前,程序挂起的I/O 事务也必须调用AbortPipe() 函数清除。FX3/FX2LP XferData() API使用 – KBA226200
你好 我按照你说的方法 调用了CyUSBEndPoint()->Reset( ) 此方法 返回值为:true
但是XferData() 依然是重复返回最后一次的数据,重启软件也没用,只有重新拔插USB设备 才能正常采集数据
我的意思是你重置后再用XferData 还无法传输数据吗?
可以传输数据 但是始终返回的是同一组数据
你可以用串口打印一下当出现这种情况时GPIF的状态,FX3的固件是否仍在工作,为何输出的是同一组数据。
用串口打印一下当出现这种情况时GPIF的状态,FX3的固件是否仍在工作,为何输出的是同一组数据。
能描述一下 如何进行这一步的测试吗 谢谢
Hi,抱歉我以为你们用的是FX3。 FX2可能调试起来没有这么方便。你们可以尝试这篇KBA中的描述:发生错误传输时,端点都会变成停止状态,必须调用ResetPipe()函数清除此状态。另外,在执行新的传输之前,程序挂起的I/O 事务也必须调用AbortPipe() 函数清除。FX3/FX2LP XferData() API使用 – KBA226200
非常感谢 按照你提供的方法 我再测试一下
谢谢
动态库里只有 Reset()方法 调用时返回值为:true 但采集数据依然不正确 重启软件也不对。
没有找到 ResetPipe() 此方法
用的是C# 3.4.7.0和1.2.2.0这两个版本测试的 测试环境:win7 32 、 win10 64
你在reset过后,调用了abort吗?
你好
单独调用reset ,调用reset后调用abort 这两种方式都尝试了
代码如下:
CyBulkEndPoint cbep2;
buffer = new byte[1024]; by=1024
x = cbep2.XferData(ref buffer, ref by);
当 x 返回值为false后
执行
bool v = cbep2.Reset();
bool c = cbep2.Abort();
v 、c 值为true ,必须重启软件才可以正常采集数据
在执行Reset、Abort后 初始化设备 ,在不重启软件的情况下继续采集
代码如下:
CyControlEndPoint CtrlEndPt;
CyBulkEndPoint cbep1;
CyBulkEndPoint cbep2;
CyUSBDevice myDev;
myDev = usbDevices[str] as CyUSBDevice;
CtrlEndPt = myDev.ControlEndPt;
cbep1 = myDev.BulkOutEndPt;
cbep2 = myDev.BulkInEndPt;
cbep2.TimeOut = 20;
x = cbep2.XferData(ref buffer, ref by);
x 的值 为false 采集不到数据, 必须重启软件才能正常采集数据
-----------------------------------------------------------
提示:软件可以正常采集数据。 不定期的或长时间采集的情况下会出现采集数据异常 XferData 返回值false
描述一下大概的情况:
100微伏左右的信号通过硬件放大、滤波,经过A/D转换,由51单片机采集后通过USB2.0通讯芯片(CY7C68013)用USB线上传到PC的上位机软件进行显示
数据可以正常采集
但是长时间采集会出现两种情况
1:调用XferData方法,返回值为False。但上位机软件的波形的走速比正常快,接收到的数据一直是最后一次正常的数据,接收不到新的数据
2:调用XferData方法 ,返回值为False,但上位机软件的波形的走速比正常稍微慢点,接收到的数据一直是最后一次正常的数据,接收不到新的数据