请版主和高手们关注---USB通讯程序中遇到的高难度问题
我现在正在进行编程测试,主要是实现应用程序与EV2300(TI公司产品)的USB设备通讯。
据了解,USB设备驱动由TI厂商自己开发的(我们无法得到它的技术资料),从应用角度很难明白通讯的实质;
并非像HID类型USB设备,直接调用系统API函数就可以实现的。
从网上获取了一些USB应用开发的信息,我们写了一个测试程序,发现
存在许多问题,请指导:
1. 如何获取GUID信息,在INF文件中并没有包含此信息,只有VendorID=0451,ProductID=0035,是不是每个USB设备都对应不同的GUID,而它是打开USB设备的唯一途径;很多人都是从注册表中获取的,有没有可能通过程序实现呢?
2. 在获得GUID之后,就可以得到设备路径,主要通过系统API函数实现:
SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces,SetupDiGetDeviceInterfaceDetail
得到的设备路径DevicePathName,是否要在其后面加上pipe0,1,2对应于通讯所使用的通道?
3. USBHandle = CreateFile _
(DevicePathName, _
GENERIC_READ Or GENERIC_WRITE, _
(FILE_SHARE_READ Or FILE_SHARE_WRITE), _
Security, _
OPEN_EXISTING, _
0&, _
0)
打开设备时,有时成功,有时失败,得到"请求的资源正在使用中"错误信息,是不是CreateFile 参数的
问题?
4. 最关键的错误
Result = WriteFile(USBHandle, _
WriteBuffer(0), _
CLng(Capabilities.OutputReportByteLength), _
NumberOfBytesWritten, _
0)
Result返回为0,写数据没有成功,不知道为什么?也不明白WriteBuffer(0), 和Capabilities.OutputReportByteLength
的含义。调试了很久,也找不到原因,现在都是火烧眉头了,一下子好像掉进了泥陷中,举步维履。
由于我们对USB设备开发不甚了解,一切都还是摸索,探讨中,恳请您的帮助,万分感谢!
据了解,USB设备驱动由TI厂商自己开发的(我们无法得到它的技术资料),从应用角度很难明白通讯的实质;
并非像HID类型USB设备,直接调用系统API函数就可以实现的。
从网上获取了一些USB应用开发的信息,我们写了一个测试程序,发现
存在许多问题,请指导:
1. 如何获取GUID信息,在INF文件中并没有包含此信息,只有VendorID=0451,ProductID=0035,是不是每个USB设备都对应不同的GUID,而它是打开USB设备的唯一途径;很多人都是从注册表中获取的,有没有可能通过程序实现呢?
2. 在获得GUID之后,就可以得到设备路径,主要通过系统API函数实现:
SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces,SetupDiGetDeviceInterfaceDetail
得到的设备路径DevicePathName,是否要在其后面加上pipe0,1,2对应于通讯所使用的通道?
3. USBHandle = CreateFile _
(DevicePathName, _
GENERIC_READ Or GENERIC_WRITE, _
(FILE_SHARE_READ Or FILE_SHARE_WRITE), _
Security, _
OPEN_EXISTING, _
0&, _
0)
打开设备时,有时成功,有时失败,得到"请求的资源正在使用中"错误信息,是不是CreateFile 参数的
问题?
4. 最关键的错误
Result = WriteFile(USBHandle, _
WriteBuffer(0), _
CLng(Capabilities.OutputReportByteLength), _
NumberOfBytesWritten, _
0)
Result返回为0,写数据没有成功,不知道为什么?也不明白WriteBuffer(0), 和Capabilities.OutputReportByteLength
的含义。调试了很久,也找不到原因,现在都是火烧眉头了,一下子好像掉进了泥陷中,举步维履。
由于我们对USB设备开发不甚了解,一切都还是摸索,探讨中,恳请您的帮助,万分感谢!
...全文
相关推荐
C#编写的与usb通讯程序
此程序利用了一个usb控件,采用异步流模式。先找到厂家ID和产品ID,然后获取usb读写流句柄。可以实时显示usb下位机传来的数据。
i.MX8M Mini核心板实战:从硬件选型到I/O调试踩坑全记录
嵌入式开发中,核心板(SoM)是一种将CPU、内存、电源管理等复杂部分集成在小尺寸模块上的硬件形态,它通过标准接口将丰富的外设资源引出,帮助开发者规避高频DDR布线、电源时序等高风险设计环节。理解核心板的硬件架构与软件Bring-up原理,是高效完成产品开发的关键。在工业物联网、边缘计算网关、人机界面(HMI)和机器人控制器等应用场景中,基于NXP i.MX8M Mini的模块凭借其多路UART、CAN、SPI/I2C、千兆以太网等丰富I/O接口,以及低功耗和长期供货优势,成为主流选型。本文结合工程实践,系
嵌入式工程师成长之路(10)——项目举例
送给大学毕业后找不到奋斗方向的你(每周不定时更新)
Kali Linux 蓝牙攻击工具集:5款核心工具实战配置与信息收集指南
本文详细介绍了Kali Linux中5款核心蓝牙攻击工具的实战配置与信息收集技术,涵盖环境准备、设备扫描、高级工具应用及防御措施。通过具体命令和脚本示例,帮助安全专业人员有效评估蓝牙设备安全性,防范数据窃取和设备劫持等风险。
JAVA usb串口通讯
JAVA串口通讯 modbus


驱动开发/核心开发
