欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Socket 線程連接openwrt與arduino單片機串口雙向通信的實例解析

 更新時間:2016年11月28日 17:04:41   作者:小波Linux  
這篇文章主要介紹了Android Socket 線程連接openwrt與arduino單片機串口雙向通信的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:

package zcd.netanything;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Fragment;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Toast;
public class MyCar extends Fragment implements OnClickListener{
private static String wifiurl;
private static String wificom;
private static String wificamera;
private Thread mThreadClient = null;
private Socket mSocketClient = null;
//視頻線程
private Thread mThreadvideo = null;
private String recvMessageClient ;
//MySurfaceView r;
private boolean isConnect=false; 
//指令發(fā)出 數(shù)據(jù)緩存
static PrintWriter mPrintWriterClient = null;
static BufferedReader mBufferedReaderClient = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.mycar,container, false);
view.findViewById(R.id.button1).setOnClickListener(this);
view.findViewById(R.id.button2).setOnClickListener(this);
view.findViewById(R.id.button3).setOnClickListener(this);
view.findViewById(R.id.button4).setOnClickListener(this);
view.findViewById(R.id.button5).setOnClickListener(this);
return view;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//內部類 廣播接收
public static class myReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
wifiurl = intent.getStringExtra("wifiurl");
wificom = intent.getStringExtra("wificom");
wificamera = intent.getStringExtra("wificamera");
Toast.makeText(context, "廣播已經接收", Toast.LENGTH_SHORT).show();
}
}
//來源 http://www.cnblogs.com/xiaobo-Linux/ 趙存檔 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成功連接";//消息換行
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); 
//Toast.makeText(getActivity(),recvMessageClient,Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
recvMessageClient = "接收異常:" + e.getMessage() + "\n";//消息換行
Message msg = new Message();
msg.what = 0;
mHandler.sendMessage(msg);
}
}
}
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(); 
}catch(Exception e)
{
//Toast.makeText(getActivity(),"無法獲取數(shù)據(jù),檢查網(wǎng)絡是否連接!",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 = "網(wǎng)絡端口成功";//消息換行
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.flush();//清空
Toast.makeText(getActivity(),"前進",Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
mPrintWriterClient.print("b");
mPrintWriterClient.flush();
Toast.makeText(getActivity(),"后退",Toast.LENGTH_SHORT).show();
break;
case R.id.button3:
mPrintWriterClient.print("l");
mPrintWriterClient.flush();
Toast.makeText(getActivity(),"向左",Toast.LENGTH_SHORT).show();
break;
case R.id.button4:
mPrintWriterClient.print("r");
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(),"嘗試連接網(wǎng)絡",500).show();
}
else {
onDestroy();
isConnect=false;
// Btn_openwifi.setBackgroundResource(R.drawable.disconnect);
}
//開啟mThreadvideo線程
//mThreadvideo = new Thread(mRunvideo);
//mThreadvideo.start();//開啟視頻監(jiān)聽
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 = "網(wǎng)絡端口成功";//消息換行
Message msg = new Message();
msg.what = 0;
mHandler.sendMessage(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
mThreadClient.interrupt();
}
*/
// break;
}
} 
}

以上所述是小編給大家介紹的Android Socket 線程連接openwrt與arduino單片機串口雙向通信,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • android自定義view實現(xiàn)推箱子小游戲

    android自定義view實現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細介紹了android自定義view實現(xiàn)推箱子小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Android仿百度圖片查看功能

    Android仿百度圖片查看功能

    這篇文章主要為大家詳細介紹了Android仿百度圖片查看功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android多線程AsyncTask詳解

    Android多線程AsyncTask詳解

    這篇文章主要為大家詳細介紹了Android多線程AsyncTask的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android獲取手機聯(lián)系人的方法

    Android獲取手機聯(lián)系人的方法

    這篇文章主要介紹了Android 獲取系統(tǒng)聯(lián)系人信息的實例的相關資料,希望通過本文大家能實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • Flutter?App開發(fā)實現(xiàn)循環(huán)語句的方式實例

    Flutter?App開發(fā)實現(xiàn)循環(huán)語句的方式實例

    這篇文章主要為大家介紹了Flutter?App開發(fā)實現(xiàn)循環(huán)語句的方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • React Native學習之Android的返回鍵BackAndroid詳解

    React Native學習之Android的返回鍵BackAndroid詳解

    這篇文章主要給大家介紹了關于React Native學習之Android的返回鍵BackAndroid的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用React Native具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。
    2017-10-10
  • AndroidStudio:手勢識別

    AndroidStudio:手勢識別

    這篇文章主要介紹了AndroidStudio手勢識別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Android中微信搶紅包助手的實現(xiàn)詳解

    Android中微信搶紅包助手的實現(xiàn)詳解

    本篇文章主要介紹了Android中微信搶紅包助手的實現(xiàn)詳解,通過利用AccessibilityService輔助服務,監(jiān)測屏幕內容,如監(jiān)聽狀態(tài)欄的信息,屏幕跳轉等,以此來實現(xiàn)自動拆紅包的功能,有興趣的可以了解一下。
    2017-02-02
  • android編程之xml文件讀取和寫入方法

    android編程之xml文件讀取和寫入方法

    這篇文章主要介紹了android編程之xml文件讀取和寫入方法,涉及Android針對XML文件的相關操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Android編程實現(xiàn)Home鍵的屏蔽,捕獲與修改方法

    Android編程實現(xiàn)Home鍵的屏蔽,捕獲與修改方法

    這篇文章主要介紹了Android編程實現(xiàn)Home鍵的屏蔽,捕獲與修改方法,實例分析了使用onAttachedToWindow捕獲Home鍵的相關技巧,需要的朋友可以參考下
    2016-06-06

最新評論