当为连接到usb总线的硬件创建windows(或Linux)驱动程序时,如何与usb端口进行通信?是否打开一个文件(管道)到相应的usb端口或使用其他方法?
wj8zmpe11#
要与Windows或Linux驱动程序中的USB端口通信,可以使用WinUSB API(Windows)或ioctl函数调用(Linux)。在Windows中,WinUSB API允许您打开设备的文件句柄,并获得后续操作所需的句柄。此句柄存储在device.h文件中定义的结构(DEVICE_DATA)中。一旦句柄获得后,驱动程序可以执行操作,如阅读和写入数据到批量和中断端点。对于Linux,您可以使用ioctl函数调用特殊文件进行USB设备通信。在您的程序中,您可以使用open("/dev/ttyUSB0", O_RDWR)打开相应的文件,然后使用write和read函数通过USB端口发送和接收字符。Matt Cutts详细 * 如何在Linux中编译简单USM程序 * 在他的blog中对于Windows,请阅读Connect USB devices,其中也谈到了Linux中的USBIP工具。
WinUSB API
ioctl
device.h
(DEVICE_DATA)
open("/dev/ttyUSB0", O_RDWR)
write
read
1条答案
按热度按时间wj8zmpe11#
要与Windows或Linux驱动程序中的USB端口通信,可以使用
WinUSB API
(Windows)或ioctl
函数调用(Linux)。在Windows中,WinUSB API
允许您打开设备的文件句柄,并获得后续操作所需的句柄。此句柄存储在device.h
文件中定义的结构(DEVICE_DATA)
中。一旦句柄获得后,驱动程序可以执行操作,如阅读和写入数据到批量和中断端点。对于Linux,您可以使用ioctl函数调用特殊文件进行USB设备通信。在您的程序中,您可以使用
open("/dev/ttyUSB0", O_RDWR)
打开相应的文件,然后使用write
和read
函数通过USB端口发送和接收字符。Matt Cutts详细 * 如何在Linux中编译简单USM程序 * 在他的blog中对于Windows,请阅读Connect USB devices,其中也谈到了Linux中的USBIP工具。