佘小宝的爹 发表于 2016-10-27 07:25:27

MicroPython开发板TPYBoard关于USB

欢迎加入运维网交流群:263444886  
                  USB-HID是Human Interface Device的缩写,属于人机交互操作的设备,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球、电话拨号设备、VCR遥控等等设备。 TPYBoard借助micropython除了具有usb host功能以外,还可作为USB-HID设备来应用,这里重点讲述如果作为鼠标和键盘使用。
  一、作为鼠标应用
  (1)编辑 boot.py 文件以更改 USB—mouse 的确认方式。具体如下:
# boot.py -- run on boot-  
up
# can run arbitrary Python, but best to keep it minimal
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')
# act as a serial device and a mouse

  其实就是去掉了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中,输入:
    pyb.hid((0,10,0,0))  #注意这里两层括号  回车后,会发现鼠标向右移动了10个像素。pyb.hid()的具体用法:
    pyb.hid((buttons, x, y, z))  这里buttons取0,1,2,3分别表示0移动,1按下左键,2按下中键,3按下右键。这句也可以用pyb.USB_HID().send((buttons, x, y, z)),效果是一样的。
  (3)鼠标左右摇晃,代码如下:
    >>> 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文件。
    #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
 # 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文件:
    # main.py -- put your code here!  
    hid=pyb.USB_HID()
  
    def release_key_once():
  
    buf = bytearray(8) # report is 8 bytes long
  
    buf = 0
  
    hid.send(buf) # key released
  
    pyb.delay(10)
  
    def press_key_once(key):
  
    buf = bytearray(8) # report is 8 bytes long
  
    buf = key
  
    hid.send(buf) # key released
  
    pyb.delay(10)
  
    def press_2key(key1,key2):
  
    buf = bytearray(8) # report is 8 bytes long
  
    buf = key1
  
    buf = key2
  
    hid.send(buf) # key released
  
    pyb.delay(10)
  
    def release_2key():
  
    buf = bytearray(8) # report is 8 bytes long
  
    buf = 0
  
    buf = 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),抬起一个键>
页: [1]
查看完整版本: MicroPython开发板TPYBoard关于USB