• 大小: 307KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C#
  • 标签: hidusb  hid  usb  

资源简介

赋所有源代码,开发工具vs2010 framework3.5 baidu搜索c# HidUsb都是大同小异案例,而且拿下来基本不能用。大都是围绕public static extern int CreateFile(省略众多参数..);发现没有,copy下来测试基本都是用不了的。 原因很简单:windows不允许你用程序随便就去访问硬件设备。所以在此把之前做过的基于C#开发读写HidUsb设备的项目整理成一个简单的小案例,分享给大家,开发环境VS2010。 该案例重点在public static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, IntPtr lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile); 看着貌似也是用到CreateFile这个函数,其实并不然,注意到没有"SafeFileHandle",这就是重点! 这样windows是允许程序访问外接hidusb设备的。 当然具体如何运用这个函数现在已经不是您应该 关心的了,因为我已经为您把它封装成一个类,您只要调用相应的方法就OK. 例: //第一步:获取HidUsb设备信息 List slist = new List(); UsbHidDevice usbhid = new UsbHidDevice(); usbhid.GetDeviceList(ref slist); //HidUsb设备信息包含在List数据集中 注:当获取到HidUsb设备信息为:\\?\hid#vid_0e2c&pid;_0112#6&1b44c403;&0&0000;#{4d1e55b2-f16f-11cf-88cb-001111000030}, 注意该字符串里的“vid_0e2c”和“pid_0112”部分,那么: vid为0e2c, pid为:0112 //第二步:创建一个HidUsb设备访问实例 UsbHidDevice Device = new UsbHidDevice(vid, pid); //第三步:连接HidUsb设备 Boolean connBool = Device.Connect(); //第四步:实现数据接收事件 Device.DataReceived += new UsbHidDevice.DataReceivedDelegate(Device_DataReceived); //当HidUsb设备返回信息时触发此事件 void Device_DataReceived(byte[] data) { //处理接收到的数据逻辑 } //第五步:向Hid设备发送数据"0xa0 00 0x12 0x9 0x22" string txt = "0xa0 00 0x12 0x9 0x22"; //把数据转换为字节数组 byte[] data = ConvertHelper.StringToByte(txt2); byte bt = 0; CommandMessage cmdMsg = new CommandMessage(bt, data); Boolean sbool = Device.SendMessage(cmdMsg); //发送数据 //第六步:释放所有资源 Device.Dispose();

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using USBHIDDevice;

namespace USBDevice
{
    public partial class Form1 : Form
    {
        string[] sArr = new string[] { “15“ “14“ “13“ “12“ “11“ “10“ “9“ “8“ “7“ “6“ “5“ “4“ “3“ “2“ “1“ };
        Boolean isCard = true;
        string myDataStr = ““;
        string devicePath = ““;

        Timer timer = null;
        Timer timer1 = null;
        Boolean connBool = false;

        UsbHidDevice Device;

        List txInfoList = new List();

        public Form1()
        {
            InitializeComponent();
            Initial();
                        
            this.timer = new Timer();
            this.timer.Interval = 500;
            this.timer.Tick += new EventHandler(timer_Tick);
            this.timer.Enabled = true;

            this.timer1 = new Timer();
            this.timer1.Interval = 500;
            this.timer1.Tick += new EventHandler(timer1_Tick);
            this.timer1.Enabled = true;

            string vid = “vid_0e2c“;
            string pid = “pid_0112“;

            vid = vid.Replace(“vid_“ ““);
            pid = pid.Replace(“pid_“ ““);

            int vendorID = ConvertHelper.ToInt(ConvertHelper.Hex2Ten(vid));
            int productID = ConvertHelper.ToInt(ConvertHelper.Hex2Ten(pid));

            Device = new UsbHidDevice(vendorID productID);
            Device.devicePath = this.devicePath;
                        
            Device.OnConnected += DeviceOnConnected;
            Device.OnDisConnected += DeviceOnDisConnected;
            Device.DataReceived += DeviceDataReceived;

            Button1.Click += new EventHandler(Button1_Click);
            button2.Click += new EventHandler(button2_Click);
            bttnWriteCard.Click += new EventHandler(bttnWriteCard_Click);
            button5.Click += new EventHandler(button5_Click);

            textBox4.TextChanged += new EventHandler(textBox4_TextChanged); //十进制
            textBox3.TextChanged += new EventHandler(textBox3_TextChanged); //十六进制

            dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);

            tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;

            this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);

            connBool = Device.Connect();
            ReadCard();
        }

        void Form1_FormClosed(object sender FormClosedEventArgs e)
        {
            if (this.Device != null)
            {
                this.Device.Dispose();
            }
        }

        void tabControl1_SelectedIndexChanged(object sender EventArgs e)
        {
            int n = tabControl1.SelectedInde

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        117  2015-11-19 12:50  USBDevice\USBDevice\app.config

     文件      23040  2015-11-22 20:46  USBDevice\USBDevice\bin\Debug\USBDevice.exe

     文件        117  2015-11-19 12:50  USBDevice\USBDevice\bin\Debug\USBDevice.exe.config

     文件      42496  2015-11-22 20:46  USBDevice\USBDevice\bin\Debug\USBDevice.pdb

     文件      11608  2015-11-22 21:05  USBDevice\USBDevice\bin\Debug\USBDevice.vshost.exe

     文件        117  2015-11-19 12:50  USBDevice\USBDevice\bin\Debug\USBDevice.vshost.exe.config

     文件        490  2012-06-06 02:06  USBDevice\USBDevice\bin\Debug\USBDevice.vshost.exe.manifest

     文件      35840  2015-11-22 20:46  USBDevice\USBDevice\bin\Debug\USBHIDDevice.dll

     文件      81408  2015-11-22 20:46  USBDevice\USBDevice\bin\Debug\USBHIDDevice.pdb

     文件      58481  2015-11-22 01:27  USBDevice\USBDevice\bin\Debug.rar

     文件      20992  2015-11-13 16:16  USBDevice\USBDevice\dll\hid.dll

     文件      13471  2015-11-22 01:24  USBDevice\USBDevice\Form1.cs

     文件      14530  2015-11-21 17:33  USBDevice\USBDevice\Form1.Designer.cs

     文件       6369  2015-11-21 17:33  USBDevice\USBDevice\Form1.resx

     文件        754  2015-11-13 15:10  USBDevice\USBDevice\Itemobject.cs

     文件       6518  2015-11-21 17:16  USBDevice\USBDevice\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache

     文件       6379  2015-11-22 21:04  USBDevice\USBDevice\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件       4608  2015-11-19 12:51  USBDevice\USBDevice\obj\x86\Debug\TempPE\Properties.Resources.Designer.cs.dll

     文件       2393  2015-11-22 21:05  USBDevice\USBDevice\obj\x86\Debug\USBDevice.csproj.FileListAbsolute.txt

     文件        847  2015-11-22 20:46  USBDevice\USBDevice\obj\x86\Debug\USBDevice.csproj.GenerateResource.Cache

     文件       6053  2015-11-22 20:46  USBDevice\USBDevice\obj\x86\Debug\USBDevice.csprojResolveAssemblyReference.cache

     文件      23040  2015-11-22 20:46  USBDevice\USBDevice\obj\x86\Debug\USBDevice.exe

     文件        180  2015-11-22 20:46  USBDevice\USBDevice\obj\x86\Debug\USBDevice.Form1.resources

     文件      42496  2015-11-22 20:46  USBDevice\USBDevice\obj\x86\Debug\USBDevice.pdb

     文件        180  2015-11-22 20:46  USBDevice\USBDevice\obj\x86\Debug\USBDevice.Properties.Resources.resources

     文件        490  2015-11-13 14:27  USBDevice\USBDevice\Program.cs

     文件       1368  2015-11-13 14:27  USBDevice\USBDevice\Properties\AssemblyInfo.cs

     文件       2858  2015-11-19 12:50  USBDevice\USBDevice\Properties\Resources.Designer.cs

     文件       5612  2015-11-13 14:27  USBDevice\USBDevice\Properties\Resources.resx

     文件       1109  2015-11-19 12:50  USBDevice\USBDevice\Properties\Settings.Designer.cs

............此处省略76个文件信息

评论

共有 条评论