Python如何读写USB HID设备实现环回测试
更新时间:2026年09月23日 09:09:43 作者:luotong86
想知道怎么用Python读写USB设备吗?本文以STM32F411模拟HID设备为例,手把手教你使用PyUSB库进行USB通信和环回测试,提供完整代码示例,帮你轻松搞定Python USB编程
python读写USB端口
- 系统:WIN10 64位
- python版本:3.6.5
- USB设备:STM32F411
STM32F411模拟了一个简单的HID设备,有一个IN端口和一个OUT端口,当OUT端口收到数据后,再把收到的数据写回到IN端口,这样就可以做一个环回测试
代码:
import usb.core
import usb.util
import sys
import threading
import time
VID=0x0483
PID=0x5750
dev = usb.core.find(idVendor=VID, idProduct=PID)
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
print(intf)
write_ep = usb.util.find_descriptor(
intf,
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT
)
read_ep = usb.util.find_descriptor(
intf,
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_IN
)
def write_endpoint_thread():
while True:
try:
write_ep.write("0123456789")
except:
print("write error")
def read_endpoint_thread():
while True:
try:
data = read_ep.read(64)
size = len(data)
if size > 0:
print("recv %d bytes:"%size,end='')
for i in range(0,size):
print ("%c"%data[i],end='')
print ('')
except:
print("no data")
def main():
r = threading.Thread(target=read_endpoint_thread)
w = threading.Thread(target=write_endpoint_thread)
r.start()
w.start()
r.join()
w.join()
dev.reset()
if __name__ == '__main__':
main()
输出结果

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python 使用raw socket进行TCP SYN扫描实例
这篇文章主要介绍了python 使用raw socket进行TCP SYN扫描实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
解决Python中的ModuleNotFoundError: No module named 'pad
你是否在尝试导入`paddle`模块时遇到了"ModuleNotFoundError: No module named 'paddle'"这个错误?别担心,我们的指南会告诉你如何解决,这就像找到丢失的钥匙一样简单,让我们一起来看看如何解决这个问题吧!2024-03-03


最新评论