废话不多说了,直接给大家贴代码了,具体代码如下所示:
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;
//指令发出 数据缓存
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(),"无法获取数据,检查网络是否连接!",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.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(),"尝试连接网络",500).show();
}
else {
onDestroy();
isConnect=false;
// Btn_openwifi.setBackgroundResource(R.drawable.disconnect);
}
//开启mThreadvideo线程
//mThreadvideo = new Thread(mRunvideo);
//mThreadvideo.start();//开启视频监听
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;
}
}
}
以上所述是小编给大家介绍的Android Socket 线程连接openwrt与arduino单片机串口双向通信,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
大家好,我有以下问题。我有一个扫描仪,我正在用命令和接收一些行。目前,我尝试到目前为止与超级终端,这是完美的工作。但是现在我的程序中需要这些代码行,所以我设置了Java Comm API和RXTX(只是因为我不能让它与Comm API一起工作)。 我已经在论坛上读了很多,但我不能把它发挥作用。 有人能帮帮我吗?非常感谢你的努力
我正在尝试使用arduino通过串行通信从泼妇软件获取传入数据。并将数据移动到其他12个arduino,如果我将泼妇的通道号保留为43,但我需要控制480个通道,它就可以工作。所以第一个arduino控制43个通道,下一个是44-87,依此类推。 这是我的主代码:'ulusetup(){Serial.begin(9600); }}//输出
本文向大家介绍Android单片机与蓝牙模块通信实例代码,包括了Android单片机与蓝牙模块通信实例代码的使用技巧和注意事项,需要的朋友参考一下 啦啦毕业了,毕业前要写毕业设计,需要写一个简单的蓝牙APP进行交互,通过参考网上资料,问题顺利搞定,下面小编把具体实现思路分享给大家,供大家参考。 1、Android蓝牙编程 蓝牙3.0及以下版本编程需要使用UUID,UUID是通用唯一识别码(Un
本文向大家介绍java 多线程-线程通信实例讲解,包括了java 多线程-线程通信实例讲解的使用技巧和注意事项,需要的朋友参考一下 线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 通过共享对象通信 忙等待 wait(),notify()和 notifyAll() 丢失的信号 假唤醒 多线程等待相同信号 不要对常量字符串或全局对象调用 wait() 通过共
本文向大家介绍java 串口通信详细及简单实例,包括了java 串口通信详细及简单实例的使用技巧和注意事项,需要的朋友参考一下 java 实现串口通信 最近做了一个与硬件相关的项目,刚开始听说用java和硬件打交道,着实下了一大跳。java也可以操作硬件? 后来接触到是用java通过串口通信控制硬件感觉使用起来还不错,也很方便。 特拿出来和大家一起分享一下。 准备工作: 首先到SUN官网下载一个z
我想从 GUI 线程设置一个处理程序线程。然后一段时间后,当在GUI上单击一个按钮时,它会运行callHello(),然后向驻留在非GUI线程上的HelloLogger对象发送一条消息,该对象异步记录“Hello World”。我已经尝试了许多事情,有些无限期地阻止,有些从未收到消息,等等。下面的代码或多或少与我得到的一样接近,请有人可以修改它以使其工作吗? 找到的最佳范例: < li >手柄线程