资源简介
赋所有源代码,开发工具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口 打印机和开钱箱
- C# 安全移除USB设备
- usb hid 通信
- USB盘符识别(C#)
- C#版USB通信编程(接收和发送数据)
- C#读写HID设备
- C#实现USB设备通信
- Visual Studio C#/USB HID 上位机程序
- C#+串口和USB通信编程(代码)
- C#调用USB接口斑马打印机.rar
- c#打开pos钱箱usb,lpt端口testprint
- C# 同时控制两台USB连接的打印机小票
- C#USB通信,可以直接用的
- 24路舵机控制板C#源码
- usbkey开发代码 c#
- 自动识别插入电脑设备的代码c#USB串口
- C#下开发HID设备的源码+
- libusb usblib完整库
- vb.net调用高清摄像头实现拍照等功能
- 周立功USBCAN二次开发套件—&mdash
- c#实现USB扫码枪监听读取数据 完整代
- C#USBHID完整例程
- C#版USB-HID范例
- C# 扫码枪代码 包括USB和串口两种方式
- C#读取USB摄像头
- C#调用、操作usb摄像头
- C#通过USB连接斑马打印机实现ZPL打印
- C#调用Cyusb.dl方法
- WPF使用Aforge实现USB摄像头拍照
- c# usb-hid通信上位机
评论
共有 条评论