中级会员
 
- 积分
- 337
- 金钱
- 337
- 注册时间
- 2016-4-15
- 在线时间
- 126 小时
|
50金钱
本帖最后由 海文 于 2018-11-15 12:40 编辑
有没有大佬用过LibUsbDotNet这个开源库搞上位机的吗?我用STM32F4枚举成HID设备作为下位机,使用USB2.0全速,端点设置正确,但是在单片机不断发送数据到上位机的时候,一开始上位机可以接收到单片机的数据,运行几分钟后就接收不到数据了,此时单片机的USB状态是suspend,希望各位大佬可以给点意见,谢谢!下面这幅图是这个开源库测试USB设备信息的程序运行结果:
1.png (27.59 KB, 下载次数: 0)

上位机中关于USB的就只有下面这些了,
private void Form1_Load(object sender, EventArgs e)
{
MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder);
// If the device is open and ready
if (MyUsbDevice == null)
{
// The device is not connected or cannot be accessed by libusbdotnet
messagebox.Text = "Device not connected!" + "\r\n";
return;
}
else messagebox.Text = messagebox.Text + "\r\n" + "Device connected!" + "\r\n";
//开启接收数据响应
IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice;
if (!ReferenceEquals(wholeUsbDevice, null))
{
// Select config #1
wholeUsbDevice.SetConfiguration(1);
// Claim interface #0.
wholeUsbDevice.ClaimInterface(0);
}
// open read endpoint 1.
reader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep01);
writer = MyUsbDevice.OpenEndpointWriter(WriteEndpointID.Ep01);
reader.DataReceived += (OnRxEndPointData);
reader.DataReceivedEnabled = true;
}
static void USB_SendCmd(byte[] buffer, int count)
{
ErrorCode ec = ErrorCode.None;
try
{
// open write endpoint 1.
ec = writer.Write(buffer, 2000, out count);
if (ec != ErrorCode.None) throw new Exception(UsbDevice.LastErrorString);
}
catch (Exception ex)
{
Console.WriteLine();
Console.WriteLine((ec != ErrorCode.None ? ec + ":" : String.Empty) + ex.Message);
}
}
long cnt = 0;
private void OnRxEndPointData(object sender, EndpointDataEventArgs e)
{
Encoding.Default.GetString(e.Buffer, 0, e.Count);
cnt++;
//bytesRead = e.Count;
if (e.Buffer[0] != 0)
{
for (int i = 0; i < e.Count; i++)
{
//messagebox.Text = messagebox.Text + " " + readBuffer;
RecBuffer【i】 = e.Buffer【i】;
e.Buffer【i】= 0;
}
RecFlag = true;
}
}
尝试过使用USB Hound抓包但是没有显示,不知道原因。
|
最佳答案
查看完整内容[请看2#楼]
看您在这边一直等别人给您答案很久了, 看起来应该是没有人可以帮您了.
我觉得问题很明显在于您的上位机, 而且感觉那个libusb有bug的机会很大.
我随便找到其他用c#和USB HID通讯的分享, 我觉得可以拿来试试看:
http://www.voidcn.com/article/p-srdwguha-yy.html
https://soldernerd.com/2017/02/14/c-usb-hid-utility/
如果不行可以自己多找别的, 总比在这里等着好...
我自己写过的USB HID上位机, 是C的, 用法和第一个差 ...
|