8266串口

UartReceCnt = 0        
UartReceTempCnt = 0   
UartReceData = ""      



TimerMs:register(1, tmr.ALARM_AUTO, function()
--TimerMs:register(10,1,function()

    if UartReceCnt ~= 0 then 
        if UartReceTempCnt == UartReceCnt then 
            UartReceCnt = 0
            UartReceTempCnt = 0  
            --[[if UartReceData == "open" then 
                print("open")
            elseif UartReceData == "close" then
                gpio.write(4,1)  
                print("close")
            end--]]
            myMQTT:publish(topic1,UartReceData, 0, 0, function(client) end)
             --uart.write(0,UartReceData) 
             UartReceData = "" 
        else
            UartReceTempCnt = UartReceCnt  
            
        end
     end

end)
--TimerMs:start()



uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1)
uart.on("data",0,function(data)
           UartReceData = UartReceData..data  
            UartReceCnt = UartReceCnt + 1     
end,0)

提醒

  按照上面的写法以后,便不能下载程序,所有的指令也不能运行

  

  这样可以防止别人点击  Reload 加载出来里面的程序

  用户需要重新刷空固件

  然后再刷LUA开发的固件

  然后再进行开发

调试编程的时候为避免这种情况发生

建议的方式:

  处理串口的数据另外用一个文件处理

  

  init 延时加载那个文件

  

  

复制代码
local T = tmr.create()
T:register(3000, 0, function() 
    if  file.open("uart.lua", "r") then 
        file.close(); 
        dofile("uart.lua")
    end 
end)
T:start();
复制代码

这样,每次复位模块的时候,都有3S的时间去操作清除文件

 然后再进行下载调试

参考:https://www.cnblogs.com/yangfengwu/p/12038932.html  

原文地址:https://www.cnblogs.com/fw-qql/p/14530958.html