当前位置: 代码网 > it编程>前端脚本>Python > Python如何读写USB HID设备实现环回测试

Python如何读写USB HID设备实现环回测试

2026年09月23日 Python 我要评论
python读写usb端口系统:win10 64位python版本:3.6.5usb设备:stm32f411stm32f411模拟了一个简单的hid设备,有一个in端口和一个out端口,当out端口收

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()
    

输出结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com