http://www.javashuo.com/article/p-wulroxkd-bc.htmlhtml
視頻教程程序員
https://www.bilibili.com/video/av55149096服務器
這一版的單片機程序方案要比上一版的單片機程序方案要穩定的多.......不少東西蠻複雜的其實也蠻簡單,蠻簡單的東西有時候也蠻複雜數據結構
我之因此出好幾版實現更新的程序是由於我想的是讓你們真正的學會,和別人的教程相比,我更注重本身的教程是否是能讓你們真正的明白!真正的應用起來ide
我不但願你只會用,請不要本身騙本身,由於若是隻是這樣,之後會害了你,....記住,若是每次都是似懂非懂的去學習,你感受如今很輕鬆,之後你毫不會輕鬆.函數
爛程序員關心的是代碼。好程序員關心的是數據結構和它們之間的關係.學習
我身邊多的是例子:每學一個東西都力求深刻的學的人和每次都只是處於會用的基礎上的人,一開始你看不出來差異,可是一旦工做2-3年,不管薪酬,對問題思考的角度,解決問題的能力,仍是發展空間100%不同了.....一個天上一個地下.....你本身的態度絕對會影響你的將來生活.都是一天24小時,請尊重本身和別人的時間spa
因爲如今問問題的太多太多.....通常的問題我再也不回答,由於你本身百度就能夠解決,你要是懶,我比你更懶....3d
我只是一個爲你撥開重重迷霧的人,路仍是須要本身走.code
真正的人才都是自學出來的,不要認爲自學了就是人才了.不少人都想一口吃個胖子....
我感受我本身算是我的才,但不是真正的人才.自信中永遠會帶着謙虛,由於見識到了太多的...天外天,人外人.
這一節的程序方案是我感受最好的了,程序修改了好多天,由於我老是力求能把最好的帶給你們.....
爲了讓你們好學習,這節的程序徹底是單片機本身請求升級,沒有其它東西作控制.
請先自行補充基礎內容
http://www.javashuo.com/article/p-dlcvocfk-gc.html
https://www.cnblogs.com/yangfengwu/category/1383497.html 1-3節
WIFI模塊收到鏈接服務器指令就去鏈接TCP,而後返回鏈接狀態,,鏈接上之後就透傳,...就這樣
我只是用LUA寫的,你們AT指令也能實現鏈接TCP把,我就是爲下一節的AT指令版本實現升級作鋪墊
看一下IAP程序的流程圖
單片機每次復位主動詢問服務器版本,若是版本不一致就下載 控制WIFI鏈接TCP服務器 "{\"datemcu\":\"updata\",\"cmd\":\"ConnectTCP\",\"ip\":\"47.92.31.46\",\"port\":\"80\"}" {"datemcu":"updata","cmd":"ConnectTCP","ip":"47.92.31.46","port":"80"} WIFI模塊返回 "{\"datemcu\":\"updata\",\"state\":\"ConnectOK\"}" "{\"datemcu\":\"updata\",\"state\":\"ConnectNO\"}" WIFI模塊連接上之後進入透傳模式 控制WIFI詢問程序版本 "GET /hardware/STM32RISC/updatainfo.txt HTTP/1.1\r\nHost: 47.92.31.46\r\n\r\n" GET /hardware/STM32RISC/updatainfo.txt HTTP/1.1\r\nHost: 47.92.31.46\r\n\r\n 單片機解析數據,獲取程序版本 若是程序版本不相同 控制WIFI鏈接TCP服務器(由於http默認訪問一次就斷開) "{\"cmd\":\"Connect\",\"ip\":\"47.92.31.46\",\"port\":\"80\"}" 控制WIFI下載程序(準備好接受用戶程序) "GET /hardware/STM32RISC/bin1.bin HTTP/1.1\r\nHost: 47.92.31.46\r\n\r\n" 或者 "GET /hardware/STM32RISC/bin2.bin HTTP/1.1\r\nHost: 47.92.31.46\r\n\r\n" 更新完成,切換,重啓
用戶程序:若是用戶程序有錯誤,那麼就執行不到下面的函數,直接會復位重啓了
把全部可能出現的狀況考慮一下,而後看看是否是均可以解決
下載Wi-Fi程序
連接路由器什麼的參考基礎篇自行解決,配網方式仍是那樣
下載單片機程序
更改了一次教程,該程序位置
服務器上:
再復位一下
去雲端修改下版本
其實鏈接HTTP獲取數據的時候會發現,HTTP分段過來的數據之間的間隔時間有長有短
爲了儘可能別讓更新的時候出現亂子