Files
mobile_comm/luatos/air780epm/module/Air780EPM
wangfq e8917e7041 fix(vd960Air): 修复上电反复复位, 打通测试服务器连接
现象: 上电后 Lua VM 报 uart_app.lua:28 attempt to index a boolean value
      → VM exit → 15s 后自动复位, 死循环, 永远走不到 MQTT 连接

根因(4 处叠加, 第 1 处致命):
1. config.lua 末尾漏 return —— require 对无返回值模块返回 true,
   local CFG = require "config" 后访问 CFG.CFG_xxx 直接报错
2. 全工程 10 处调用 mstick(), 但 LuatOS 并无此 API(正确为 mcu.ticks())
3. MQTT 服务器仍是合宙官方测试服 lbsmqtt.airm2m.com:1884
4. MQTT 鉴权用户名/密码硬编码为空串

修复:
1. config.lua 末尾加 return _G(配置项本就是全局变量);
   另: ClientID 的 mobile.imei() 加空值防护(or "unknown")
2. 新增 mstick.lua: 全局 mstick() = mcu.ticks() 封装(回退 os.time()*1000),
   原 10 处调用点零改动; main.lua 在 require "config" 之后 require "mstick"
3. 服务器改为 110.41.131.144:1883(明文非 TLS), 新增 CFG_MQTT_USER/PASS,
   mqtt_main 改为 auth(CLIENT_ID, CFG_MQTT_USER, CFG_MQTT_PASS, true)
4. .gitignore 放行 vd960Air/tools/ —— 官方 tools/ 忽略规则导致自检脚本
   无法入库(sim_frame_test.py 自 8/31 起一直未入库)

新增工具:
- tools/sim_load_test.lua: 离线加载+冒烟自检(lua5.3 + LuatOS API 桩 + 严格全局
  检查), 按 main.lua 真实顺序加载全部模块并冒烟调用关键函数, 用于抓取
  "require 返回值缺失""调用了不存在的 API"这类语法检查抓不到的运行时问题

验证:
- luac5.3 -p 全部 14 个 lua 文件通过
- 离线自检: 16 项断言 + 8 项冒烟全部通过
- Python 帧协议参考验证全部通过
- readme Markdown 表格列数 0 异常

文档: readme 补 §8 板级问题修复记录, 更新文件结构/待确认清单/计划表
2026-09-10 15:35:10 +08:00
..

LuatOS-Air780EPM

介绍

本代码库 是 合宙 Air780EPM 模组的代码中心, 包括演示代码demo, 案例代码project等

如需查阅文档, 请访问合宙文档中心的Air780EPM模块文档中心

目录说明

固件说明

Air780EPM固件版本说明

demo使用说明

[JT808]:本demo演示使用string.pack与unpack函数,实现JT808 终端注册协议数据生成与解析,适用于车辆定位和监控系统。

[Websocket]:本demo演示使用websocket协议,实现LuatOS与Web服务器的通信,适用于实时数据传输和双向通信场景。

[adc]:本demo演示LuatOS的ADC功能,用于模拟信号的读取,适用于传感器数据采集等场景。

[airlbs]:本demo演示LuatOS的LBS功能,包括多基站定位和WIFI定位,适用于位置服务开发。

[bit]:本demo演示LuatOS的bit操作功能,适用于需要进行位级操作的场景。

[bit64]:本demo演示LuatOS的64位bit操作功能,适用于需要进行大范围位级操作的场景。

[camera/spi_cam]:本demo演示LuatOS的SPI摄像头功能,适用于需要集成摄像头进行图像采集的设备。

[can]:本demo演示LuatOS的CAN总线通信功能,适用于汽车电子和工业自动化等场景。

[crypto]:本demo演示LuatOS的加密功能,包括哈希、对称加密和非对称加密等,适用于需要进行数据加密和解密的场景。

[errdump]:本demo演示LuatOS的错误信息转储功能,适用于设备调试和错误分析。

[fota2]:本demo演示LuatOS的FOTA(空中下载)功能,包括固件更新等,适用于设备远程升级和维护。

[fs]:本demo演示LuatOS的文件系统功能,包括文件读写等,适用于需要进行文件存储和操作的场景。

[gpio]:本demo演示LuatOS的GPIO功能,包括数字输入输出等,适用于需要进行硬件控制的场景。

[helloworld]:本demo演示LuatOS的基本运行环境,通过输出“Hello, World!”来验证开发环境是否搭建成功。

[hmeta]:本demo演示LuatOS的硬件信息查询功能,适用于获取设备硬件相关信息。

[http]:本demo演示LuatOS的HTTP协议功能,包括网页请求和文件下载等,适用于需要进行网络通信的场景。

[i2c-sht20]:本demo演示LuatOS的I2C通信功能,通过SHT20温湿度传感器来读取温度和湿度信息。

[iconv]:本demo演示LuatOS的字符编码转换功能,适用于需要进行字符编码转换的场景。

[iotcloud]:本demo演示LuatOS与物联网云平台的通信,包括设备连接、数据上传和云服务调用等。

[json]:本demo演示LuatOS的JSON数据解析和生成功能,适用于需要进行JSON格式数据处理的场景。

[lbsloc2]:本demo演示LuatOS的LBS定位功能,适用于需要进行精准位置定位的场景。

[lcd]:本demo演示LuatOS的LCD显示功能,适用于需要进行图形界面显示的设备。

[log]:本demo演示LuatOS的日志记录功能,适用于需要进行日志记录和分析的场景。

[lowpower]:本demo演示LuatOS的低功耗模式功能,适用于需要进行设备功耗优化的场景。

[lowpower_new]:本demo演示LuatOS的低功耗模式功能,结合项目示例进行说明,适用于需要进行设备功耗优化的场景。

[miniz]:本demo演示LuatOS的压缩和解压缩功能,适用于需要进行数据压缩和解压缩的场景。

[mobile]:本demo演示LuatOS的移动网络功能,包括蜂窝网络连接、数据传输等,适用于需要进行移动网络通信的场景。

[mqtt]:本demo演示LuatOS的MQTT协议功能,适用于物联网场景下的消息发布和订阅。

[netdrv/ch390]:本demo演示LuatOS与CH390芯片的网络驱动功能,适用于USB转网口的设备。

[ntp]:本demo演示LuatOS的NTP网络时间同步功能,适用于需要进行时间同步的场景。

[onewire]:本demo演示LuatOS的1-Wire协议功能,适用于连接单总线设备如DS18B20温度传感器等。

[openai/deepseek]:本demo演示LuatOS如何集成OpenAI的DeepSeek服务,适用于需要进行深度学习推理的场景。

[pack]:本demo演示LuatOS的数据打包和解包功能,适用于需要进行数据格式转换的场景。

[protobuf]:本demo演示LuatOS的protobuf数据解析和生成功能,适用于需要进行protobuf格式数据处理的场景。

[pwm]:本demo演示LuatOS的PWM功能,适用于需要进行脉冲宽度调制的场景。

[sms]:本demo演示LuatOS的短信收发功能,适用于嵌入式设备需要进行短信通信的场景。

[spi]:本demo演示LuatOS的SPI通信功能,适用于需要进行SPI通信的场景。

[string]:本demo演示LuatOS的字符串操作功能,包括字符串拼接、分割、查找等,适用于需要进行字符串处理的场景。

[tcp]:本demo演示LuatOS的TCP协议功能,适用于需要进行TCP通信的场景。

[timer]:本demo演示LuatOS的定时器功能,包括单次定时器和周期定时器,适用于需要定时执行任务的场景。

[uart]:本demo演示LuatOS的UART串口通信功能,适用于需要进行串口通信的场景。

[udp]:本demo演示LuatOS的UDP协议功能,适用于需要进行UDP通信的场景。

[wdt]:本demo演示LuatOS的看门狗定时器功能,适用于需要进行设备监控和自动复位的场景。

[wlan/wifiscan]:本demo演示LuatOS的Wi-Fi扫描功能,适用于需要搜索和连接Wi-Fi网络的场景。

授权协议

MIT License

print("感谢您使用LuatOS ^_^")
print("Thank you for using LuatOS ^_^")