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

网站开发课程改革wordpress娱乐网

网站开发课程改革,wordpress娱乐网,wordpress多主题插件下载,wordpress优化加速缓存中国1. 了解相关知识 ​​HID设备通信原理​​:HID设备通过端点报告其状态和数据,设备通过报告描述符来描述数据用途,操作系统通过这个描述符了解设备发送数据的结构。通常一个完整的报告以特定的格式从设备传输至主机。​​Windows API函数​​…

1. 了解相关知识

  • ​HID设备通信原理​​:HID设备通过端点报告其状态和数据,设备通过报告描述符来描述数据用途,操作系统通过这个描述符了解设备发送数据的结构。通常一个完整的报告以特定的格式从设备传输至主机。
  • ​Windows API函数​​:在C#中,可使用Windows API函数通过P/Invoke(平台调用)方式来与HID设备交互。

2. 准备工作

  • ​获取设备信息​​:需要知道手柄的VID(Vendor ID)和PID(Product ID),你可以通过设备管理器查看。在代码中可以使用这些信息来找到对应的设备。
  • ​添加引用和定义​​:在项目中添加对System.Runtime.InteropServices的引用,以便使用Windows API函数。

3. 代码实现

定义必要的结构体和API函数
using System;
using System.Runtime.InteropServices;public class HidDevice
{// HID设备信息结构体[StructLayout(LayoutKind.Sequential)]public struct HidDeviceCaps{public Int16 UsagePage;public Int16 Usage;public Int32 VersionNumber;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]public Int16[] LogicalMinimum;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]public Int16[] LogicalMaximum;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]public Int16[] PhysicalMinimum;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]public Int16[] PhysicalMaximum;public Int32 NumberOfButtons;public Int32 NumberOfValueCaps;public Int32 NumberOfDataIndices;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]public byte[] Data;}// 导入Windows API函数[DllImport("hid.dll")]public static extern Boolean HidD_GetHidGuid(out Guid guid);[DllImport("hid.dll")]public static extern Boolean HidD_GetDeviceCaps(IntPtr hidDeviceObject, ref HidDeviceCaps capabilities);[DllImport("hid.dll")]public static extern Boolean HidD_GetInputReport(IntPtr hidDeviceObject, IntPtr buffer, Int32 bufferSize);[DllImport("kernel32.dll")]public static extern IntPtr CreateFile(String lpFileName, Int32 dwDesiredAccess, Int32 dwShareMode, IntPtr lpSecurityAttributes, Int32 dwCreationDisposition, Int32 dwFlagsAndAttributes, IntPtr hTemplateFile);[DllImport("kernel32.dll")]public static extern Boolean CloseHandle(IntPtr hObject);[DllImport("kernel32.dll", SetLastError = true)]public static extern Boolean ReadFile(IntPtr hFile, IntPtr buffer, uint nNumberOfBytesToRead, out uint lpNumberOfBytesRead, IntPtr lpOverlapped);
}
实现HID设备的数据读取
public class HidDeviceReader
{private IntPtr _hidDeviceHandle;public HidDeviceReader(string devicePath){// 打开HID设备_hidDeviceHandle = CreateFile(devicePath, FileAccess.ReadWrite, FileShare.None, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero);if (_hidDeviceHandle.ToInt32() == -1){// 处理错误throw new Exception("Unable to open the HID device.");}}public void ReadData(byte[] buffer){// 读取HID设备数据uint bytesRead;ReadFile(_hidDeviceHandle, buffer, (uint)buffer.Length, out bytesRead, IntPtr.Zero);}public void Close(){// 关闭HID设备if (_hidDeviceHandle != IntPtr.Zero){CloseHandle(_hidDeviceHandle);_hidDeviceHandle = IntPtr.Zero;}}
}
使用HidDeviceReader类来读取数据
class Program
{static void Main(){// 这里需要知道你的HID设备的路径,格式为 @"\\.\VID_XXXX&PID_XXXX"string hidDevicePath = @"\\.\VID_XXXX&PID_XXXX";HidDeviceReader reader = new HidDeviceReader(hidDevicePath);try{// 根据你的HID设备的数据报告大小创建缓冲区,示例大小为64byte[] buffer = new byte[64](@ref);// 读取数据reader.ReadData(buffer);// 处理读取到的数据ParseJoystickData(buffer);}finally{// 确保关闭设备句柄reader.Close();}}static void ParseJoystickData(byte[] data){// 这里需要根据手柄的报告描述符来解析摇杆按键数据// 例如,假设摇杆X轴数据在data[0](@ref),Y轴数据在data[1](@ref)// 按键状态在data[2](@ref)的低8位int xValue = data[0](@ref);int yValue = data[1](@ref);byte buttonState = data[2](@ref);Console.WriteLine($"X轴位置: {xValue}");Console.WriteLine($"Y轴位置: {yValue}");Console.WriteLine($"按键状态: {buttonState}");}
}

4. 注意事项

  • ​设备路径​​:需要根据实际情况修改hidDevicePath,你可以在设备管理器中找到手柄对应的设备,其路径格式一般为@"\\.\VID_XXXX&PID_XXXX",其中XXXX是十六进制的VID和PID。
  • ​数据报告大小​​:buffer数组的大小需要根据手柄的数据报告大小来确定,不同的手柄可能不同。
  • ​数据解析​​:ParseJoystickData方法中的数据解析逻辑需要根据手柄的报告描述符来编写,不同的手柄数据格式可能不同。你可以参考HID键盘对照表等相关文档来了解数据格式。


文章转载自:

http://77pkoFz1.mpbgy.cn
http://hAnozW7Z.mpbgy.cn
http://tNG2HGSU.mpbgy.cn
http://FABD5VXl.mpbgy.cn
http://LUpDLx8b.mpbgy.cn
http://f7yo01QY.mpbgy.cn
http://GuQymGzS.mpbgy.cn
http://86cKGirU.mpbgy.cn
http://F8ZSOdCZ.mpbgy.cn
http://5Y3g1DQi.mpbgy.cn
http://l8hAbQOe.mpbgy.cn
http://2OvfNbgB.mpbgy.cn
http://HqphFYhp.mpbgy.cn
http://IUdoX2tK.mpbgy.cn
http://hEdQvQUd.mpbgy.cn
http://PnJYO1kP.mpbgy.cn
http://mZP6LW01.mpbgy.cn
http://fPVXwX8q.mpbgy.cn
http://aIMYdE12.mpbgy.cn
http://IXD1lRaO.mpbgy.cn
http://mM2Xs7Pb.mpbgy.cn
http://eQJxrfII.mpbgy.cn
http://kJmraVUK.mpbgy.cn
http://yRdwZ3hG.mpbgy.cn
http://mV4zHDvI.mpbgy.cn
http://rQFTZDyq.mpbgy.cn
http://v8gVAaju.mpbgy.cn
http://R1CtPgFj.mpbgy.cn
http://y4TDdFwR.mpbgy.cn
http://bkZyhagO.mpbgy.cn
http://www.dtcms.com/wzjs/741967.html

相关文章:

  • 青海省建设厅网站职称评审表wordpress4.6字体
  • 网站首页动画怎么做的企业网站推广策划书
  • 深圳 网站开发佛山市禅城网站建设
  • 做程序题的国外网站how to use wordpress ninja forms
  • 游戏网站模板html网站wap转换
  • 网站建设的方法有wordpress修复
  • 网站建设需要提供功能目录吗松江新城投资建设集团有限公司网站
  • 建站系统源码免费的室内设计网站
  • 什么网站可以做自考试题域名估价
  • 太原网站关键词优化wordpress文章标题优化
  • 海南省做购房合同网站wordpress小工具怎么用
  • 小程序代运营多少钱一个月seo服务公司推荐
  • 网站建设管理概述怎样建设小游戏网站
  • 做那种网站受欢迎初级软件工程师报考条件
  • 厦门手机网站建设方案网站建设分录
  • 北京网站建设排行做旅游网站一年能挣多少
  • WordPress缩略图短代码郑州网站优化公司价位
  • 做网站怎么写代码杭州有几个区
  • 网站开发的理解淘宝网页版登陆
  • 怎么做网站的移动端适配版学校网站备案前置审批
  • 网站里的图片切换怎么做wordpress投稿系统
  • 网站别人能打开我打不开山东规划 建设部门的网站
  • 天津企业免费建站net core 仿wordpress
  • 双流规划建设管理局网站广州专业视频制作
  • wordpress 知名站点网站建设相关问题
  • 比较好的网站建设做产品网站费用吗
  • 商城微信网站怎么做做导购网站赚钱吗
  • 网站建设需要包含什么wordpress自定义字体
  • 网站图片不是本站的对seo有什么不好js建设网站
  • 茶叶公司网站建设策划书淮南餐饮网站建设