https://www.cnblogs.com/yangfengwu/p/9411134.html
基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢
https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025
这一节为教程最终版功能演示,现在不必深究,早晚自己全部都会实现的(静静的跟着我学哈)
这一节学习远程升级自己的程序
如果要远程升级自己的程序,需要自己下载底层的升级程序,因为需要修改一些参数,让模块远程访问自己
的升级软件
如果前面下载了,可以用下面的方式清除程序
如果这种方式清除不了,可以
现在打开远程升级软件
修改些东西,因为自己这个软件既可以升级WIFI也可以升级GPRS,所以需要做对应的修改
好现在下进去程序
我给大家准备了一个测试的程序(其实就是自己云端默认的程序,上上姐默认远程下载的程序)
local RelayNowState=0 local RelayNowStateCopy=0 globalSendData ="nil"; local UsartReceiveData=""; local UsartReceiveDataCnt=0; local UsartReceiveDataCntCopy=0; RelayPin = 2; if file.open("switch.lua", "r") then if file.read() == "relay=1" then gpio.write(RelayPin,1) gpio.mode(RelayPin,gpio.OUTPUT) print("relay=1") else gpio.write(RelayPin,0) gpio.mode(RelayPin,gpio.OUTPUT) print("relay=0") end file.close(); end local DataDisposeTimerCnt = 0; local DataDisposeTimer = tmr.create() DataDisposeTimer:register(10, 1, function() RelayNowState = gpio.read(RelayPin) if RelayNowState ~= RelayNowStateCopy then RelayNowStateCopy = RelayNowState globalSendData = "switch;relay="..RelayNowState end if UsartReceiveDataCnt ~= 0 then DataDisposeTimerCnt=DataDisposeTimerCnt + 1; if DataDisposeTimerCnt>=10 then UsartReceiveDataCnt = 0; DataDisposeTimerCnt=0; globalSendData = UsartReceiveData; UsartReceiveData=""; end end if Mymqtt ~= nil and MqttConnectedFlage == true then if globalSendData ~= "nil" then Mymqtt:publish(PublishTopic,globalSendData, 0, 0, function(client) end) globalSendData = "nil" end end end) DataDisposeTimer:start() function MqttDisposeMethod(client, topic, data) uart.write(0,data) list = split(data, ‘;‘) if string.find(list[1],"switch") ~= nil then if list[2] ~= nil then if file.open(list[1]..".lua", "w+") then file.write(list[2]) file.close() end if list[2] == "relay=0" then gpio.write(RelayPin,0) gpio.mode(RelayPin,gpio.OUTPUT) elseif list[2] == "relay=1" then gpio.write(RelayPin,1) gpio.mode(RelayPin,gpio.OUTPUT) end globalSendData = data; end elseif string.find(list[1],"query") then if list[2] ~= nil then if list[2] == "switch" then RelayNowState = gpio.read(RelayPin) globalSendData = "switch;relay="..RelayNowState end end end end --[[ uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1) uart.on("data",0,function(data) UsartReceiveData = UsartReceiveData..data; UsartReceiveDataCnt = UsartReceiveDataCnt + 1; DataDisposeTimerCnt = 0; end, 0)]]
为了测试明显,咱修改个地方,用手机APP直接远程控制
这个灯
好了现在远程下载
可以用手机也可以直接用软件
更新完成后
现在用手机再控制试一试
现在用手机再试一试更新程序(需要更改个地方,因为是为了方便所有人,为了避免更新冲突)
根据自己的修改哈
好现在用手机去更新程序
更新完
可以自己再试一试切换,或者试一试清除所有文件
以后几节就要开始真正的学习啦!!!勤快点哈
原文地址:https://www.cnblogs.com/yangfengwu/p/9414119.html
时间: 2024-10-29 19:29:44