天天看點

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

https://yq.aliyun.com/users/article?spm=a2c4e.11155435.0.0.34723312MRbahT

先把源碼和資料連結放到這裡

連結:

https://pan.baidu.com/s/10MxI8-Q33-M_R2WEHqEi1A

 密碼:j1sz

先說一下那天的bug

所有的任務在啟動時都是建立

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

否則就會有問題

但是每次建立可能會産生有好幾個同樣的任務

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

列如上面的連接配接任務

咱們用一個全局的變量去記錄咱的連接配接任務

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
銷毀的時候
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

try {
       mthreadConnectService.interrupt();
    } catch (Exception e) {
       
    }      

 發送資料的任務也是用一個全局變亮記錄

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

出現問題需要銷毀的時候

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

因為有好幾個地方要添加這幾句話,本來想.....算了,後期再說

現在做顯示部分,先給自己說一下,,,,下一篇一定要用Handle,如果還是這樣寫..都感覺無人子弟....唉......寫的有點害怕了,,,,應該先介紹

通常怎麼操作控件的....這樣操作控件懂行的人不知道會不會....唉

現在界面再拖一個TextView用來顯示溫濕度資料

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

 再看一下規定的

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

 然後其實就是在接收資料裡面

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
/**
     * 接收資料的任務
     * @author yang
     *
     */
    class ThreadReadData extends Thread
    {
        public void run()
        {
            while (threadReadDataFlage)
            {
                try 
                {
                    ReadBufferLengh = inputStream.read(ReadBuffer);//伺服器斷開會傳回-1
                    if (ReadBufferLengh == -1) 
                    {
                        threadSendDataFlage = false;//關掉發送任務,預防産生多的任務
                        threadReadDataFlage = false;//關掉接收任務,預防産生多的任務
                        try {mthreadReadData.interrupt();} catch (Exception e) {}
                        try {mthreadSendData.interrupt();} catch (Exception e) {}
                        SendDataCnt = 0;//清零發送的個數
                        ConnectFlage = true;
                        
                        
                        buttonConnect.post(new Runnable() {
                            @Override
                            public void run() {
                                buttonConnect.setText("連接配接");
                                Toast.makeText(getApplicationContext(), "與伺服器斷開連接配接", 500).show();
                            }
                        });
                    }
                    
                    try //防止資料有其它錯誤
                    {
                        if ((ReadBuffer[0]&0xff) == 0xaa && (ReadBuffer[1]&0xff) == 0x55) 
                        {
                            if ((ReadBuffer[2]&0xff) == 0x01) {
                                textViewShowData.post(new Runnable() {//稍微寫一個靠譜點的操作UI控件
                                    public void run() {
                                        textViewShowData.setText("溫度:"+(ReadBuffer[3]&0xff)+"濕度"+(ReadBuffer[4]&0xff));
                                    }
                                });
                            }
                        }
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                    
                    
                } 
                catch (Exception e) 
                {
                    // TODO Auto-generated catch block
                    Log.e("error", ReadBufferLengh+"");
                    e.printStackTrace();
                    runOnUiThread(new Runnable() {//修改界面的UI最好用Handle,這裡力求簡單,下幾節再用
                        public void run() {
                            buttonConnect.setText("連接配接");
                            Toast.makeText(getApplicationContext(), "與伺服器斷開連接配接", 500).show();
                        }
                    });
                    ConnectFlage = true;
                    threadSendDataFlage = false;//關掉發送任務,預防産生多的任務
                    threadReadDataFlage = false;//關掉接收任務,預防産生多的任務
                    try {mthreadReadData.interrupt();} catch (Exception e1) {}
                    try {mthreadSendData.interrupt();} catch (Exception e2) {}
                    SendDataCnt = 0;//清零發送的個數
                }
            }
        }
    }      

其實就一點有用的,其餘的大多數是重複的程式,下一篇優化一下....

現在咱先用調試助手測試

APP可在百度手機助手,安卓市場,91助手,下載下傳安裝(搜尋"小五物聯")

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

我是用的兩個手機哈,因為我做的那個調試助手,一關閉就會全都關閉了,,後期再優化下哈,,,,

親們可以用電腦的調試助手,資料裡面有

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

好現在咱們用闆子試一下

不對不對...咱是做的先發給闆子指令然後闆子收到指令再回複.....忘了,現在做每隔1S發送一次0xaa,0x55,0x01

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

這樣闆子收到資訊就回咱

實作定時器呢有多種實作方法,說一種最簡單的

/**
     * 每間隔1S發送一次采集資料的指令
     */
    private CountDownTimer editDeleteTimer = new CountDownTimer(1000,100) {
        @Override
        public void onTick(long millisUntilFinished) {
            
        }
        
        @Override
        public void onFinish() 
        {
            SendBuffer[0] = (byte) 0xaa;
            SendBuffer[1] = 0x55;
            SendBuffer[2] = 0x01;
            SendDataCnt = 3;//控制發送資料的個數
            editDeleteTimer.start();
        }
    };      
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

啟動和停止呢

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

 現在試一下

闆子上電正常運作哈...

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

剛才闆子放在了我電腦的散熱口附近,是以才會30度哈,我沒有在非洲和赤道哈....,,電腦兩天沒有關機了,,有點小熱.....

現在控制一下燈

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)
11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

 下一篇一定要優化程式,不能這樣子了,,,,,,額嗯,做TCP服務的時候再優化也行,重新寫一切按照正常寫

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

單片機程式還是上一篇的...

對了

11-51單片機ESP8266學習-AT指令(單片機采集溫濕度資料通過8266發送給AndroidTCP用戶端顯示)

資料&0xff

參考連結

https://blog.csdn.net/wwzuizz/article/details/77649358

親們自己百度哈

繼續閱讀