怎样用vc通过USB接口读取数据
读取USB接口的数据与你所用设备的驱动程序有关,如果设备是自己开发那读数据根本不是什么问题,只要在驱动程序中留接口就行了。如果不是自己开发的驱动那就麻烦了,读数据就有了两层限制,第一层就是权限,我们的vc程序是工作在用户权限的,只有驱动程序暗示系统给我们读取的权限,我们才有可能读,否则几乎没戏了。第二层是驱动程序给我们什么样的接口和操作控制符,就决定了我们在vc里用什么样的函数和对应的参数。读数据的基本函数还是CreateFile、readfile、deviceiocontrol,或者设备开发商为你提供的封装好的接口函数。
读数据时,用CreateFile获得句柄可以通过两种途径,一种是用最基本的api函数找到设备的路径,另一种就是用一些工具获得设备在pc里的链接名,如winobj,devicetree什么的。
读数据之前要给接受变量分配足够的内存空间否则会接受不到数据。
以上说的一定有些问题,我自己操作音频接口一直没有得到数据,在这里说出来一是想大家帮忙纠正我的错误,二呢就是我想的不会都错了吧,应该有些是对的,希望会对看到的有些帮助。
抛砖引玉,希望大家多指教,让我们这些深陷USB泥沼的同志们早日解脱,也能让对USB接口有兴趣的朋友们早日入手,早成正果。
先谢谢各位。
等你指点。
[解决办法]
恩,我觉得过程挺对的阿,一般都需要设备驱动提供API函数,或者基于一定的架构开发的接口函数才能访问设备读取数据,比如BDA或者AVStream设备。
“读数据之前要给接受变量分配足够的内存空间否则会接受不到数据”,有些问题,因为有些USB设备驱动会做缓冲,如果都取速度慢的话,会有数据丢失,但应该可以接收到数据。
不知道你用的是什么类型的设备?
[解决办法]
我用的是自已开发的USB设备,在接收数据时,上位机慢了就会丢数据,USB设备发数据很快,可上位电脑还跟不上,要不然在读数据时,上位电脑不操作其他的,一但操作别了程序,就会影响读USB口,数据就会掉,我找了网上的独占CPU方式的设置,如setriorityclass(getcurrentprocess(),realtime_priority_class));都没用,好象是我没用上,还是这个设置不对,在工作过程中,电脑不象死机的样子,我很头痛