MicroPython开发板TPYBoard关于USB-HID的应用
USB-HID是Human Interface Device的缩写,属于人机交互操作的设备,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球、电话拨号设备、VCR遥控等等设备。 TPYBoard借助micropython除了具有usb host功能以外,还可作为USB-HID设备来应用,这里重点讲述如果作为鼠标和键盘使用。
一、作为鼠标应用
(1)编辑 boot.py 文件以更改 USB—mouse 的确认方式。具体如下:
1
2
3
4
|
<span style = "font-family: 宋体, SimSun; font-size: 12px;" > # boot.py -- run on boot- up<br> # can run arbitrary Python, but best to keep it minimal<br>import pyb<br>#pyb.main('main.py') <br> # main script to run after this one#pyb.usb_mode('CDC+MSC') <br> # act as a serial and a storage device<br>pyb.usb_mode('CDC+HID')<br># act as a serial device and a mouse<br></span> |
其实就是去掉了pyb.usb_mode('CDC+HID')前的注释符。这里pyb.usb_mode(),定义了HID的设备,默认为mouse,也可以用pyb.usb_mode('CDC+HID',hid=pyb.hid_mouse)。如果是键盘,应改为pyb.usb_mode('CDC+HID',hid=pyb.hid_keyboard)。
(2)REPL调试鼠标事件
这里依然用putty进行REPL调试。当进行完(1)再次启动时,会发现原本会出现的u盘没有了,此时设备的串口也可能发生了改变,因此在连接Putty前要先确认一下串口。在putty中,输入:
1
|
pyb.hid(( 0 , 10 , 0 , 0 )) #注意这里两层括号 |
回车后,会发现鼠标向右移动了10个像素。pyb.hid()的具体用法:
1
|
pyb.hid((buttons, x, y, z)) |
这里buttons取0,1,2,3分别表示0移动,1按下左键,2按下中键,3按下右键。这句也可以用pyb.USB_HID().send((buttons, x, y, z)),效果是一样的。
(3)鼠标左右摇晃,代码如下:
1
2
3
4
5
6
7
|
>>> import math >>> def osc(n, d): ... for i in range (n): ... pyb.hid(( 0 , int ( 20 * math.sin(i / 10 )), 0 , 0 )) ... pyb.delay(d) ... >>> osc( 100 , 50 ) |
这段代码也可以写到main.py中,这时大家可能会问,u盘没了,main.py怎么编辑啊。这里需要进入TPYBV101的安全模式。按住usr键,按一下reset,此时led2与led3交替亮,当led3亮起,led2没亮时,松开usr,此时led3快闪后,可以发现u盘挂载出来了,这时可以修改main.py文件。
1
2
3
4
5
6
7
8
|
#main.py import math import pyb def osc(n, d): for i in range (n): pyb.hid(( 0 , int ( 20 * math.sin(i / 10 )), 0 , 0 )) pyb.delay(d) osc( 100 , 50 ) |
保存后,按reset重启后,就可以看到效果了。
二、作为键盘应用
(1) 编辑 boot.py 文件,定义usb-keyboard
1
2
3
4
5
6
7
|
# boot.py -- run on boot-up # can run arbitrary Python, but best to keep it minimal import machine import pyb #pyb.main('main.py') # main script to run after this one #pyb.usb_mode('CDC+MSC') # act as a serial and a storage device pyb.usb_mode( 'CDC+HID' ,hid = pyb.hid_keyboard) # act as a serial device and a keyboard |
(2)按键测试,这里为了便于查看,我们修改main.py文件:悦德财富:https://yuedecaifu.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# main.py -- put your code here! hid = pyb.USB_HID() def release_key_once(): buf = bytearray( 8 ) # report is 8 bytes long buf[ 2 ] = 0 hid.send(buf) # key released pyb.delay( 10 ) def press_key_once(key): buf = bytearray( 8 ) # report is 8 bytes long buf[ 2 ] = key hid.send(buf) # key released pyb.delay( 10 ) def press_2key(key1,key2): buf = bytearray( 8 ) # report is 8 bytes long buf[ 2 ] = key1 buf[ 3 ] = key2 hid.send(buf) # key released pyb.delay( 10 ) def release_2key(): buf = bytearray( 8 ) # report is 8 bytes long buf[ 2 ] = 0 buf[ 3 ] = 0 hid.send(buf) # key released pyb.delay( 10 ) pyb.delay( 1000 ) press_key_once( 0x04 ) release_key_once() pyb.delay( 1000 ) press_key_once( 0x05 ) release_key_once() pyb.delay( 1000 ) press_key_once( 0x2B ) release_key_once() pyb.delay( 1000 ) press_key_once( 0x28 ) release_key_once() pyb.delay( 1000 ) press_key_once( 0x06 ) release_key_once() pyb.delay( 1000 ) press_key_once( 0x07 ) release_key_once() pyb.delay( 1000 ) press_2key( 0x08 , 0x09 ) release_2key() pyb.delay( 1000 ) |
这个程序定义了按下一个键press_key_once(key),抬起一个键 release_key_once(),按下两个键press_2key(key1,key2),抬起两个键release_2key()的方法。具体运行效果,可先打开一个记事本,然后按一下reset键,或者插拔一次usb口,最后可以看到在记事本里,先打入ab,接着是tab,回车,接着cdef,除了ef几乎同时出现,前面的输入间都间隔了1秒。
MicroPython开发板TPYBoard关于USB-HID的应用的更多相关文章
- 带以太网的MicroPython开发板:TPYBoardv201建立云加法器实例
转载请注明文章来源,MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇 前面的一篇文档向大家介绍了v201的开发板作为客户端终端向TCPS上传数据的基本过程 ...
- 带以太网的MicroPython开发板:TPYBoardv201温湿度上传实例
转载请以链接形式注明文章来源,MicroPythonQQ交流群:157816561,公众号:MicroPython玩家汇 历来关于温湿度的检测都是没有间断过的,这次我们继续检测温湿度,同样还是使用DH ...
- STC8H开发(九): STC8H8K64U模拟USB HID外设
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- TPYBoard—MicroPython开发板免费试用!你最想抱走哪款?
TPYBoard开发板自上市开售以来,受到了广大硬件及MicroPython爱好者的一致好评,许多人提出想试用开发板的申请.为此,TPYBoard特推出多款开发板免费试用活动,感兴趣的朋友抓紧申请吧! ...
- MicroPython开发板:TPYBoard v102 播放音乐实例
0x00前言 前段时间看到TPYBoard的技术交流群(群号:157816561,)里有人问关于TPYBoard播放音乐的问题.最近抽空看了一下文档介绍,着手做了个实验.更多MicroPython的教 ...
- NEXYS 3开发板练手--USB UART(一)
接上一篇文章,今天来讲讲这个USB UART串口发送机. 我们知道,当我们的微处理器(单片机.FPGA.DSP等)要和电脑进行通信的时候一般会采用串行通信方式,而最常用的串行通信协议的物理层接口是RS ...
- TurnipBit—MicroPython开发板:从积木式编程语言开始学做小小创客
编程.建模.制作动画和游戏--这些当初我们默认只有成年人玩得转的事情,现在早已经被无数小孩子给颠覆甚至玩出新境界了.热爱科技和动手的"创客"(Maker)现在在全世界都炙手可热.今 ...
- NEXYS 3开发板练手--USB UART(三)
接着上一篇,今天我们来建立一个能用于实际工程中的DEMO. 首先,为了使我们的发送机不像上一个DEMO一样无节制的循环发送,我们需要修改代码,增加使发送机停止发送的控制部分,修改后的代码如下: `ti ...
- TurnipBit—MicroPython开发板:妥妥拽拽零基础也能玩编程
可视化编程网站入口:www.turnipbit.com 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象." ...
随机推荐
- vitamio 缓冲一部分时,loading还没消失,直接点击播放,loading未能消失
在videoView的start()中 添加loading消失语句,效果很好 ,也没有出现任何问题
- Nginx + Tomcat 配置
Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...
- b.BIO连接器整体框图
上一讲讲解过NIO的框图,可以看来,NIO通道是目前Tomcat7以后的默认的通道的推荐配置,在Tomcat6和以前的配置中,BIO是主流的配置: 只需要修改protocol协议部分即可,而后续还有A ...
- Mybatis学习(叁)
一.resultMap[结果映射 关系映射] 作用:当查询的数据与数据库中的数据不一致(表中字段和实体的属性不一样),通过resultMap进行一次映射. 可以使用简单的做法:(取别名) 二.多表查 ...
- JavaScript window
window -- window对象是BOM中所有对象的核心 window,中文"窗口" window对象除了是BOM中所有对象的父对象外,还包含一些窗口控制函数 全局的windo ...
- 【Linux】rpm -qa 和 rpm -q
查询一个包是否被安装 # rpm -q < rpm package name>列出所有被安装的rpm package # rpm -qae.g. rpm -qa|grep "pc ...
- 集成 Union Pay - 银联支付
作者感言 前面已经把WeChat SDK的支付, AliPay SDK搞得七七八八了, 接下来就是银联支付的Union Pay SDK.最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, ...
- jquery 行交换 上移 下移
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- nyoj-746
整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...
- Help Me Escape (ZOJ 3640)
J - Help Me Escape Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:32768KB ...