USB HID兼容设备C#类
一个可以和USB HID自定义设备通信的C#类,给需要的朋友.写得很不错啊,实用。 正需要,谢谢! 这个很有用 这个不错啊,感谢分享 感谢您宝贵的意见.有需求的功能也可以提一下,我可以把它做的更完善一些. 如果有使用的demo,有个完整的工程就更好了。 有用,{:victory:} 如果有个简单的例程那就更好了 谢谢楼主分享!!!最近一直在找这方面的资料 好东西,试试看 thaNKS FOR YOU 有简单的示例就好了 随便写了几行测试了下,可以的,楼主写的不错,之前我写过一个比较臃肿,就不拿出来献丑了 正需要
谢谢楼主!正学习~ 不是很会用。能发数据出去,但是没找到接收数据的public的函数。研究当中。 既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开,程序逻辑更清晰;
2.使用独立线程处理HID输入,并采用委托传递给上层应用;
3.采用读/写不同模式打开设备,避免访问冲突导致的阻塞;
good job !!! 似乎不兼容64位电脑啊 编译的平台选x86 lgnativs 发表于 2013-6-3 08:23 static/image/common/back.gif
编译的平台选x86
看的头大 。继续看看。 Mark C# Compnent for USB HID 楼主这个USBHID类写得不错不过只能够发送数据不能够接收数据!
还是感谢楼主的无私贡献! 可以接收数据的,您再试试看. 楼主,我试过了,这个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 函数没有触发!
还请楼主多多指教!
只能读取大小为64字节,report id默认为0的 IN report.... 你可以在HID类里面修改相应的参数以适应你的固件. 谢谢楼主,问题已解决,是接收数据个数的问题!
我固件程序里面是发送10个数据,改为发送64个数据就OK了!
感谢楼主!
好人必有好梦!祝福楼主工作顺心,家庭幸福! USB HID兼容设备C#类 懒人表示感谢! lgnativs 发表于 2013-4-23 16:47 static/image/common/back.gif
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...
好东西收藏 好东西,谢谢LZ分享 lgnativs 发表于 2013-9-9 17:18
只能读取大小为64字节,report id默认为0的 IN report....
楼主,您好。程序非常好用。
有个问题请教一下:
我在单片机那里连续发数,发送的是640字节,每64字节是次发送,
上位机该怎么快速接收这640字节,您的程序里是每到1个64字节,就进入OnDataRecieved函数进行数据处理,我在OnDataRecieved里停留的时间有点多,导致没有及时接收到所有数据,有什么办法可以不停接受吗 学习了 {:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:} {:2_27:}准备用HID~谢谢楼主~ 这个必须收藏起来 ok,可以用,试过了,楼主V5 谢谢,受用了 {:smile:}{:tongue:} 楼主,想请教下关闭设备怎么操作,C#不太懂,谢谢 非常感谢! USB HID c# 这个不错啊,感谢分享! 不错,收藏啦!!! 下载他人东西要顶
谢谢了!! lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...
我下载试了一下,好像不能发送数据哦,能打开设备,但写数据一直返回错误。
ret = WriteFile(hidWriteHandle, outPacket, (uint)outPacket.Length, ref bytesWritten, IntPtr.Zero);这里一直返回False
能帮我看看吗 lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...
非常感谢,最近正好用到hid类,学习一下 lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...
你好,我使用了你这个类,但是发现没法在程序运行中关闭设备和打开设备,有什么方法实现吗?谢谢! 谢谢楼主,下来看看。 早起的鸟儿有虫吃,谢谢楼主 谢谢分享。 谢谢分享 下载来参考一下,就想简单的读一下 正需要,非常感谢 很不错,收藏了 多谢了~ 楼主辛苦了,收藏 bug一大堆 好东西,正在找C#相关的HID类呢{:lol:} 灰常谢谢,mark!
void USBHIDDevice_DataReceived(object sender,report e)
{
byte[] temp = e.reportBuff;
//使用委托跨线程读取数据。
DescText.Invoke(new EventHandler(delegate
{
DescText.AppendText(DataChangeClass.HEX_HEX(temp) + "\r\n");
}
));
}
收数据正常!! /// <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软件监测不不到数据,,,不知道什么回事? 非常感谢,有空试试 下面這個也不錯
http://janaxelson.com/hidpage.htm
generic_hid_cs_xx
这个不错啊,感谢分享 谢谢楼主,正需要。 好东西,谢谢LZ分享 本帖最后由 XUEPENGBIN 于 2019-1-28 02:01 编辑
非常感谢楼主的代码,目前已经可以读写操作了。有一个小小的问题,在楼主第一层提供的代码 里边由 关闭HID 函数,可是调用了以后,再次调用打开 提示打开HID设备失败。
但是拔掉USB线再插上是可以打开的。
目前写了一个简单的 测试程序上传上来,望有能力的大虾给看看。
我的下位机 用的是
#define HID_IN_EP 0x81
#define HID_OUT_EP 0x01
lgnativs 发表于 2013-4-23 16:47
既然这么多朋友喜欢,我把新版的程序也发上来吧.
新版程序做了比较大的改进:
1.将使用的win API和hid类分开, ...
看了你这个DEMO 发现比较前一个版本少了HID设备拔出事件的中断触发。 感谢分享,我也想知道怎样在程序运行中关闭设备和打开设备 好东西,谢谢LZ分享 谢谢分享。。。。 请教一下,这个方式传输实际数据速度如何 下来学习一下 谢谢 收下了 谢谢分享。。。 正好要用到!谢谢 win10环境下能发送,win7和xp发送不了。 ygtjcng3 发表于 2019-10-30 17:08
win10环境下能发送,win7和xp发送不了。
win10 writefile的nNumberOfBytesToWrite参数写大点没问题,实际发送的长度还是字节实际长度, win7上面byte[] lptxBuffer, int nNumberOfBytesToWrite,这2个要匹配。lptxBuffer = 20,nNumberOfBytesToWrite = 19.
页:
[1]