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

做电商怎么建网站sever2012做网站

做电商怎么建网站,sever2012做网站,做网站怎样设置搜索引擎,什么是网站建设策划书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://www.dtcms.com/a/527864.html

相关文章:

  • 注册网站怎么注册不了建设培训考试服务网站
  • 电商网站开发哪家好产品ui设计是什么
  • 网站备案都有哪些国外设计公司名字
  • 网站建设龙兵科技3d建模软件下载
  • 中文企业网站模板果洛州wap网站建设公司
  • 杭州城乡建设网站河北手机网站制作公司
  • 泰钢材企业网站源码查网站流量查询工具
  • 自己建的网站也要注册域名吗做书网站
  • 哪里可以做微网站wordpress作者头像插件
  • 2016做网站还赚钱吗网站建设兼职
  • 坂田公司做网站如何开展网络营销推广
  • 南宁企业网站设计公司海口网站建设团队
  • 织梦网站上传保存文档江苏省住房城乡建设厅门户网站
  • 做外链音乐网站沈阳建设学院
  • 网站建设怎样回答客户问题网站官网认证怎么做的
  • 网站建设潮州深圳3区最新通告
  • 抖音官网链接网站怎么做做哪一类的网站可以短时间变现
  • 大做网站外贸营销网站怎么建站
  • 口碑好网站建设电话常州互联网公司
  • 网页和网站有什么分别网站官网怎么做
  • 杭州市网站建设南京栖霞区有做网站的吗
  • wordpress主题破解seo优化排名工具
  • 做seo必须有自己网站吗大型网站制作方案
  • 动力无限西安网站建设网站建设有那些
  • 微网站怎么制作南宁百度网站公司吗
  • 无锡网站建设首选捷搜为公益组织做网站
  • 网站建设 用什么语言中学网站建设方案 分校区
  • 韩国教做发饰的网站wordpress wpml
  • 一个营业执照可以做几个网站潜江资讯网招聘信息
  • 扬中网站推广价格小厂建网站