搜索
bottom↓
回复: 81

USB HID兼容设备C#类

  [复制链接]

出0入0汤圆

发表于 2012-8-16 14:50:27 | 显示全部楼层 |阅读模式
一个可以和USB HID自定义设备通信的C#类,给需要的朋友.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-8-16 15:23:45 | 显示全部楼层
写得很不错啊,实用。

出0入0汤圆

发表于 2012-9-24 10:12:49 | 显示全部楼层
正需要,谢谢!

出0入0汤圆

发表于 2012-9-24 10:35:25 | 显示全部楼层
这个很有用

出0入0汤圆

发表于 2012-9-24 11:11:50 | 显示全部楼层
这个不错啊,感谢分享

出0入0汤圆

 楼主| 发表于 2012-9-24 15:23:16 | 显示全部楼层
感谢您宝贵的意见.有需求的功能也可以提一下,我可以把它做的更完善一些.

出0入0汤圆

发表于 2012-12-4 17:04:18 | 显示全部楼层
如果有使用的demo,有个完整的工程就更好了。

出0入0汤圆

发表于 2012-12-4 17:13:36 | 显示全部楼层
有用,

出0入0汤圆

发表于 2012-12-17 14:48:51 | 显示全部楼层
如果有个简单的例程那就更好了

出0入0汤圆

发表于 2012-12-25 15:06:26 | 显示全部楼层
谢谢楼主分享!!!最近一直在找这方面的资料

出0入0汤圆

发表于 2013-1-5 23:54:02 | 显示全部楼层
好东西,试试看

出0入0汤圆

发表于 2013-2-12 09:09:32 | 显示全部楼层
thaNKS FOR YOU

出0入0汤圆

发表于 2013-2-12 09:55:12 | 显示全部楼层
有简单的示例就好了

出0入0汤圆

发表于 2013-3-7 21:00:38 | 显示全部楼层
随便写了几行测试了下,可以的,楼主写的不错,之前我写过一个比较臃肿,就不拿出来献丑了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-3-7 22:03:20 来自手机 | 显示全部楼层
正需要

出0入0汤圆

发表于 2013-4-22 17:57:08 | 显示全部楼层
谢谢楼主!正学习~

出0入0汤圆

发表于 2013-4-23 15:38:05 | 显示全部楼层
不是很会用。能发数据出去,但是没找到接收数据的public的函数。研究当中。

出0入0汤圆

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-5-3 11:38:53 | 显示全部楼层
good job !!!

出100入143汤圆

发表于 2013-6-2 21:50:36 | 显示全部楼层
似乎不兼容64位电脑啊

出0入0汤圆

 楼主| 发表于 2013-6-3 08:23:17 | 显示全部楼层
编译的平台选x86

出0入0汤圆

发表于 2013-8-16 16:47:07 | 显示全部楼层
lgnativs 发表于 2013-6-3 08:23
编译的平台选x86

看的头大 。继续看看。  

出0入0汤圆

发表于 2013-9-2 16:50:32 | 显示全部楼层
Mark C# Compnent for USB HID

出0入0汤圆

发表于 2013-9-9 10:10:15 | 显示全部楼层
       楼主  这个USBHID类写得不错  不过只能够发送数据  不能够接收数据!
      
      还是感谢楼主的无私贡献!

出0入0汤圆

 楼主| 发表于 2013-9-9 11:33:13 | 显示全部楼层
可以接收数据的,您再试试看.

出0入0汤圆

发表于 2013-9-9 15:39:01 | 显示全部楼层
        楼主,我试过了,这个USBHID类可以发送数据,接收数据还是有问题。

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

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

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


       还请楼主多多指教!
        

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-9-9 17:18:51 | 显示全部楼层
只能读取大小为64字节,report id默认为0的 IN report....

出0入0汤圆

 楼主| 发表于 2013-9-9 17:25:07 | 显示全部楼层
你可以在HID类里面修改相应的参数以适应你的固件.

出0入0汤圆

发表于 2013-9-9 22:42:29 | 显示全部楼层
             谢谢楼主,问题已解决,是接收数据个数的问题!
             我固件程序里面是发送10个数据,改为发送64个数据就OK了!

             感谢楼主!


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

出0入0汤圆

发表于 2013-9-23 10:37:00 | 显示全部楼层
USB HID兼容设备C#类

出0入0汤圆

发表于 2013-10-17 21:54:30 | 显示全部楼层
懒人表示感谢!

出0入0汤圆

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

好东西收藏

出0入0汤圆

发表于 2013-10-28 15:52:07 | 显示全部楼层
好东西,谢谢LZ分享

出0入0汤圆

发表于 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里停留的时间有点多,导致没有及时接收到所有数据,有什么办法可以不停接受吗

出0入0汤圆

发表于 2014-1-8 23:20:54 | 显示全部楼层
学习了

出0入0汤圆

发表于 2014-1-9 08:40:45 | 显示全部楼层
准备用HID~谢谢楼主~

出0入0汤圆

发表于 2014-1-9 08:42:09 | 显示全部楼层
这个必须收藏起来

出0入0汤圆

发表于 2014-1-28 11:39:30 | 显示全部楼层
ok,可以用,试过了,楼主V5

出0入0汤圆

发表于 2014-1-28 12:36:54 | 显示全部楼层
谢谢,受用了

出0入0汤圆

发表于 2014-3-14 10:04:09 | 显示全部楼层

出100入143汤圆

发表于 2014-6-2 22:34:01 | 显示全部楼层
楼主,想请教下关闭设备怎么操作,C#不太懂,谢谢

出0入0汤圆

发表于 2014-6-2 23:35:22 | 显示全部楼层
非常感谢!

出0入0汤圆

发表于 2014-7-16 21:40:27 | 显示全部楼层
USB HID c#

出0入0汤圆

发表于 2014-7-16 21:47:24 | 显示全部楼层
这个不错啊,感谢分享!

出0入0汤圆

发表于 2014-8-6 11:30:44 | 显示全部楼层
不错,收藏啦!!!

出0入0汤圆

发表于 2014-8-7 16:27:11 | 显示全部楼层
下载他人东西要顶

出0入0汤圆

发表于 2014-8-9 12:21:11 | 显示全部楼层
谢谢了!!

出0入0汤圆

发表于 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
能帮我看看吗

出0入0汤圆

发表于 2014-8-13 10:52:58 | 显示全部楼层
lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-8-15 18:37:58 | 显示全部楼层
非常感谢,最近正好用到hid类,学习一下

出100入143汤圆

发表于 2014-9-10 22:33:50 | 显示全部楼层
lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...

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

出0入0汤圆

发表于 2014-9-16 14:49:19 | 显示全部楼层
谢谢楼主,下来看看。

出0入0汤圆

发表于 2014-9-17 06:49:02 | 显示全部楼层
早起的鸟儿有虫吃,谢谢楼主

出0入0汤圆

发表于 2014-9-17 08:25:15 | 显示全部楼层
谢谢分享。

出0入0汤圆

发表于 2014-9-17 08:54:19 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-9-17 09:02:07 | 显示全部楼层
下载来参考一下,就想简单的读一下

出0入0汤圆

发表于 2014-11-13 17:11:32 | 显示全部楼层
正需要,非常感谢

出0入0汤圆

发表于 2014-11-20 09:43:11 | 显示全部楼层
很不错,收藏了

出0入85汤圆

发表于 2014-11-25 09:39:55 | 显示全部楼层
多谢了~

出0入0汤圆

发表于 2014-11-25 13:35:06 | 显示全部楼层
楼主辛苦了,收藏

出0入0汤圆

发表于 2015-1-26 10:06:38 | 显示全部楼层
bug一大堆

出0入0汤圆

发表于 2015-2-10 09:13:04 | 显示全部楼层
好东西,正在找C#相关的HID类呢

出0入0汤圆

发表于 2015-9-24 10:09:16 | 显示全部楼层
灰常谢谢,mark!

出0入0汤圆

发表于 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");
            }
            ));
        }


收数据正常!!

出0入0汤圆

发表于 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[outputReportLength];
                    buffer[0] = 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[i] = r.reportBuff[i - 1];
                    hidDevice.Write(buffer, 0, OutputReportLength);

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

出0入4汤圆

发表于 2015-9-24 13:17:18 来自手机 | 显示全部楼层
非常感谢,有空试试

出0入0汤圆

发表于 2016-11-12 12:23:48 | 显示全部楼层
下面這個也不錯
http://janaxelson.com/hidpage.htm
generic_hid_cs_xx

出0入0汤圆

发表于 2016-11-15 11:26:25 | 显示全部楼层
这个不错啊,感谢分享

出0入0汤圆

发表于 2018-9-21 17:13:14 | 显示全部楼层
谢谢楼主,正需要。

出0入0汤圆

发表于 2018-11-9 11:43:18 | 显示全部楼层
好东西,谢谢LZ分享

出0入0汤圆

发表于 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

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

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

出0入0汤圆

发表于 2019-2-17 14:55:48 | 显示全部楼层
感谢分享,我也想知道怎样在程序运行中关闭设备和打开设备

出0入0汤圆

发表于 2019-2-18 23:23:58 | 显示全部楼层
好东西,谢谢LZ分享

出0入0汤圆

发表于 2019-3-15 22:00:35 | 显示全部楼层
谢谢分享。。。。

出0入0汤圆

发表于 2019-3-19 10:19:48 | 显示全部楼层
请教一下,这个方式传输实际数据速度如何

出0入10汤圆

发表于 2019-3-25 10:50:56 | 显示全部楼层
下来学习一下

出0入0汤圆

发表于 2019-4-23 13:11:03 | 显示全部楼层
谢谢 收下了

出0入0汤圆

发表于 2019-4-25 17:16:08 | 显示全部楼层
谢谢分享。。。

出0入0汤圆

发表于 2019-10-23 16:41:37 | 显示全部楼层
正好要用到!谢谢

出0入0汤圆

发表于 2019-10-30 17:08:45 来自手机 | 显示全部楼层
win10环境下能发送,win7和xp发送不了。

出0入0汤圆

发表于 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.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 18:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表