玩转USB系列:Linux下使用Python开发USB HID

  • 实验环境
  • 开发步骤
    • 安装pyusb 库
    • 我们来与HID设备通讯!
  • 注意

实验环境

  1. ubuntu 16.04 LTS 64-bit
  2. python 3
  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 Noneelse:# 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 devdef hid_get_adc_volt():global volthid_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下使用Python开发USB HID相关推荐

  1. Linux下基于Bluez开发USB蓝牙SPP服务端

    由于是在linux上运行的,所以参考的bluez的代码,用C语言实现了蓝牙的Server端. 原理也很简单,在服务器端,通过命令添加SPP服务 前提是先安装好bluez,一般是安装好的,没安装的话可以 ...

  2. Linux下的硬件驱动——USB设备配置以及开发

    Linux下的硬件驱动--USB设备(上)(驱动配置部分) USB设备越来越多,而Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他们,也越来越成为困扰我们的一大问题.本文 ...

  3. Linux下的硬件驱动——USB设备

    想起当初对于破安卓手机,挂在系统上可是费了好些劲,今偶遇USB驱动开发,收集备用,哪天一生气,说不定也写一个linux下的手机驱动,类似于91手机助手的,也不用配置了. Linux下的硬件驱动--US ...

  4. Linux下的硬件驱动——USB设备(下)

    Linux下的硬件驱动--USB设备(下)(驱动开发部分) 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 级别: 初级 赵明, 联想软件设计中心嵌入式研发处 ...

  5. Linux下用FFMPEG采集usb摄像头到RTMP

    Linux下用 FFMPEG 采集 usb摄像头视频 和 摄像头内置麦克风音频 到RTMP服务 ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 - ...

  6. 嵌入式 linux usbmon,浅析linux下替代usbhound的usb总线sniffer抓包模块usbmon安装和使用...

    浅析linux下替代usbhound的usb总线sniffer抓包模块usbmon安装和使用 操作系统: ubuntu 8.10 内核版本: 2.6.27-7-generic ubuntu 8.10内 ...

  7. Linux下基于XScale的USB摄像头图像采集

    1.引言 摄像头分为数字摄像头和模拟摄像头两大类.传统的模拟摄像头,获取图像信息需要先将视频采集设备产生的模拟视频信号经过特定的视频捕捉卡转换成数字信号,进而才能进行存储等处理.数字摄像头可以直接捕捉 ...

  8. Linux基础入门--驱动开发--USB

    Linux基础入门--驱动开发--USB 1.基本概念 2.组成结构 2.1 设备描述符 2.2 配置描述符 2.3 接口描述符 2.4 端点描述符 2.5 字符串描述符 3.管道 4.端点分类 4. ...

  9. LibOpenCM3(一) Linux下命令行开发环境配置

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...

最新文章

  1. 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
  2. 阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式
  3. 转:PHP 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
  4. 使用HTML语言编写HTML教程,HTML教程:HTML编写小经验
  5. 0_0 SimpleFactoryMode 简单工厂模式
  6. 【转】MFC学习总结
  7. 【HDU - 5916】Harmonic Value Description (构造,思维,SJ题)
  8. hdu5141 线段树
  9. linux配置ssh免密码登录
  10. 做开源,兴趣是最好的源动力 | 龙蜥开发者说第1期
  11. “OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  12. vue安装axios以及如何使用axios
  13. PLC Outstudio 使用教程
  14. zemax---窗口整体布局篇
  15. 001_扎马步_初识hadoop
  16. CImage::Loda 方法加载图片失败,因为vs2013中该方法不支持中文变量
  17. 基于Springboot+Vue开发前后端端分离农产品进销存系统
  18. 如何用计算机产生随机数,如何在计算器产生随机数
  19. [Discuz!模板] 听雨轩风格[GBK][utf8][一键安装 DIY][20110918更新]
  20. Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配

热门文章

  1. 惠普PAVILION Gaming NB 15-ak039TX触摸板关闭
  2. MySQL查年龄18到22的信息_MySQL之单表查询
  3. 怎么把cda文件转换成mp3
  4. EOJ1765 Nested Dolls 最长上升子序列
  5. 一篇短文让你了解如何简化「内测托管」过程
  6. 基于Android studio的阅读APP设计与实现
  7. IP地址【IP地址精品博文】
  8. 手写链表底层实现(java实现)
  9. oledb vc访问mdb数据库_vc实战oledb编程
  10. 对比ubuntu与centos系统 ​​​​