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 in range(n):
    ...     pyb.hid((0int(20 * math.sin(i / 10)), 00))
    ...     pyb.delay(d)
    ...
    >>> osc(10050)

这段代码也可以写到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 in range(n):
    pyb.hid((0int(20 * math.sin(i / 10)), 00))
    pyb.delay(d)
    osc(10050)

保存后,按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的应用的更多相关文章

  1. 带以太网的MicroPython开发板:TPYBoardv201建立云加法器实例

    转载请注明文章来源,MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇 前面的一篇文档向大家介绍了v201的开发板作为客户端终端向TCPS上传数据的基本过程 ...

  2. 带以太网的MicroPython开发板:TPYBoardv201温湿度上传实例

    转载请以链接形式注明文章来源,MicroPythonQQ交流群:157816561,公众号:MicroPython玩家汇 历来关于温湿度的检测都是没有间断过的,这次我们继续检测温湿度,同样还是使用DH ...

  3. STC8H开发(九): STC8H8K64U模拟USB HID外设

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  4. TPYBoard—MicroPython开发板免费试用!你最想抱走哪款?

    TPYBoard开发板自上市开售以来,受到了广大硬件及MicroPython爱好者的一致好评,许多人提出想试用开发板的申请.为此,TPYBoard特推出多款开发板免费试用活动,感兴趣的朋友抓紧申请吧! ...

  5. MicroPython开发板:TPYBoard v102 播放音乐实例

    0x00前言 前段时间看到TPYBoard的技术交流群(群号:157816561,)里有人问关于TPYBoard播放音乐的问题.最近抽空看了一下文档介绍,着手做了个实验.更多MicroPython的教 ...

  6. NEXYS 3开发板练手--USB UART(一)

    接上一篇文章,今天来讲讲这个USB UART串口发送机. 我们知道,当我们的微处理器(单片机.FPGA.DSP等)要和电脑进行通信的时候一般会采用串行通信方式,而最常用的串行通信协议的物理层接口是RS ...

  7. TurnipBit—MicroPython开发板:从积木式编程语言开始学做小小创客

    编程.建模.制作动画和游戏--这些当初我们默认只有成年人玩得转的事情,现在早已经被无数小孩子给颠覆甚至玩出新境界了.热爱科技和动手的"创客"(Maker)现在在全世界都炙手可热.今 ...

  8. NEXYS 3开发板练手--USB UART(三)

    接着上一篇,今天我们来建立一个能用于实际工程中的DEMO. 首先,为了使我们的发送机不像上一个DEMO一样无节制的循环发送,我们需要修改代码,增加使发送机停止发送的控制部分,修改后的代码如下: `ti ...

  9. TurnipBit—MicroPython开发板:妥妥拽拽零基础也能玩编程

    可视化编程网站入口:www.turnipbit.com 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象." ...

随机推荐

  1. vitamio 缓冲一部分时,loading还没消失,直接点击播放,loading未能消失

    在videoView的start()中 添加loading消失语句,效果很好 ,也没有出现任何问题

  2. Nginx + Tomcat 配置

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...

  3. b.BIO连接器整体框图

    上一讲讲解过NIO的框图,可以看来,NIO通道是目前Tomcat7以后的默认的通道的推荐配置,在Tomcat6和以前的配置中,BIO是主流的配置: 只需要修改protocol协议部分即可,而后续还有A ...

  4. Mybatis学习(叁)

    一.resultMap[结果映射  关系映射] 作用:当查询的数据与数据库中的数据不一致(表中字段和实体的属性不一样),通过resultMap进行一次映射. 可以使用简单的做法:(取别名) 二.多表查 ...

  5. JavaScript window

    window -- window对象是BOM中所有对象的核心 window,中文"窗口" window对象除了是BOM中所有对象的父对象外,还包含一些窗口控制函数 全局的windo ...

  6. 【Linux】rpm -qa 和 rpm -q

    查询一个包是否被安装 # rpm -q < rpm package name>列出所有被安装的rpm package # rpm -qae.g. rpm -qa|grep "pc ...

  7. 集成 Union Pay - 银联支付

    作者感言 前面已经把WeChat SDK的支付, AliPay SDK搞得七七八八了, 接下来就是银联支付的Union Pay SDK.最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, ...

  8. jquery 行交换 上移 下移

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. nyoj-746

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...

  10. Help Me Escape (ZOJ 3640)

    J - Help Me Escape Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:32768KB ...