我的代码是:
package com.yxl.testserial.mini6410;
import android.R.integer;
import android.R.string;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
import com.friendlyarm.AndroidSDK.*;
import android.util.Log;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
public class datadisplay extends Activity {
public TextView secondtxt ;
public int totalbyte = 0;
private Button clearbtn = null;
private Button back2btn = null;
private Button pause = null;
private Button send = null;
private Button stopserial = null;
private TextView viewdata;
private int myserialfile = 0;
public static final String[] usbdev={"/dev/ttyUSB0"};
int stopbits = 1;
int databits = 8;
long baude = 115200;
public String str = null;
public byte[] buf = new byte[300] ;
Boolean canreadserialBoolean = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//display the second layout
setContentView(R.layout.viewdata);
clearbtn = (Button)findViewById(R.id.btnclear);
back2btn = (Button)findViewById(R.id.secondbtnback);
pause = (Button)findViewById(R.id.btnpause);
send = (Button)findViewById(R.id.btnsend);
stopserial = (Button)findViewById(R.id.stopserial);
viewdata = (TextView)findViewById(R.id.textviewdatadisplay);
clearbtn.setOnClickListener(listener);
back2btn.setOnClickListener(listener);
pause.setOnClickListener(listener);
send.setOnClickListener(listener);
stopserial.setOnClickListener(listener);
}
@Override
protected void onDestroy() {
if(canreadserialBoolean == true)
{
//close serial
HardwareControler.close(myserialfile); //关闭串口
Log.d("rubin","in onDestroy close the serial");
System.out.println("close the serial");
lac_handler.removeCallbacks(ReceivePostDataThread);
super.onDestroy();
}
}
Handler lac_handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
}
};
Runnable ReceivePostDataThread = new Runnable()
{
int err = 0;
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
err = HardwareControler.select(myserialfile, 0, 100);
if(err == 1)
{
//have data come
int len = HardwareControler.read(myserialfile, buf, 200);
String s = "";
// char[] ch = null;
// System.out.println("byte len:"+buf[0]+" "+buf[1]);
for(int i = 0;i<len ;i++)
{
//s += Integer.toHexString(buf&0xff);
int b = buf&(0xff);
//when the data is single one
if(b>=0 && b < 16 )
{
s= s +"0";
}
s += Integer.toHexString(b);
/*
if(s.length() == 1)
{
s="0"+s+" ";
System.out.print("xx");
}*/
s= s+" ";
}
//ch = s.toCharArray();
// s = new String(buf,0,len);
//viewdata.setText(s);
System.out.println("byte len:"+len+"string len :"+s.length()+"data:"+s);
// for(int j =0;j<ch.length;j++)
// System.out.print(ch[j]+" ");
// System.out.println();
}
else if (err == 0)
{
viewdata.setText("no data");
}
else
{
viewdata.setText("error");
}
try {
Thread.sleep(2);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
};
private OnClickListener listener = new OnClickListener()
{
@Override
public void onClick(View v)
{
Button btn = (Button) v;
switch (btn.getId()) {
case R.id.secondbtnback:
System.out.println("back in second activity\n");
Intent changeintent = new Intent();
changeintent.setClass(datadisplay.this, Testserial_1Activity.class);
startActivity(changeintent);
break;
case R.id.btnclear:
myserialfile = HardwareControler.openSerialPort(usbdev[0], baude, databits, stopbits);
if(myserialfile != -1)
{
viewdata.setText("串口打开成功");
System.out.println("serial open success");
canreadserialBoolean = true;
lac_handler.post(ReceivePostDataThread);
System.out.println("lol >"+buf.length);
}
else
{
System.out.println("串口打开失败");
Log.d("rubin", "open fail");
viewdata.setText("串口打开失败");
canreadserialBoolean = false;
}
System.out.println("btnclear"+myserialfile);
break;
//定义数据位
case R.id.btnpause:
System.out.println("btnpause\n");
break;
case R.id.btnsend:
System.out.println("btnsend\n");
break;
case R.id.stopserial:
if(canreadserialBoolean == true)
{
viewdata.setText("close serial");
System.out.println("stopserial\n");
HardwareControler.close(myserialfile); //关闭串口
}
else
{
viewdata.setText("serial does not open please open the serial");
}
break;
default:
break;
}
}
};
}