main.lua 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. -- Luatools需要PROJECT和VERSION这两个信息
  2. PROJECT = "uart_two"
  3. VERSION = "1.0.0"
  4. log.info("main", PROJECT, VERSION)
  5. -- 引入必要的库文件(lua编写), 内部库不需要require
  6. sys = require("sys")
  7. if wdt then
  8. --添加硬狗防止程序卡死,在支持的设备上启用这个功能
  9. wdt.init(9000)--初始化watchdog设置为9s
  10. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  11. end
  12. log.info("main", "uart_two demo run......")
  13. -- 根据实际设备选取不同的uartid
  14. local uartid1 = 1 -- 第一个串口id
  15. local uartid2 = 2 -- 第二个串口id
  16. --local uartid2 = 3 --第三个串口id(Air780EGH用第三个串口,UART2已经用作通信主芯片和GNSS芯片之间的通信用)
  17. -- 初始化第一个串口
  18. uart.setup(
  19. uartid1,--串口id
  20. 115200,--波特率
  21. 8,--数据位
  22. 1--停止位
  23. )
  24. -- 初始化第一个串口
  25. uart.setup(
  26. uartid2,--串口id
  27. 115200,--波特率
  28. 8,--数据位
  29. 1--停止位
  30. )
  31. -- 第一个串口接收数据回调函数
  32. -- 收取数据会触发回调, 这里的"receive" 是固定值
  33. uart.on(uartid1, "receive", function(id, len)
  34. local s = ""
  35. repeat
  36. s = uart.read(id, 128)
  37. if #s > 0 then -- #s 是取字符串的长度
  38. -- 关于收发hex值,请查阅 https://doc.openluat.com/article/583
  39. log.info("uart", "receive", id, #s, s)
  40. -- log.info("uart", "receive", id, #s, s:toHex()) --如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到
  41. end
  42. until s == ""
  43. end)
  44. -- 第二个串口接收数据回调函数
  45. -- 收取数据会触发回调, 这里的"receive" 是固定值
  46. uart.on(uartid2, "receive", function(id, len)
  47. local s = ""
  48. repeat
  49. s = uart.read(id, 128)
  50. if #s > 0 then -- #s 是取字符串的长度
  51. -- 关于收发hex值,请查阅 https://doc.openluat.com/article/583
  52. log.info("uart", "receive", id, #s, s)
  53. -- log.info("uart", "receive", id, #s, s:toHex()) --如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到
  54. end
  55. until s == ""
  56. end)
  57. sys.taskInit(function()
  58. -- 循环两秒分别向两个串口发一次数据
  59. while true do
  60. sys.wait(2000)
  61. uart.write(uartid1, "uart1 test data.")
  62. uart.write(uartid2, "uart2 test data.")
  63. end
  64. end)
  65. -- 用户代码已结束---------------------------------------------
  66. sys.run()
  67. -- sys.run()之后后面不要加任何语句!!!!!