lgnativs 发表于 2012-8-16 14:50:27

USB HID兼容设备C#类

一个可以和USB HID自定义设备通信的C#类,给需要的朋友.

eeyrw 发表于 2012-8-16 15:23:45

写得很不错啊,实用。

sgsong 发表于 2012-9-24 10:12:49

正需要,谢谢!

abcdzhy 发表于 2012-9-24 10:35:25

这个很有用

jeames 发表于 2012-9-24 11:11:50

这个不错啊,感谢分享

lgnativs 发表于 2012-9-24 15:23:16

感谢您宝贵的意见.有需求的功能也可以提一下,我可以把它做的更完善一些.

xuchess 发表于 2012-12-4 17:04:18

如果有使用的demo,有个完整的工程就更好了。

ep1c3 发表于 2012-12-4 17:13:36

有用,{:victory:}

sgsong 发表于 2012-12-17 14:48:51

如果有个简单的例程那就更好了

l09046162 发表于 2012-12-25 15:06:26

谢谢楼主分享!!!最近一直在找这方面的资料

nicholasdlut 发表于 2013-1-5 23:54:02

好东西,试试看

miss12645 发表于 2013-2-12 09:09:32

thaNKS FOR YOU

cyr_hongfeng 发表于 2013-2-12 09:55:12

有简单的示例就好了

billmcu 发表于 2013-3-7 21:00:38

随便写了几行测试了下,可以的,楼主写的不错,之前我写过一个比较臃肿,就不拿出来献丑了

qiaogang2006 发表于 2013-3-7 22:03:20

正需要

helenfish 发表于 2013-4-22 17:57:08

谢谢楼主!正学习~

helenfish 发表于 2013-4-23 15:38:05

不是很会用。能发数据出去,但是没找到接收数据的public的函数。研究当中。

lgnativs 发表于 2013-4-23 16:47:46

既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开,程序逻辑更清晰;
2.使用独立线程处理HID输入,并采用委托传递给上层应用;
3.采用读/写不同模式打开设备,避免访问冲突导致的阻塞;

hclin 发表于 2013-5-3 11:38:53

good job !!!

zzh90513 发表于 2013-6-2 21:50:36

似乎不兼容64位电脑啊

lgnativs 发表于 2013-6-3 08:23:17

编译的平台选x86

waterghost 发表于 2013-8-16 16:47:07

lgnativs 发表于 2013-6-3 08:23 static/image/common/back.gif
编译的平台选x86

看的头大 。继续看看。

Taylor1 发表于 2013-9-2 16:50:32

Mark C# Compnent for USB HID

BigTang 发表于 2013-9-9 10:10:15

       楼主这个USBHID类写得不错不过只能够发送数据不能够接收数据!
      
      还是感谢楼主的无私贡献!

lgnativs 发表于 2013-9-9 11:33:13

可以接收数据的,您再试试看.

BigTang 发表于 2013-9-9 15:39:01

      楼主,我试过了,这个USBHID类可以发送数据,接收数据还是有问题。

      我用BUSHound软件可以监测到IN端点有数据输入, 如图片所示。

      
       我在下面的函数里面设置断点
            void OnDataRecieved(object sender, DataReceivedArgs e)
             {
                uint t = e.Packet;
                t = t * 256 + e.Packet;
                t = t * 256 + e.Packet;
                t = t * 256 + e.Packet;
                textBox1.Text = t.ToString();
                //dataGridView1.Rows.Add(t);
            }

       断点根本就没有执行,因此我觉得接收数据的 OnDataRecieved 函数没有触发!


       还请楼主多多指教!
      

lgnativs 发表于 2013-9-9 17:18:51

只能读取大小为64字节,report id默认为0的 IN report....

lgnativs 发表于 2013-9-9 17:25:07

你可以在HID类里面修改相应的参数以适应你的固件.

BigTang 发表于 2013-9-9 22:42:29

             谢谢楼主,问题已解决,是接收数据个数的问题!
             我固件程序里面是发送10个数据,改为发送64个数据就OK了!

             感谢楼主!


            好人必有好梦!祝福楼主工作顺心,家庭幸福!

jiaren 发表于 2013-9-23 10:37:00

USB HID兼容设备C#类

ablightstar 发表于 2013-10-17 21:54:30

懒人表示感谢!

flyhorse 发表于 2013-10-22 17:33:58

lgnativs 发表于 2013-4-23 16:47 static/image/common/back.gif
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

好东西收藏

kai1011 发表于 2013-10-28 15:52:07

好东西,谢谢LZ分享

flytosky8 发表于 2013-11-29 17:17:53

lgnativs 发表于 2013-9-9 17:18
只能读取大小为64字节,report id默认为0的 IN report....

楼主,您好。程序非常好用。
有个问题请教一下:
我在单片机那里连续发数,发送的是640字节,每64字节是次发送,
上位机该怎么快速接收这640字节,您的程序里是每到1个64字节,就进入OnDataRecieved函数进行数据处理,我在OnDataRecieved里停留的时间有点多,导致没有及时接收到所有数据,有什么办法可以不停接受吗

sun92845166 发表于 2014-1-8 23:20:54

学习了 {:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

Stargazer-1986 发表于 2014-1-9 08:40:45

{:2_27:}准备用HID~谢谢楼主~

wazhiyi 发表于 2014-1-9 08:42:09

这个必须收藏起来

w110223 发表于 2014-1-28 11:39:30

ok,可以用,试过了,楼主V5

cnxh 发表于 2014-1-28 12:36:54

谢谢,受用了

jason520 发表于 2014-3-14 10:04:09

{:smile:}{:tongue:}

zzh90513 发表于 2014-6-2 22:34:01

楼主,想请教下关闭设备怎么操作,C#不太懂,谢谢

codefish 发表于 2014-6-2 23:35:22

非常感谢!

web110 发表于 2014-7-16 21:40:27

USB HID c#

GunGun 发表于 2014-7-16 21:47:24

这个不错啊,感谢分享!

dreamteam 发表于 2014-8-6 11:30:44

不错,收藏啦!!!

ewindiy 发表于 2014-8-7 16:27:11

下载他人东西要顶

rjy 发表于 2014-8-9 12:21:11

谢谢了!!

dreamteam 发表于 2014-8-13 10:47:43

lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

我下载试了一下,好像不能发送数据哦,能打开设备,但写数据一直返回错误。
ret = WriteFile(hidWriteHandle, outPacket, (uint)outPacket.Length, ref bytesWritten, IntPtr.Zero);这里一直返回False
能帮我看看吗

dreamteam 发表于 2014-8-13 10:52:58

lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

D138138 发表于 2014-8-15 18:37:58

非常感谢,最近正好用到hid类,学习一下

zzh90513 发表于 2014-9-10 22:33:50

lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

你好,我使用了你这个类,但是发现没法在程序运行中关闭设备和打开设备,有什么方法实现吗?谢谢!

19711972f 发表于 2014-9-16 14:49:19

谢谢楼主,下来看看。

只是代号 发表于 2014-9-17 06:49:02

早起的鸟儿有虫吃,谢谢楼主

suxiaobo 发表于 2014-9-17 08:25:15

谢谢分享。

majialou 发表于 2014-9-17 08:54:19

谢谢分享

albert.hu 发表于 2014-9-17 09:02:07

下载来参考一下,就想简单的读一下

gdszba 发表于 2014-11-13 17:11:32

正需要,非常感谢

jiangkehong 发表于 2014-11-20 09:43:11

很不错,收藏了

ZXF_CUG 发表于 2014-11-25 09:39:55

多谢了~

superrf 发表于 2014-11-25 13:35:06

楼主辛苦了,收藏

路人甲被注册了 发表于 2015-1-26 10:06:38

bug一大堆

jiangkehong 发表于 2015-2-10 09:13:04

好东西,正在找C#相关的HID类呢{:lol:}

taoamdz 发表于 2015-9-24 10:09:16

灰常谢谢,mark!

taoamdz 发表于 2015-9-24 11:18:52


      void USBHIDDevice_DataReceived(object sender,report e)
      {
            byte[] temp = e.reportBuff;
            //使用委托跨线程读取数据。
            DescText.Invoke(new EventHandler(delegate
            {
                DescText.AppendText(DataChangeClass.HEX_HEX(temp) + "\r\n");
            }
            ));
      }


收数据正常!!

taoamdz 发表于 2015-9-24 12:51:50

/// <summary>
      ///
      /// </summary>
      /// <param name="buffer"></param>
      /// <returns></returns>
      public HID_RETURN Write(report r)
      {
            if (deviceOpened)
            {
                try
                {
                  byte[] buffer = new byte;
                  buffer = r.reportID;
                  int maxBufferLength = 0;
                  if (r.reportBuff.Length < outputReportLength - 1)
                        maxBufferLength = r.reportBuff.Length;
                  else
                        maxBufferLength = outputReportLength - 1;
                  for (int i = 1; i < maxBufferLength; i++)
                        buffer = r.reportBuff;
                  hidDevice.Write(buffer, 0, OutputReportLength);

                }
                catch
                {
                  EventArgs ex = new EventArgs();
                  OnDeviceRemoved(ex);//发出设备移除消息                  
                }
            }
            return HID_RETURN.WRITE_FAILD;
      }
发数据用BusHound软件监测不不到数据,,,不知道什么回事?

ronic 发表于 2015-9-24 13:17:18

非常感谢,有空试试

jarodzz 发表于 2016-11-12 12:23:48

下面這個也不錯
http://janaxelson.com/hidpage.htm
generic_hid_cs_xx

myhonour 发表于 2016-11-15 11:26:25

这个不错啊,感谢分享

YuQingLiang 发表于 2018-9-21 17:13:14

谢谢楼主,正需要。

mxper88 发表于 2018-11-9 11:43:18

好东西,谢谢LZ分享

XUEPENGBIN 发表于 2019-1-28 01:59:05

本帖最后由 XUEPENGBIN 于 2019-1-28 02:01 编辑

非常感谢楼主的代码,目前已经可以读写操作了。有一个小小的问题,在楼主第一层提供的代码 里边由 关闭HID 函数,可是调用了以后,再次调用打开 提示打开HID设备失败。
但是拔掉USB线再插上是可以打开的。
目前写了一个简单的 测试程序上传上来,望有能力的大虾给看看。
我的下位机 用的是
#define HID_IN_EP                  0x81
#define HID_OUT_EP                   0x01

XUEPENGBIN 发表于 2019-1-28 02:08:05

lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

看了你这个DEMO 发现比较前一个版本少了HID设备拔出事件的中断触发。

wiisir 发表于 2019-2-17 14:55:48

感谢分享,我也想知道怎样在程序运行中关闭设备和打开设备

hyper320 发表于 2019-2-18 23:23:58

好东西,谢谢LZ分享

oooios 发表于 2019-3-15 22:00:35

谢谢分享。。。。

wang1216 发表于 2019-3-19 10:19:48

请教一下,这个方式传输实际数据速度如何

yongke 发表于 2019-3-25 10:50:56

下来学习一下

开始 发表于 2019-4-23 13:11:03

谢谢 收下了

markdif 发表于 2019-4-25 17:16:08

谢谢分享。。。

ygtjcng3 发表于 2019-10-23 16:41:37

正好要用到!谢谢

ygtjcng3 发表于 2019-10-30 17:08:45

win10环境下能发送,win7和xp发送不了。

ygtjcng3 发表于 2019-10-31 13:41:05

ygtjcng3 发表于 2019-10-30 17:08
win10环境下能发送,win7和xp发送不了。

win10   writefile的nNumberOfBytesToWrite参数写大点没问题,实际发送的长度还是字节实际长度, win7上面byte[] lptxBuffer, int nNumberOfBytesToWrite,这2个要匹配。lptxBuffer = 20,nNumberOfBytesToWrite = 19.
页: [1]
查看完整版本: USB HID兼容设备C#类