实验环境
ubuntu 16.04 LTS 64-bit
python 3
STM32做下位机
开发步骤
安装pyusb 库
pip install pyusb
我们来与HID设备通讯!
我的STM32信息:
interface 0
END POINT 0x01: OUT
END POINT 0x82: IN
包大小:64 byte
完成功能:PC机向STM32写入2个字节(查询命令)
STM32返回5个字节:[0]:数据长度(这里应该为4)[0]-[4]:一个double的电压值的内存形式
import usb.util
import usb.core
import sys
from ctypes import *
import types
import struct
import time
write_buffer=[0x02,0x64]
class Point(Union):
_fields_ = [ ('charx', c_char*8),('double', c_double)]
def Init_usb_hid_device(vid,pid):
dev=usb.core.find(idVendor= vid, idProduct= pid)
if(dev==None):
return None
else:
# Attach and detach the usb,must use this code ahead
if dev.is_kernel_driver_active(0):
dev.detach_kernel_driver(0)
dev.set_configuration()
return dev
def hid_get_adc_volt():
global volt
hid_dev.write(0x01,write_buffer,1000)
receive_buffer=hid_dev.read(0x82,64,1000)
test_2 = (c_char*4)()
test_2[0]=receive_buffer[1]
test_2[1]=receive_buffer[2]
test_2[2]=receive_buffer[3]
test_2[3]=receive_buffer[4]
print(struct.unpack('f',bytes(test_2)))
time.sleep(0.5)
hid_dev=Init_usb_hid_device(0x0483,0xa010)
if(hid_dev!=None):
while(1):
hid_get_adc_volt()
else:
print("HID device not found!")
注意
Windows中这样做好像不好用(至少我实验是不行的)
上一篇:玩转USB HID系列:Linux下使用C语言和libusb开发USB HID
下一篇:跑马灯+蜂鸣器的位操作实现&什么是STM32中的位操作?
推荐阅读最新更新时间:2024-11-03 09:01
设计资源 培训 开发板 精华推荐
- LTC3805IMSE-5 演示板、低噪声 SEPIC DC/DC 转换器、5-30V 至 12V/3A 输出
- LTC4260CGN 演示板,具有电流和电压监视功能的 200W 正 48V 热插拔控制器
- 使用 Microchip Technology 的 TC33167E 的参考设计
- LTC3547EDDB 演示板,双单片同步。降压转换器
- 使用 ROHM Semiconductor 的 BD48E42G-TR 的参考设计
- TB2921AHQ 51W x 4ch BTL 音频电源典型应用
- ADR3440 4.096-Vout 微功率、高精度电压基准的典型应用
- STPIC6D595MTR电源逻辑8位移位寄存器典型应用
- 使用 Semtech 的 LD549 的参考设计
- 使用 ON Semiconductor 的 LM340 的参考设计