资源简介
赋所有源代码,开发工具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\Itemob
文件 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个文件信息
相关资源
- C# 读取USB 信息
- 数据采集卡读取(USB)
- C#USB开发
- 读写 ic card数据( usb)
- C# USB HIF
- C# usb hid 设备控制
- USB HID源码(附文档)
- 关于C#中VCI_BOARD_INFO1结构体与VCI_Find
- USB读取PID和UID
- USBHID通信
- USB 继电器控制器 LCUS-1 保证能用 c#
- 神思ss628型USB二代身份证DEMOC#
- C#不用HID采用键盘钩子区分键盘输入和
- C# 斑马打印机USB接口ZPL条码打印
- C#调用USB接口斑马打印机
- USB complete 5th edition PDF
- 上位机_USB_FPGA程序
- cyUsb C#USB通信 DLL
- 通过PJL协议,获取惠普USB打印机状态
- c#+BaslerSDKUSB3.0和以太网口通用
- c#操作摄像头(带着usb摄像头、mjpeg
- c#实现USB摄像头录像抓拍功能
- 03 STM32F205 多功能LCD时钟-c源码 keil5
- C#调用USB口摄像头单头,多头源码
- C#编写的USB通信含源码
- USB检测,移除|UsbEject
- 调用cyUSB.dllC#源码
- 基于WPF的USB设备浏览器
- C#把ZPL指令直接发送USB打印机
- vb.net 获取USB 摄像头 图像 Aforge方法
评论
共有 条评论