当前位置: 首页 > news >正文

电子商务网站建设方案设计报告可以制作app的软件

电子商务网站建设方案设计报告,可以制作app的软件,网站开发课程,优化设计答案五年级下册发一个简单易用的界面#xff0c;用来对USB HID设备#xff08;比如说游戏手柄#xff0c;控制面板等#xff09;读写数据#xff0c;一般情况下面板上有一些LED#xff0c;可以帮助我们测试读写是否正确。另外#xff0c;需要可以修改vendorID和prodcutID,这样一个界面… 发一个简单易用的界面用来对USB HID设备比如说游戏手柄控制面板等读写数据一般情况下面板上有一些LED可以帮助我们测试读写是否正确。另外需要可以修改vendorID和prodcutID,这样一个界面可以用于测试多个HID设备。过程分成3步1: 列举出所有的HID设备2: 循环读取HID设备数据3: 向HID设备写数据下面我把三部分的程序单独分开方便大家学习在讲具体程序之前先说一下visual studio的环境配置我用的是2008版本下面程序需要包含DDK一部分头文件和库文件 第一步列举所有的HID设备m_ctllHIDdevices.ResetContent(); //这是MFC里面一个list控件用来显示所有的HID设备的如果你没有界面可以不需要此行UpdateData(FALSE); //更新界面CString temp;int Count 0; //Total number of devices foundDWORD strSize0,requiredSize0;BOOL result1,result2;ULONG DeviceInterfaceDetailDataSize;//定义一些变量以后会用到SP_DEVINFO_DATA DeviceInfoData;SP_DEVICE_INTERFACE_DATA  DeviceInterfaceData;PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;//PSP_DEVICE_INTERFACE_DETAIL_DATA test;//第一步获取deviceIDGUID deviceId;HidD_GetHidGuid(deviceId);//第二步获取设备信息HDEVINFO handle;handle SetupDiGetClassDevs(deviceId, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT); //Get only HID devices//第三步对所有的设备进行枚举//SetupDiEnumDeviceInterfaces();result1false; //定义一些变量result2false;CString temp11;do{          DeviceInterfaceData.cbSize sizeof(SP_DEVICE_INTERFACE_DATA);        result1 SetupDiEnumDeviceInterfaces(                        handle,                        NULL, // IN PSP_DEVINFO_DATA  DeviceInfoData,  OPTIONAL                        deviceId,                        Count,                        DeviceInterfaceData                         );       //获得设备详细数据初步       SetupDiGetDeviceInterfaceDetail(handle,          DeviceInterfaceData,          NULL,          0,          strSize,          NULL);      requiredSizestrSize;      DeviceInterfaceDetailData(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(requiredSize);      DeviceInterfaceDetailData-cbSizesizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);      DeviceInfoData.cbSizesizeof(SP_DEVINFO_DATA);      //再次获得详细数据      result2SetupDiGetDeviceInterfaceDetail(handle,            DeviceInterfaceData,            DeviceInterfaceDetailData,            strSize,            requiredSize,            DeviceInfoData);       //获得设备路径最重要的部分       tempDeviceInterfaceDetailData-DevicePath;       UpdateData(FALSE);       m_ctllHIDdevices.AddString(temp);       Count;   } while (result1);      UpdateData(false);到这个时候为止所有的设备路径都会显示在窗口的listbox里面   第二步循环读取HID设备数据根据用户提供的HID的vendorID和productID)并且把字节解码成二进制在MFC界面上用LED展示为了不影响主线程的运行我把读取数据的操作放在一个子线程里每隔50ms去读取一次数据首先创建一个线程        HANDLE hThread1;        bStopHIDfalse; //这个变量以后用来停止线程        UpdateData(true); //更新界面获取变量        UpdateData(false);        hThread1 CreateThread(NULL,0,Thread_Enable_Read,(LPVOID)this, NULL, NULL);在线程的程序里       CusbhidDlg *p ( CusbhidDlg *)pvParam; //获取主窗口的指针用来调用主窗口的变量和函数                p-UpdateData(true);        p-bStopHIDfalse;        CString temp;        CString DevicePath;        temp;        int Count 0; //Total number of devices found        DWORD strSize0,requiredSize0;        BOOL result1,result2;        ULONG DeviceInterfaceDetailDataSize;                SP_DEVINFO_DATA DeviceInfoData;        SP_DEVICE_INTERFACE_DATA  DeviceInterfaceData;        PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;        //PSP_DEVICE_INTERFACE_DETAIL_DATA test;        //1        GUID deviceId;        HidD_GetHidGuid(deviceId);        int venderIDp-v_eVendorID; //从窗口里获取用户输入的VendorID        int productIDp-v_eProductID;//从窗口里获取用户输入的ProductID                unsigned char inbuffer[2]; //用来存放读取的数据请在这里定义你自己需要的长度我每次读一个字节进来        unsigned long numBytesReturned;        HIDD_ATTRIBUTES devAttr;        PHIDP_PREPARSED_DATA PreparsedData;        HIDP_CAPS Capabilities;        int readValue;        bool LED;        int flag0;                        //2        HDEVINFO handle;        handle SetupDiGetClassDevs(deviceId, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT); //Get only HID devices        int i0;        int jp-m_ctllHIDdevices.GetCount();        for (i0;ip-m_ctllHIDdevices.GetCount();i)        {                p-m_ctllHIDdevices.GetText(i,temp);                DevicePathtemp;               //CreateFile是非常重要的一步用来建立于HID通信的句柄                HANDLE hCom CreateFile (                DevicePath,                GENERIC_READ | GENERIC_WRITE,                FILE_SHARE_READ | FILE_SHARE_WRITE,                NULL,                OPEN_EXISTING, 0,                NULL);                if (hCom INVALID_HANDLE_VALUE)                {                                //AfxMessageBox(Invalide Device Path...);                   continue;                }                devAttr.Sizesizeof(HIDD_ATTRIBUTES);                if (!HidD_GetAttributes(hCom,devAttr))                {                        CloseHandle(hCom);                        AfxMessageBox(Cannot get the parameters of the HID...);                        return 0;                   }                //temp.Format(Vendor ID: %d, Product ID:%d,devAttr.VendorID,devAttr.ProductID); //Compare with the Vendor ID and Product ID from Nakamura-san                //AfxMessageBox(temp);                        if (!HidD_GetPreparsedData(hCom,PreparsedData))                {                        CloseHandle(hCom);                        AfxMessageBox(Cannot get the Preparsed Data...);                        return 0;                   }                                        if(!HidP_GetCaps(PreparsedData,Capabilities))                {                        CloseHandle(hCom);                        AfxMessageBox(Cannot get the Cap Data...);                        return 0;                   }               if (devAttr.VendorID venderID devAttr.ProductID productID)                 {                                while(1)                                {                                        result1 ReadFile(hCom, inbuffer[0], Capabilities.InputReportByteLength, numBytesReturned, 0);                                        tempinbuffer;                                        //p-m_eDataReadCString(inbuffer);                                        //p-UpdateData(false);                                        if(!result1)                                        {                                                AfxMessageBox(Cannot Read Data...);                                                return 0;                                                                                   }                                        readValueinbuffer[1];                                        p-m_eDataRead.Format(%d,readValue);                                        //下面是我把数据从10进制转换成二进制并且点亮LED (一个字节有8个bits,可以点亮8个LED                                        for (int k0;k8;k)                                        {                                                                                                flagreadValue%2;                                                readValuereadValue/2;                                                                                                        if (k0)                                                {                                                        if (flag0)                                                                p-m_sDynLED0.SwitchOff();                                                        else                                                                p-m_sDynLED0.SwitchOn();                                                }                                                else if (k1)                                                {                                                        if (flag0)                                                                p-m_sDynLED1.SwitchOff();                                                        else                                                                p-m_sDynLED1.SwitchOn();                                                }                                                                                                else if (k2)                                                {                                                        if (flag0)                                                                p-m_sDynLED2.SwitchOff();                                                        else                                                                p-m_sDynLED2.SwitchOn();                                                }                                                                                                else if (k3)                                                {                                                        if (flag0)                                                                p-m_sDynLED3.SwitchOff();                                                        else                                                                p-m_sDynLED3.SwitchOn();                                                }                                                                                                else if (k4)                                                {                                                        if (flag0)                                                                p-m_sDynLED4.SwitchOff();                                                        else                                                                p-m_sDynLED4.SwitchOn();                                                }                                                                                                else if (k5)                                                {                                                        if (flag0)                                                                p-m_sDynLED5.SwitchOff();                                                        else                                                                p-m_sDynLED5.SwitchOn();                                                }                                                                                                else if (k6)                                                {                                                        if (flag0)                                                                p-m_sDynLED6.SwitchOff();                                                        else                                                                p-m_sDynLED6.SwitchOn();                                                }                                                                                                else if (k7)                                                {                                                        if (flag0)                                                                p-m_sDynLED7.SwitchOff();                                                        else                                                                p-m_sDynLED7.SwitchOn();                                                }                                                                        }                                        p-UpdateData(false);                                                                                ::Sleep(50);                                        //判断用户是否点击停止按钮若是则退出                                        if(p-bStopHID)                                         {                                        AfxMessageBox(stopped...);                                        return 0;                                        }                                }                }        }        if (ij)        {                AfxMessageBox(There is no such HID device...);        }        return 0; 第三步向HID设备写数据根据用户提供的HID的vendorID和productID)用户输入的是二进制数据与读的程序一样唯一区别就是红色那部分UpdateData(true);bStopHIDfalse;CString temp;CString DevicePath;temp;int Count 0; //Total number of devices foundDWORD strSize0,requiredSize0;BOOL result1,result2;ULONG DeviceInterfaceDetailDataSize; SP_DEVINFO_DATA DeviceInfoData;SP_DEVICE_INTERFACE_DATA  DeviceInterfaceData;PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;//PSP_DEVICE_INTERFACE_DETAIL_DATA test;//1GUID deviceId;HidD_GetHidGuid(deviceId);int venderIDv_eVendorID;int productIDv_eProductID;unsigned char inbuffer[2];unsigned long numBytesReturned;HIDD_ATTRIBUTES devAttr;PHIDP_PREPARSED_DATA PreparsedData;HIDP_CAPS Capabilities;int readValue;bool LED;int flag0;inbuffer[0]0;//把界面里的二进制转换成10进制inbuffer[1]m_eByte0*1m_eByte1*2m_eByte2*4m_eByte3*8m_eByte4*16m_eByte5*32m_eByte6*64m_eByte7*128;v_eDataToWriteinbuffer[1];UpdateData(false);//2HDEVINFO handle;handle SetupDiGetClassDevs(deviceId, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT); //Get only HID devicesint i0;int jm_ctllHIDdevices.GetCount();for (i0;im_ctllHIDdevices.GetCount();i){  m_ctllHIDdevices.GetText(i,temp);  DevicePathtemp;  HANDLE hCom CreateFile (              DevicePath,              GENERIC_READ | GENERIC_WRITE,              FILE_SHARE_READ | FILE_SHARE_WRITE,              NULL,              OPEN_EXISTING, 0,              NULL);  if (hCom INVALID_HANDLE_VALUE)  {                  //AfxMessageBox(Invalide Device Path...);           continue;  }  devAttr.Sizesizeof(HIDD_ATTRIBUTES);  if (!HidD_GetAttributes(hCom,devAttr))  {   CloseHandle(hCom);   AfxMessageBox(Cannot get the parameters of the HID...);   return;     }  //temp.Format(Vendor ID: %d, Product ID:%d,devAttr.VendorID,devAttr.ProductID); //Compare with the Vendor ID and Product ID from Nakamura-san  //AfxMessageBox(temp);  if (!HidD_GetPreparsedData(hCom,PreparsedData))  {   CloseHandle(hCom);   AfxMessageBox(Cannot get the Preparsed Data...);   return;     }    if(!HidP_GetCaps(PreparsedData,Capabilities))  {   CloseHandle(hCom);   AfxMessageBox(Cannot get the Cap Data...);   return;     }// Write File  if (devAttr.VendorID venderID devAttr.ProductID productID)   {   result1 WriteFile(hCom, inbuffer, 2, numBytesReturned, NULL);   //tempinbuffer;   //p-m_eDataReadCString(inbuffer);   //p-UpdateData(false);   if(!result1)   {      AfxMessageBox(Cannot Write Data...);      return;           }   AfxMessageBox(Suncess...);   break;     }}if (ij){  AfxMessageBox(There is no such HID device...);}return;       转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3216088.html
http://www.sadfv.cn/news/330158/

相关文章:

  • 芜湖做网站优化高新网站建设
  • 律所网站建设网站色调代号
  • 自己做网站微商关键词组合工具
  • 深圳宝安网站建设500元起价四川城乡与建设厅网站
  • 网站建设天津网站建设安排总结
  • 大商创官网周口搜索引擎优化
  • 青岛网站营销推广深圳宝安高端网站建设公司
  • 企业如何免费做网站网络设计思路
  • 中国做的手机系统下载网站wordpress 获取用户名
  • 二级网站建设 管理思路上海大型广告公司排名
  • 网站头部特效seo点击工具
  • 企业网站建设 英铭美妆网站建设规划
  • 会员卡怎么制作网站seo 工具
  • 长春建站企业腾讯域名怎么建设网站
  • 双语 网站 数据怎么做推荐wordpress主题xiu
  • 用jsp做的网站有哪些导视设计案例分析
  • linuxvps建站教程国内flash网站
  • pinterest网站怎么进网页设计制作报告
  • excel表格做网站做炒作的网站
  • 成立一个网站软件需要多少钱全自动网站制作源码
  • 做一个网站需要什么条件商城网站建设是什么意思
  • 如何进行网站性能优化?苏州网站制作搭建
  • 锤子手机网站模板商务网站开发与建设
  • 做网站用的什么编程语言网站的常用技术有哪些
  • 南宁网站建设优化排名柘城网站建设
  • 做做做网站wordpress二维码
  • 品牌网站建设帮你大蝌蚪网站建设网站排名
  • 网站 代理 备案 费用admin管理员登录
  • 网站八个安康市教育云平台
  • 大良营销网站建设服务广州广告网站建设