15-STM32ものは--- GPRS(LUA開発)に基づいて、リモートアップグレードSTM32プログラム、STM32イニシアチブのアップグレード版をWIFI(ESP8266)+ GPRS(Air202)システムのアップグレードを開発します

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接続を行って、その後、パススルー...

 

 

 

コードをコピー

コードをコピー

コードをコピー

「ソケット」が必要
モジュール(...、package.seeall)

- シリアル設定
ローカルglobalSendData1 = nilを
ローカルglobalSendData = nilを
ローカルUART_ID = 1 --uart1
ローカルuartReadData = "";
ローカルuartReadDataFlage =偽;

ローカルIP = nilを
ローカルポート= nilを

ローカルasyncClient
sys.taskInit(関数()
  真んが
      しばらくないsocket.isReady()を行うsys.wait(1000)終了
      
      もし、ポート〜= nilにし、IP〜= nilを
          asyncClient = socket.tcp()
          asyncClient場合:(IP、ポート)に接続後、
              成功したリンクの送信コマンド -  uart.write(1、 "{\" ConnectOK \: "\" datemcu \ "\" \アップデータの\ "\" 状態 "}")
              印刷( "{\" datemcu \:アップデータ\ "\" "\ "状態\":\ "ConnectOK \"}")。
              uart.write(1、 "{\" datemcu \ ":\" アップデータ\ "\ "状態\":\ "ConnectNO \"}")
          終わり
          ポート= nilを;
          IP = nilを;

          asyncClientながら:asyncSelect(60、「ピング」)はend--はこれを持っている必要があります、TCPは、バックグラウンドで実行する責任があります
          asyncClient:クローズ()
      終わり

      sys.wait(1000)
  終わり
終わり)


-  TCP、シリアル送信データを受信
sys.subscribe( "SOCKET_RECV" 機能(ID)
    その後、asyncClient.id == IDがあれば
        ローカルデータ= asyncClient:asyncRecv()
        uart.write(1、データ)
    終わり
終わり)


地元jsondata、その結果、errinfo。
- アイドルタイマ割り込み(シリアルデータを受信するアイドル)検出
ローカルTimerFunc4Cnt = 0。
ローカル関数TimerFunc4()
    uartReadDataFlageは、真==場合
        TimerFunc4Cnt = TimerFunc4Cnt + 1。
        その後、TimerFunc4Cnt> = 20の場合
            TimerFunc4Cnt = 0;
            uartReadDataFlage = falseは、
            globalSendData = uartReadData。
            uartReadData = "";
        終わり
    終わり

    globalSendData〜= nilの場合は、
        jsondata、その結果、errinfo = json.decode(globalSendData) - 判断是不是JSON
        その結果と入力した場合(jsondata)== "テーブル"  - 是JSON数据
            もしjsondata [ "datemcu"]〜= nilを、その後jsondata [ "datemcu"] == "アップデータ"
                その後、jsondata [ "CMD"]〜= nilのとjsondata [ "CMD"] == "ConnectTCP" であれば
                    jsondata [ "IP"]〜= nilのとjsondata [ "ポート"]〜= nilの場合、その後
                        IP = jsondata [ "IP"]
                        ポート= jsondata [ "ポート"]
                    終わり    
                終わり    
            終わり    
            asyncClient〜= nilの場合は、
                asyncClient:asyncSend(globalSendData) -  TCPの送信データ
            終わり
        終わり
        globalSendData = nilを;
    終わり
終わり
sys.timerLoopStart(TimerFunc4,10)



- 受信したシリアルデータを読みます
ローカルuartdata = ""
読んローカル関数()
    uartdata = ""
    真んが
        uartdata = uart.read(UART_ID、 "*のL"、0)
        そうでない場合はuartdataまたはstring.len(uartdata)== 0は、エンドを破ります
        uartReadData = uartReadData..uartdata。
        uartReadDataFlage =真
        TimerFunc4Cnt = 0;
    終わり
終わり


uart.on(UART_IDは、読んで、 "受信")
- 設定およびシリアルポートを開きます
uart.setup(UART_ID、115200,8、uart.PAR_NONE、uart.STOP_1)

コードをコピー

コードをコピー

コードをコピー

 

 

 

 

 

 

 

 

 

 

 

 

記事への後期の変更、記事のタイトルを見つけるために従っ

 

 

 

 

 

 

 

 

 

 

 

 

 SCM IAPプログラムをダウンロードしてください

 

 

 

 

 

 

 

 

 

 

 またはクラウド

 

 

 

 

 

 

 

 

 

 

 テスト

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

修正版の雲は、マイクロコントローラをリセット

 

 

 

 

 

 

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

おすすめ

転載: blog.csdn.net/qq_14941407/article/details/93321545
おすすめ