中易网

有没有人知道usb接口的协议,和如何通过vc软件开发设计读写usb设备

答案:2  悬赏:60  
解决时间 2021-02-19 19:42
有没有人知道usb接口的协议,和如何通过vc软件开发设计读写usb设备
最佳答案
USB是一种支持在USB主机和USB设备之间进行串行数据传输的通信协议。主机作为总线的主叫方,采用两种信令模式:全速模式12Mb/s和低速模式1.5Mb/s。USB使用四种数据传输方式:控制传输(control)、中断传输(interrupt)、批量传输(bulk)及等时传输(isochronous)。其中控制模式主要用于控制指令传输及USB规范的实现,等时传输主要用于音频及视频传输。USB通过两次总线列举(Enumeration and Renumertion)来实现设备识别以及驱动程序析加载。其具体过程为:USB设备连到主机后,主机依据USB规范在特定地址通过端口0(endpoint0)与外设通信,并将外设视为默认设备。外设与主机通信将其6设备标识(DID、PID、VID)发给主机进行第二次总线列举。主机根据设备标识,加载相应设备驱动程序,重新分配地址,并将控制权转交给外设固件(firmware),通过固件与设备驱动程序及主机应用程序的交互通信,来实现外设的功能。
全部回答
#include <stdio.h> #include <windows.h> #include <setupapi.h> #include <devguid.h> #include <regstr.h> #pragma comment(lib, "setupapi.lib ") int main( ) { hdevinfo hdevinfo; sp_devinfo_data deviceinfodata; sp_device_interface_data deviceinterfacedata; dword i; guid aa; guid *ab; ab=&aa; i=sizeof(guid); dword datat; char buf[255]; memset(buf,0,256); lptstr buffer = buf; dword buffersize = 0; if(!setupdiclassguidsfromname( "net ",ab,i,&i))//通过设备类名得到设备类型的guid { printf( "false "); return 1; } hdevinfo = setupdigetclassdevs(ab, 0, 0, 0);//digcf_present | digcf_allclasses );//通过设备类型guid得到这类设备信息的句柄 if (hdevinfo == invalid_handle_value) { // insert error handling here. return 1; } // enumerate through all devices in set. printf( "guid={%x-%x-%x-%x%x-%x%x%x%x%x%x}\n ",ab-> data1,ab-> data2,ab-> data3,ab-> data4[0],ab-> data4[1],ab-> data4[2],ab-> data4[3],ab-> data4[4],ab-> data4[5],ab-> data4[6],ab-> data4[7]); deviceinfodata.cbsize = sizeof(sp_devinfo_data); for (i = 0;setupdienumdeviceinfo(hdevinfo, i, &deviceinfodata); i++)//枚举这类设备中所有的设备 { // for(int s=0;s <2;s++)//因为有些时候第一次调用setupdigetdeviceregistryproperty可能会失败,所以调用两次, // { // setupdigetdeviceregistryproperty(hdevinfo, &deviceinfodata, spdrp_devicedesc, // &datat, (pbyte)buffer, buffersize, &buffersize);//得到设备属性 // } // printf( "设备: [ %s size=%d ]\n ",buffer,buffersize); // memset(buf,0,256); for (int m = 0; setupdienumdeviceinterfaces(hdevinfo, &deviceinfodata, ab,m,&deviceinterfacedata); m++)//枚举这类设备中所有的设备 { printf( "guid={%x-%x-%x-%x%x-%x%x%x%x%x%x}\n ",deviceinterfacedata.interfaceclassguid.data1,deviceinterfacedata.interfaceclassguid.data2,deviceinterfacedata.interfaceclassguid.data3,deviceinterfacedata.interfaceclassguid.data4[0], deviceinterfacedata.interfaceclassguid.data4[1],deviceinterfacedata.interfaceclassguid.data4[2],deviceinterfacedata.interfaceclassguid.data4[3],deviceinterfacedata.interfaceclassguid.data4[4],deviceinterfacedata.interfaceclassguid.data4[5], deviceinterfacedata.interfaceclassguid.data4[6],ab-> data4[7]); //printf( "设备: [ %s size=%d ]\n ",buffer,buffersize); //memset(buf,0,256); } //printf( "do you want close this driver (yes)y or (no)n\n "); // char ch[128]; //scanf( "%s ",ch); // if(ch[0]== 'y ') // { // } } if ( getlasterror()!=no_error && getlasterror()!=error_no_more_items ) { // insert error handling here. return 1; } // cleanup setupdidestroydeviceinfolist(hdevinfo); return 0; } 这段代码中的 就是移除指定的设备
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
初中毕业生综合评语评价表 自评应该怎么写?
编程实现图象的同态滤波(滤波参数通过键盘输
张大胖猪肉直销站繁昌路店这个地址在什么地方
家庭用咸菜脱腌制的黄瓜脱水水机
苏宁的手机可靠吗?
湘味轩这个地址在什么地方,我要处理点事
针对成语嫁给了广告的现象,短文中概括写出了
下雨浇进白菜心里会不会烂心
朱家尖的简介
侯家塘街道麻园湾社区居民委员会怎么去啊,有
我的手机是魅蓝note1,最近买了个咕咕机,可是
宁家山地址在哪,我要去那里办事
成考大专毕业证可以考医学检验师吗?
无锡皮肤管理皮肤管理学校,前十名
山里人根艺馆在什么地方啊,我要过去处理事情
推荐资讯
祥瑞茶庄在哪里啊,我有事要去这个地方
两元店到十元店怎么加盟
崇阳距离安微省马鞍山市有多少公里路?
想跟堂妹做,她今年21,怎么跟她说呢,她太迷
宋雪食杂店这个地址在什么地方,我要处理点事
75除以3分之2怎么列算式?
芦荟被我养成这样了,大神给看看需要砍头么
阿迪达斯ub求鉴定
0.03里面有3个( )分之一,它表示( )分之( ),化
买了国华人寿长期重疾险到期可以拿到本金吗
为什么本科院校计算机二级都考江苏省的,全国
高考没上线请问可以读哪些大学?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?