main.lua 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "test"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. _G.sys = require("sys")
  6. sys.subscribe("USB_HID_INC", function(event)
  7. log.info("HID EVENT", event)
  8. if event == usbapp.NEW_DATA then
  9. sys.publish("HID_RX")
  10. end
  11. end)
  12. sys.taskInit(function()
  13. local rx_buff = zbuff.create(64)
  14. local tx_buff = zbuff.create(64)
  15. -- 下面演示键盘模式下发送原始包来实现键盘功能
  16. -- 底层键盘描述符中,1个包8个字节,byte0是控制按键值,其中
  17. -- bit0 LeftControl
  18. -- bit1 LeftShift
  19. -- bit2 LeftAlt
  20. -- bit3 LeftGUI
  21. -- bit4 RightControl
  22. -- bit5 RightShift
  23. -- bit6 RightAlt
  24. -- bit7 RightGUI win键
  25. -- byte1 固定0
  26. -- byte2~8 其他按键值,最多允许同时按下6个键
  27. -- 没有按键按下时,8个byte都为0
  28. -- 为了兼容扫码枪处理,允许一次发送多次按键处理
  29. usbapp.start(0)
  30. while 1 do
  31. -- 模拟按下数字0,然后抬起
  32. tx_buff:copy(0, "\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
  33. usbapp.hid_tx(0, tx_buff)
  34. tx_buff:del()
  35. sys.wait(5000)
  36. -- 模拟按下Ctrl+Alt+A,然后抬起,QQ截屏
  37. tx_buff:copy(0, "\x05\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
  38. usbapp.hid_tx(0, tx_buff)
  39. tx_buff:del()
  40. sys.wait(5000)
  41. end
  42. --下面演示自定义HID,使用前注释掉上面的键盘模式演示代码
  43. usbapp.set_id(0, 0xaabb, 0xccdd) --改了默认VID和PID识别不了串口,但是HID和MSD还能用
  44. usbapp.hid_mode(0, 1, 8) --自定义HID模式,ep_size=8,每次发送需要8的倍数,适合数据量较小的应用
  45. --usbapp.hid_mode(0, 1, 64) --自定义HID模式,ep_size=64,每次发送需要64的倍数,适合数据量较大的应用
  46. usbapp.start(0)
  47. while 1 do --收到数据返回hellworld+PC数据
  48. local msg, data = sys.waitUntilExt("HID_RX")
  49. usbapp.hid_rx(0, rx_buff)
  50. tx_buff:copy(0, "helloworld" .. rx_buff:query())
  51. rx_buff:del()
  52. usbapp.hid_tx(0, tx_buff)
  53. tx_buff:del()
  54. end
  55. end)
  56. -- 用户代码已结束---------------------------------------------
  57. -- 结尾总是这一句
  58. sys.run()
  59. -- sys.run()之后后面不要加任何语句!!!!!