UWP的HID设备的APP编写
项目需要开发一个UWP的调试设备信息的工具,初次接触,记录一下过程。
设备的信息:
首先需要了解你要处理的设备信息,这些信息最主要的是VID/PID/Usage Page/Usage Id;这些信息可以根据一下设备的描述符中提取:
eg:
/// <summary>
/// This is the report descriptor for the support SuperMutt device
///
/// 0x06, 0xAA, 0xFF, // USAGE_PAGE (Vendor Defined Page 1)
/// 0x09, 0x01, // USAGE (Vendor Usage 1)
/// 0xa1, 0x01, // COLLECTION (Application)
/// 0x85, 0x01, // REPORT_ID (1)
/// 0xa1, 0x00, // COLLECTION (Physical)
/// 0x05, 0x09, // USAGE_PAGE (Button)
/// 0x19, 0x01, // USAGE_MINIMUM (Button 1)
/// 0x29, 0x04, // USAGE_MAXIMUM (Button 4)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x25, 0x01, // LOGICAL_MAXIMUM (1)
/// 0x75, 0x01, // REPORT_SIZE (1)
/// 0x95, 0x04, // REPORT_COUNT (4)
/// 0x81, 0x02, // INPUT (Data,Var,Abs)
/// 0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
/// 0x09, 0xe0, // USAGE (Volume)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x25, 0x0a, // LOGICAL_MAXIMUM (10)
/// 0x35, 0x00, // PHYSICAL_MINIMUM (0)
/// 0x45, 0x64, // PHYSICAL_MAXIMUM (100)
/// 0x75, 0x04, // REPORT_SIZE (4)
/// 0x95, 0x01, // REPORT_COUNT (1)
/// 0x81, 0x02, // INPUT (Data,Var,Abs)
/// 0xc0, // END_COLLECTION
/// 0xa1, 0x00, // COLLECTION (Physical)
/// 0x05, 0x09, // USAGE_PAGE (Button)
/// 0x19, 0x01, // USAGE_MINIMUM (Button 1)
/// 0x29, 0x04, // USAGE_MAXIMUM (Button 4)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x25, 0x01, // LOGICAL_MAXIMUM (1)
/// 0x75, 0x01, // REPORT_SIZE (1)
/// 0x95, 0x04, // REPORT_COUNT (4)
/// 0x91, 0x02, // OUTPUT (Data,Var,Abs)
/// 0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
/// 0x09, 0xe0, // USAGE (Volume)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x25, 0x0a, // LOGICAL_MAXIMUM (10)
/// 0x35, 0x00, // PHYSICAL_MINIMUM (0)
/// 0x45, 0x64, // PHYSICAL_MAXIMUM (100)
/// 0x75, 0x04, // REPORT_SIZE (4)
/// 0x95, 0x01, // REPORT_COUNT (1)
/// 0x91, 0x02, // OUTPUT (Data,Var,Abs)
/// 0xc0, // END_COLLECTION
/// 0xa1, 0x02, // COLLECTION (Logical)
/// 0x85, 0x03, // REPORT_ID (3)
/// 0x06, 0xAA, 0xff, // USAGE_PAGE (Vendor Defined Page 1)
/// 0x09, 0x01, // USAGE (Vendor Usage 1)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x25, 0x01, // LOGICAL_MAXIMUM (1)
/// 0x75, 0x01, // REPORT_SIZE (1)
/// 0x95, 0x01, // REPORT_COUNT (1)
/// 0x91, 0x02, // OUTPUT (Data,Var,Abs)
/// 0x95, 0x07, // REPORT_COUNT (7)
/// 0x91, 0x07, // OUTPUT (Cnst,Var,Rel)
/// 0xc0, // END_COLLECTION
/// 0xa1, 0x02, // COLLECTION (Logical)
/// 0x85, 0x04, // REPORT_ID (4)
/// 0x06, 0xAA, 0xff, // USAGE_PAGE (Vendor Defined Page 1)
/// 0x09, 0x01, // USAGE (Vendor Usage 1)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
/// 0x75, 0x08, // REPORT_SIZE (8)
/// 0x95, 0x01, // REPORT_COUNT (1)
/// 0xb1, 0x02, // FEATURE (Data,Var,Abs)
/// 0xc0, // END_COLLECTION
/// 0x06, 0xDD, 0xff, // USAGE_PAGE (Vendor Defined Page 1)
/// 0x09, 0x01, // USAGE (Vendor Usage 1)
/// 0xa1, 0x02, // COLLECTION (Logical)
/// 0x85, 0xff, // REPORT_ID (255)
/// 0x09, 0x01, // USAGE (Vendor Usage 1)
/// 0x15, 0x00, // LOGICAL_MINIMUM (0)
/// 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
/// 0x75, 0x08, // REPORT_SIZE (8)
/// 0x95, 0x01, // REPORT_COUNT (1)
/// 0xb1, 0x02, // FEATURE (Data,Var,Abs)
/// 0xc0, // END_COLLECTION
/// 0xc0 // END_COLLECTION
/// </summary>
工程(demo)的获取
demo的下载,由于对此平台完成不了解,借用大神的代码进行编写。git下载地址:UWP demo, 其中包括多种应用的demo, 我根据自己的需要,设备使用的USB HID协议,采用了其中的CustomHidDeviceAccess项目,选用cs文件,用C#进行编写。
打开demo文件,进行生成编译,看下自己的vs是否具有编写此功能的文件,若没有,则对VS进行修改,会自动安装所需要的控件。
识别设备信息的添加
demo文件可以运行后,将自己的设备信息替换原有的设备信息。在文件:SampleConfiguration.cs中修改,如图:
这样工具就可以识别到设备,但是无法连接。
连接设备信息的添加
选择Package.appxmanifest文件,右键--查看代码,将其中默认的设备信息humaninterfacedevice更改为我们的信息。如图:
运行设备,点击连接设备,应该就可以成功了。
工具其他部门的补充和修改
UI界面可以在demo的基础上做对应的修改。设备的其他功能类似与WPF文件的编写,可以继续进行。
工具的生成
将工具完成后需要下发到用户手中。点击 项目---应用商店----创建应用项目程序包----我想要创建旁加载包---下一步--根据需要修改版本信息和打包的文件---创建,在文件的目录下AppPackages下会生成所需要的包。
最终生成的工具
使用方法,右键.ps1,powershell运行即可根据提示安装。在应用程序中可找到安装的工具。
证书的生成
这里涉及到证书,需要创建。
双击Package.appxmanifest文件,选择打包---发布者中:选择证书---配置证书----创建测试证书---填写内容---确定。
证书有效期1年,证书的续订,同上面的方法
可参考官网:对应用程序包签名(Windows 应用商店应用程序)
;;