main.lua 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "pack"
  3. VERSION = "2.0.0"
  4. --[[
  5. 本demo演示 string字符串的基本操作
  6. 1. lua的字符串是带长度, 这意味着, 它不依赖0x00作为结束字符串, 可以包含任意数据
  7. 2. lua的字符串是不可变的, 就不能直接修改字符串的一个字符, 修改字符会返回一个新的字符串
  8. ]]
  9. -- sys库是标配
  10. _G.sys = require("sys")
  11. sysplus = require("sysplus")
  12. -- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
  13. if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
  14. pm.power(pm.PWK_MODE, false)
  15. end
  16. sys.taskInit(function ()
  17. sys.wait(1000) -- 免得看不到日志
  18. local tmp
  19. --实验1:以小端方式编码
  20. local data = string.pack("<I", 0xAABBCCDD) --‘<’表示以小端方式编码,'I'表示,unsigned int , 4字节
  21. log.info("pack:", string.format("%02X", data:byte(1)), --输出小端编码后的数据
  22. string.format("%02X", data:byte(2)),
  23. string.format("%02X", data:byte(3)),
  24. string.format("%02X", data:byte(4)))
  25. --实验2:以大端方式编码
  26. local data = string.pack(">I", 0xAABBCCDD)
  27. log.info("pack:", string.format("%02X", data:byte(1)), --输出大端编码后的数据
  28. string.format("%02X", data:byte(2)),
  29. string.format("%02X", data:byte(3)),
  30. string.format("%02X", data:byte(4)))
  31. --实验3:对上面已经完成的大端编码,再次进行解包为每个字节
  32. local byte1,byte2,byte3,byte4 = string.unpack(">BBBB", data) --将32位数据拆成4个8位字节数据
  33. --log.info("Unpack", byte1,byte2,byte3,byte4)
  34. log.info("Unpack:", string.format("%02X", byte1), --以十六进制形式输出拆解后的4个字节数据
  35. string.format("%02X", byte2),
  36. string.format("%02X", byte3),
  37. string.format("%02X", byte4))
  38. end)
  39. -- 这里演示4G模块上网后,会自动点亮网络灯,方便用户判断模块是否正常开机
  40. sys.run()
  41. -- sys.run()之后后面不要加任何语句!!!!!