安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制
来源:互联网 发布:公务用车易软件下载 编辑:程序博客网 时间:2024/04/30 14:57
安卓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物联系统视频演示
0 0
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制
- 实现自动WiFi连接
- WIFI连接实现
- 实现无线wifi连接
- 用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
- 用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
- 用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
- 用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
- AS3 实现socket连接
- socket 实现http连接
- java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
- Android代码实现WiFi连接
- select函数实现无阻塞的连接、接收、输入发送
- java实现代理服务器,接收客户端连接,发送到对应服务器
- 编写安卓程序搜索周围的wifi并实现正在连接的wifi的强度
- android socket wifi 连接PC实现简单的PPT控制器
- 51单片机连接ESP8266串口WiFi模块
- STM32单片机ESP8266发送数据到WiFi接收端代码实现
- 补C++第二次作业
- java String类型与Date日期类型互相转换
- AAA如何插入几十万条数据 PL/SQL 调试存储过程简单实例
- Couldn't get connection because we are at maximum connection count (10/10) a
- 3分钟搞定杀手级的coredump问题
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制
- SVG在低版本ImageView中的兼容
- 补C++第三次作业
- 算法复习3--减治法
- WinForm之项目内图片资源的添加及使用
- python3 标准库 urllib
- 配置Apache虚拟目录
- 补C++第四次作业
- PAT-B 1049. 数列的片段和