18-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(GPRS程序部分说明)
https://www.cnblogs.com/yangfengwu/p/10896650.html
其实GPRS整体和Wi-Fi是一样的原理,就是用http把程序下载到对应的文件里面,然后运行
大家看我的程序的时候会发现他比WIFI多了个这个文件
module(...,package.seeall) --方便其他文件之间互相访问 updata0 = nil updata1 = nil updata2 = nil updata3 = nil updata4 = nil updata5 = nil updata6 = nil updata7 = nil updata8 = nil updata9 = nil local USER_DIR_PATH = "/user_data" --数据保存的位置 local filehandle; --所有的文件读取使用 local ABUpdataFile = "A" updataFlage = false --[[获取执行哪一份程序]] filehandle=io.open(USER_DIR_PATH.."/ABUpdataFile.lua","r")--执行哪一份程序 if filehandle then ABUpdataFile = filehandle:read("*all")--读出文件内容 filehandle:close()--关闭文件 end filehandle=io.open(USER_DIR_PATH.."/version1.lua","r")--读出云端版本 if filehandle then if filehandle:read("*all") ~= "0.0.0" then updataFlage = true end filehandle:close()--关闭文件 end if updataFlage == false then if ABUpdataFile == "A" then print("run:A"); updata0 = require "Aupdata0" updata1 = require "Aupdata1" updata2 = require "Aupdata2" updata3 = require "Aupdata3" updata4 = require "Aupdata4" updata5 = require "Aupdata5" updata6 = require "Aupdata6" updata7 = require "Aupdata7" updata8 = require "Aupdata8" updata9 = require "Aupdata9" else print("run:B"); updata0 = require "Bupdata0" updata1 = require "Bupdata1" updata2 = require "Bupdata2" updata3 = require "Bupdata3" updata4 = require "Bupdata4" updata5 = require "Bupdata5" updata6 = require "Bupdata6" updata7 = require "Bupdata7" updata8 = require "Bupdata8" updata9 = require "Bupdata9" end end
大家发没发现一个问题,WIFI使用的时候不需要
只要是其它函数里面的全局变量,直接用就可以,但是GPRS不可以
我为了可以文件之间互相访问,所以才这样弄的
有没有疑问我为什么没有放到main.lua里面
其实一开始我就放到了mian.lua里面,但是发现main里面的变量只能使用...在别的文件里面不能对其赋值
大家如果不信自己可以测试下.....
另外,我的程序里面使用的复位是
原因是我发现原先的sys.XXX 忘了具体函数了...复位以后呢!还会有残留的程序在里面运行
还有个要说的,其实和咱升级无关
那天有人问,设置了引脚为输出了,现在想读取引脚的状态怎么读,难道再设置为输入???搞笑...
其实直接可以读