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

发布者:清晨微风最新更新时间:2022-03-24 来源: eefocus关键字:USB  Linux  Python 手机看文章 扫描二维码
随时随地手机看文章

实验环境

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  Linux  Python 引用地址:玩转USB HID系列:Linux下使用Python开发USB HID

上一篇:玩转USB HID系列:Linux下使用C语言和libusb开发USB HID
下一篇:跑马灯+蜂鸣器的位操作实现&什么是STM32中的位操作?

推荐阅读最新更新时间:2024-11-03 09:01

硅谷数模:展望全功能USB Type-C开发趋势
消费电子市场存在诸多标准,底层的通用接口标准之争一直没有停止过。但在2015年苹果、Google和微软等世界知名厂商相继力推基于USB Type-C的新品后,凭借着更加纤薄、可翻转插拔、更高传输速度和双向电缆等特性, USB Type-C开始大受制造商和消费者欢迎。业内也在盛传:集多合一功能的USB Type-C将一统接口标准的江湖。 近日,由易维讯(EEVIA)主办的年度ICT媒体论坛暨2016产业和技术趋势展望研讨会在深圳和北京两地巡回举办,硅谷数模半导体公司的市场总监梁倩女士就当前热议的USB Type-C话题与中国主流专业媒体人士和业界开发者探讨了2016年USB Type-C技术发展前景,以及硅谷数模在该领域最新的解决
[嵌入式]
硅谷数模:展望全功能<font color='red'>USB</font> Type-C开发趋势
手机USB充电所面临的绿色挑
谁能想到手机产业会影响环境?当你在思考如何减少生态污染时,想到的可能是改变汽车设计,或使用绿色能源,根本不会是手机。然而,我们确实看到 手机充电器 对环境造成了很大的影响。手机行业已经开始使用 通用充电解决方案 (UCS)来解决这个问题,UCS将改变手机制造商设计手机的方式。本文将对实现安全充电接口需要考虑的因素加以分析。 一个手机用户一年会产生约17公斤的二氧化碳,相当于汽车行驶111公里。这个数字不是很大,在保护环境方面似乎不是优先考虑的对象。然而,如果换一个角度看,你会发现,去年全球手机出货量达12亿部,每一部手机都有自己专用的充电器。在这12亿部手机中,估计有5亿部是替代性手机。拿到一部新手机通常都会让人兴奋不已
[手机便携]
手机<font color='red'>USB</font>充电所面临的绿色挑
S3C2440下linux按键驱动编写及测试程序
驱动程序tang2440_buttons.c #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include linux/poll.h #include linux/irq.h #include asm/irq.h #include linux/interrupt.h #include asm/uaccess.h #include mach/regs-gpio.h #include mach/hardware.h #include linux/platf
[单片机]
基于USB接口的信号模拟器设计
  引 言   USB总线是一种高效、快速、价格低、体积小、支持热插拔的串行通信接口,目前USB这一接口形式在电子产品的设计中得到了广泛应用。本文所设计的RS485信号模拟器就是采用USB接口总线,可以很方便与PC机进行连接,并且USB接口可以为外界提供电源。 RS485是一种平衡方式传输的串行接口标准,它的电气特性标准中有严格规定,但它的通信协议可以由用户自行定义。本文将详细讨论USB总线信号与 RS485总线信号的相互转换,及PC机终端应用软件对USB接口芯片的各种操作。在此基础上用户可以根据不同需求,在终端应用软件中自行设计通信协议。   1 总体设计   信号模拟器主要包括USB接口芯片、单片机子系统、RS485与T
[模拟电子]
s3c6410的RTC在linux中的驱动(5)
在上一篇中我们在中分析了RTC驱动的注册和注销,重点讲了平台设备驱动的probe函数,最后引出了这篇我们要讲解的内容,那就是下面这个结构体中的一些函数。 static const struct rtc_class_ops s3c_rtcops = { .open= s3c_rtc_open, .release = s3c_rtc_release, .ioctl = s3c_rtc_ioctl, .read_time = s3c_rtc_gettime, .set_time = s3c_rtc_settime, .read_alarm = s3c_rtc_getalarm, .set_alarm = s3c_rtc_seta
[单片机]
s3c6410的RTC在<font color='red'>linux</font>中的驱动(5)
赛普拉斯EZ-USB CX3助力Socionext全景摄像头方案
基于SoC的图像解决方案Socionext公司于今日宣布推出内置Milbeaut®系列图像信号处理器的360°全景摄像头设计解决方案。 Socionext的产品包括两种用于满足日益增长的360°摄像头应用需求的产品。半专业型号基于公司SC2000 高性能处理器,具备实时4K图像拼接功能。一般消费者型号与赛普拉斯半导体公司和ImmerVision合作设计,内置MBG967 IoT系列处理器。两种解决方案均带有电路板设计参考信息和软件开发工具包。设备制造商可以轻松地为其独有的应用开发定制的高性能球型摄像头。 为一般消费者设计的MBG967 实时360°图像拍摄的需求正在快速增加,包括虚拟现实视频实时播放等应用。为了满足这些需求,So
[嵌入式]
赛普拉斯EZ-<font color='red'>USB</font> CX3助力Socionext全景摄像头方案
ARM linux系统调用的实现原理
  大家都知道linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。下面咱们看看它的实现过程。   系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。   at91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定义如下:   #if defined(__thumb__) //thumb模式   #define __syscall(nAME) \\   "push {r7} \\t" \\   "mov r7, #" __sys1(__NR_##name) " \\t"
[单片机]
基于ARM&Linux的嵌人式设备远程调试模块设计
   0 引 言   目前,大多数的工业设备都有专用的调试接口和调试软件,这种方式能有效解决系统现场调试和维护升级的问题,但也有一些弊端。首先,依赖专用的调试软件,随着产品的丰富,调试软件的版本也随之增加,从而工程人员需要面对软件匹配的麻烦;其次,专用的调试接口和配备专用的调试软件需要专业人员操作,用户无法灵活地使用设备。因此需要一种无需专用设备,方便、易行的设备调试方案。随着计算机技术的发展,以ARM为代表的微处理器的性能得到极大的提高,从而提高了嵌入式系统的性能,应用范围也更加广阔;而网络技术的发展,使得B/S(客户端/服务器)模式成为一种潮流。这两者的结合便为设备的现场调试方式提供了新的方案。工程人员只需要连接Inter
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved