阅读:1513回复:9
请帮忙看看是否合理,救急!!给分
使用cypress的usb芯片,再从下位机读数据时,由于不知道什么时候会有数据要向上传送所以上位机采用定时启动读线程的方法,我设想了两种方案,方案一是使用IOCTL_EZUSB_ISO_READ,每个一定的时间例如2ms或16ms启动一次读线程,每次读取2个或16个包,然后根据包描述符里的length一项判断所读上来的包那个有效,有效数据是多少,方案二是使用IOCTL_EZUSB_START_ISO_STREAM一直不停的读,然后每隔一定的时间,例如64ms或128ms(具体时间数值上等于IOCTL_EZUSB_START_ISO_STREAM中的packetcount)调用一次IOCTL_EZUSB_ READ_ISO_BUFFER从读缓存中把读到的数据取来,判断的方法和方案一一样,不知这两种方法是否合理,是否还有别的更好的方法,请大侠指点,救急!!谢谢。
|
|
沙发#
发布于:2002-10-11 11:37
关注!
|
|
|
板凳#
发布于:2002-10-11 12:41
可韵 用 INTERRUPT.
有才做 |
|
地板#
发布于:2002-10-11 12:52
可以用Win32 API函数ReadFile(...),用一个线程专门负责读数据,用延迟读的方法,没有数据的话ReadFile函数不会返回,直到等到数据再返回。
|
|
地下室#
发布于:2002-10-11 14:10
可韵 用 INTERRUPT. 使用中断可以吗,请问怎么使用,能再说具体点吗?谢谢 usb中不是无论是IN还是OUT操作不都是由主机发起的吗? |
|
5楼#
发布于:2002-10-11 14:12
可以用Win32 API函数ReadFile(...),用一个线程专门负责读数据,用延迟读的方法,没有数据的话ReadFile函数不会返回,直到等到数据再返回。 请问能再说的具体点吗?谢谢,怎样延时读,驱动中要做相关的修改吗?我用的是cypress提供的通用驱动 |
|
6楼#
发布于:2002-10-11 15:20
如果你真的方式 WORK. 就那
|
|
7楼#
发布于:2002-10-11 15:40
是不是要使用一个中断传输,我使用的是同步传输,如果使用中断传输的话,尚未机还是要定时去查询是否有中断产生,为了不丢是一个包是否就要一个毫秒查询一次?
|
|
8楼#
发布于:2002-10-11 16:05
是不是要使用一个中断传输,我使用的是同步传输,如果使用中断传输的话,尚未机还是要定时去查询是否有中断产生,为了不丢是一个包是否就要一个毫秒查询一次? 不是呃 |
|
9楼#
发布于:2002-10-11 16:27
请问你的这种方法使用的是什么传输,同步传输中怎么用?能说得明白点吗?谢谢
|
|