安卓Socket串連實現串連實現發送接收資料,openwrt wifi轉串口串連單片機實現控制,安卓openwrt

來源:互聯網
上載者:User

安卓Socket串連實現串連實現發送接收資料,openwrt wifi轉串口串連單片機實現控制,安卓openwrt
安卓Socket串連實現串連實現發送接收資料,openwrt wifi轉串口串連單片機實現控制

socket 串連採用流的方式進行發送接收資料,採用thread線程的方式。

什麼是線程? 

詳細代碼介紹:

博文來源:http://blog.csdn.net/zhaocundang 如果你對代碼有些疑問,請在下面留言來探討,或者加我的QQ463431476一起學習進步!

  //線程mRunnable啟動        private Runnable    mRunnable   = new Runnable()             {                public void run()                {                      try                     {                                       //串連伺服器                        mSocketClient = new Socket(wifiurl,Integer.parseInt(wificom));                         //取得輸入、輸出資料流                        mBufferedReaderClient = new BufferedReader(new InputStreamReader(mSocketClient.getInputStream()));                        mPrintWriterClient = new PrintWriter(mSocketClient.getOutputStream(), true);                        recvMessageClient = "wifi成功串連";//訊息換行                    // Toast.makeText(getActivity(),"wifi串連成功",Toast.LENGTH_SHORT).show();                        Message msg = new Message();                        msg.what = 1;                        mHandler.sendMessage(msg);                                   }                    catch (Exception e)                     {                        recvMessageClient = "串連錯誤!";//訊息換行                        Message msg = new Message();                        msg.what = 1;                        mHandler.sendMessage(msg);                        return;                    }                         setRecvMessage();                }            };       public void setRecvMessage(){                char[] buffer = new char[256];            int count = 0;            while (true)            {                try                {                     if((count = mBufferedReaderClient.read(buffer))>0)                    {                                               recvMessageClient = getInfoBuff(buffer, count);
              //將接收的資料放入數組 Thread.sleep(500); Message msg = new Message(); msg.what = 1; mHandler.sendMessage(msg); } } catch (Exception e) { recvMessageClient = "接收異常:" + e.getMessage() + "\n";//訊息換行 Message msg = new Message(); msg.what = 0; mHandler.sendMessage(msg); } } } //handler用於線程中更新介面資料 Handler mHandler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 0) { Toast.makeText(getActivity(),recvMessageClient,Toast.LENGTH_SHORT).show();//重新整理訊息機制 } else if(msg.what == 1) { try { //// String result = recvMessageClient; // Toast.makeText(getActivity(),result,Toast.LENGTH_SHORT).show(); //接收訊息的 String [] results = recvMessageClient.split("\\.");; // Toast.makeText(getActivity(),results[3],Toast.LENGTH_SHORT).show(); //接收訊息的 /* Intent intent=new Intent(); intent.putExtra("temp",results[0]); intent.putExtra("humi",results[2]); intent.setAction("zcd.netanything.temp"); getActivity().sendBroadcast(intent); */ }catch(Exception e) { // Toast.makeText(getActivity(),"無法擷取資料,檢查網路是否串連!",Toast.LENGTH_SHORT).show();//重新整理訊息機制 } } } }; //接收處理 private String getInfoBuff(char[] buff, int count) { char[] temp = new char[count]; for(int i=0; i<count; i++) { temp[i] = buff[i]; } return new String(temp); } /*public void onDestroy() { super.onDestroy(); if (isConnect) { isConnect = false; try { if(mSocketClient!=null) { mSocketClient.close(); mSocketClient = null; //mThreadvideo.destroy(); mPrintWriterClient.close(); mPrintWriterClient = null; recvMessageClient = "網路連接埠成功";//訊息換行 Message msg = new Message(); msg.what = 0; mHandler.sendMessage(msg); } } catch (IOException e) { e.printStackTrace(); } mThreadClient.interrupt(); } } */

 

按鍵觸發,開啟線程:

  public void onClick(View v) {        // TODO Auto-generated method stub        switch(v.getId()){        case R.id.button1:            mPrintWriterClient.print("f");            //mPrintWriterClient.print("t");            mPrintWriterClient.flush();//清空         Toast.makeText(getActivity(),"前進",Toast.LENGTH_SHORT).show();         break;        case R.id.button2:             mPrintWriterClient.print("b");            // mPrintWriterClient.print("t");             mPrintWriterClient.flush();             Toast.makeText(getActivity(),"後退",Toast.LENGTH_SHORT).show();            break;        case R.id.button3:            mPrintWriterClient.print("l");        //  mPrintWriterClient.print("t");            mPrintWriterClient.flush();            Toast.makeText(getActivity(),"向左",Toast.LENGTH_SHORT).show();            break;        case R.id.button4:            mPrintWriterClient.print("r");        //  mPrintWriterClient.print("t");            mPrintWriterClient.flush();              Toast.makeText(getActivity(),"向右",Toast.LENGTH_SHORT).show();            break;        case R.id.button5:             if(!isConnect)          {            //開啟mThreadClient線程            mThreadClient = new Thread(mRunnable);            mThreadClient.start();            Toast.makeText(getActivity(),"嘗試串連網路",500).show();          }          else {              onDestroy();              isConnect=false;             }            break;        //case R.id.button6:            //關閉wifi        /*  if (isConnect)             {                               isConnect = false;                try {                    if(mSocketClient!=null)                    {                        mSocketClient.close();                        mSocketClient = null;                        //mThreadvideo.destroy();                        mPrintWriterClient.close();                        mPrintWriterClient = null;                        recvMessageClient = "網路連接埠成功";//訊息換行                        Message msg = new Message();                        msg.what = 0;                        mHandler.sendMessage(msg);                    }                } catch (IOException e) {                    e.printStackTrace();                }                mThreadClient.interrupt();            }             */            //   break;        }    }  

 

項目示範:

APP控制小車視頻示範

APP物聯絡統視頻示範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.