• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

15-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇---远程升级STM32程序, ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

https://www.cnblogs.com/yangfengwu/p/10891908.html

 

****:

https://www.bilibili.com/video/av55663292

 

请先自行补充基础内容

 

https://www.cnblogs.com/yangfengwu/p/6921832.html

 

https://www.cnblogs.com/yangfengwu/category/1383497.html    1-3节

 

这一节的GPRS程序和  https://www.cnblogs.com/yangfengwu/p/10875886.html   这节的WIFI做相同的功能,整体功能也一样,单片机复位自动升级

 

 

 现在测试

 

1,下载GPRS程序 ,主要的GPRS程序就是收到连接TCP指令就去连接TCP,然后透传...

 

 

 

require "socket"
module(..., package.seeall)

--串口配置
local globalSendData1 = nil
local globalSendData = nil
local UART_ID = 1 --uart1
local uartReadData = "";
local uartReadDataFlage = false;

local ip=nil
local port=nil

local asyncClient
sys.taskInit(function()
  while true do
      while not socket.isReady() do sys.wait(1000) end
      
      if  port~=nil and ip~=nil  then
          asyncClient = socket.tcp()
          if  asyncClient:connect(ip, port)  then
              uart.write(1,"{\"datemcu\":\"updata\",\"state\":\"ConnectOK\"}")--发送链接成功指令
              print("{\"datemcu\":\"updata\",\"state\":\"ConnectOK\"}");
          else
              uart.write(1,"{\"datemcu\":\"updata\",\"state\":\"ConnectNO\"}")
          end
          port = nil;
          ip=nil;

          while asyncClient:asyncSelect(60, "ping") do end--必须有这个,负责TCP的后台运行
          asyncClient:close()
      end

      sys.wait(1000)
  end
end)


-- TCP接受到数据,发送串口
sys.subscribe("SOCKET_RECV", function(id)
    if  asyncClient.id == id then
        local data = asyncClient:asyncRecv()
        uart.write(1,data)
    end
end)


local jsondata,result,errinfo;
--定时器空闲中断检测(串口空闲接收数据)
local TimerFunc4Cnt = 0;
local function TimerFunc4()
    if  uartReadDataFlage == true then
        TimerFunc4Cnt = TimerFunc4Cnt+1;
        if  TimerFunc4Cnt >= 20 then
            TimerFunc4Cnt=0;
            uartReadDataFlage = false;
            globalSendData = uartReadData;
            uartReadData = "";
        end
    end

    if  globalSendData ~= nil  then
        jsondata,result,errinfo = json.decode(globalSendData)--判断是不是json
        if  result and type(jsondata)=="table" then -- 是json数据
            if  jsondata["datemcu"] ~= nil and jsondata["datemcu"] =="updata"  then
                if  jsondata["cmd"] ~= nil and jsondata["cmd"] =="ConnectTCP"  then
                    if  jsondata["ip"] ~= nil and jsondata["port"] ~=nil  then
                        ip = jsondata["ip"]
                        port = jsondata["port"]
                    end    
                end    
            end    
        else
            if  asyncClient ~=nil  then
                asyncClient:asyncSend(globalSendData)--TCP发送数据
            end
        end
        globalSendData = nil;
    end
end
sys.timerLoopStart(TimerFunc4,10)



--读取串口接收到的数据
local uartdata = ""
local function read()
    uartdata = ""
    while true do
        uartdata = uart.read(UART_ID,"*l",0)
        if not uartdata or string.len(uartdata) == 0 then break end
        uartReadData = uartReadData..uartdata;
        uartReadDataFlage = true
        TimerFunc4Cnt = 0;
    end
end


uart.on(UART_ID,"receive",read)
--配置并且打开串口
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)

 

 

 

 

 

 

 

 

 

 

 

 

后期文章改动,根据文章标题查找

 

 

 

 

 

 

 

 

 

 

 

 

 下载单片机IAP程序

 

 

 

 

 

 

 

 

 

 

 云端的还是这个

 

 

 

 

 

 

 

 

 

 

 测试

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

修改云端版本,复位下单片机

 

 

 

 

 

 

https://www.cnblogs.com/yangfengwu/p/10891914.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
iOS 使用lua发布时间:2022-07-22
下一篇:
Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap