uart/res/layout/activity_main.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000">
<TextView
android:id="@+id/uart_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android uart demo"
android:textSize="30sp"
android:textColor="#ffffffff"
android:layout_centerHorizontal="false"
android:layout_marginLeft="280dp"
/>
<ScrollView
android:id="@+id/uart_scrollview"
android:layout_width="600dp"
android:layout_height="300dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="280dp"
android:layout_below="@+id/uart_textview"
android:background="#ffffffff">
<TextView
android:id="@+id/uart_view"
android:layout_width="280dp"
android:layout_height="150dp"
android:textColor="#ff000000"
android:textSize="20sp" />
</ScrollView>
<!--send 编辑区域 -->
<EditText
android:id="@+id/uart_edit"
android:layout_width="500dp"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="280dp"
android:layout_below="@+id/uart_scrollview"
android:background="#FFFFFF"
/>
<!--send 边框 -->
<Button
android:id="@+id/uart_button4"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/uart_edit"
android:layout_below="@+id/uart_scrollview"
android:text="SEND" />
<!--波特率设置按钮 -->
<Spinner
android:id="@+id/uart_mode"
android:layout_width="180dp"
android:layout_height="45dp"
android:layout_below="@+id/uart_textview"
android:layout_marginLeft="70dp"
android:background="#ffffff"
android:layout_marginTop="20dp"/>
<!--打开串口按钮 -->
<Button
android:id="@+id/uart_button0"
android:layout_width="180dp"
android:layout_height="45dp"
android:layout_marginLeft="70dp"
android:layout_below="@+id/uart_mode"
android:text="openUart"
android:background="#ffffff"
android:layout_marginTop="40dp" />
<!--clean按钮 -->
<Button
android:id="@+id/uart_button2"
android:layout_width="180dp"
android:layout_height="45dp"
android:layout_marginLeft="70dp"
android:layout_below="@+id/uart_button0"
android:text="clean"
android:background="#ffffff"
android:layout_marginTop="40dp" />
<!--exit按钮 -->
<Button
android:id="@+id/uart_button3"
android:layout_width="180dp"
android:layout_height="45dp"
android:layout_marginLeft="70dp"
android:layout_below="@+id/uart_button2"
android:text="exit"
android:background="#ffffff"
android:layout_marginTop="40dp" />
</RelativeLayout>
uart/src/com/android/uart/MainActivity.java内容如下:
package com.android.uart;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.util.Log;
public class MainActivity extends Activity {
//定义变量
TextView view1,view2,view;
Spinner spinner1;
String receiveMsg;
String Msg,ReStr;
EditText editmsg;
Button myButton0,myButton2,myButton3,myButton4;
private boolean sign1;
public int fd,k=0;
private static final String TAG = "Serialxxx->";
//定义下拉字符串数组
private static final String[] countriesStr =
{ "B1200", "B2400", "B4800", "B9600","B19200","B38400","B57600","B115200","B230400","B921600"};
private static final int[] baudrate=
{ 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 921600};
private Spinner mySpinner;
//定义字符串适配器
private ArrayAdapter<String> adapter;
//打开串口,前提是设置了串口波特率
private Button.OnClickListener myButton0_listener=new Button.OnClickListener()
{
//打开函数 uart3
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.e(TAG, "--open devices ");
fd=Uartjni.openUart("/dev/ttyS7");
if(fd>0)
{
setTitle("open device sucess!"+String.valueOf(fd));
Log.e(TAG, "--set devices baudrate ="+ baudrate[k]);
Uartjni.setUart(baudrate[k]);
sign1=true;
}
else
{
setTitle("open device false!"+fd);
sign1=false;
}
view1.setText("open ttyS7 ");
}
};
//Clean
private Button.OnClickListener myButton2_listener=new Button.OnClickListener()
{
public void onClick(View v) {
view.setText(null);
}
};
//exit
private Button.OnClickListener myButton3_listener=new Button.OnClickListener()
{
public void onClick(View v) {
// TODO Auto-generated method stub
timer.cancel();
Uartjni.closeUart();
finish();
System.exit(0);
}
};
//send
private Button.OnClickListener myButton4_listener=new Button.OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
Msg=editmsg.getText().toString();
Uartjni.sendMsgUart(Msg);
}
};
//定义时间线程,通过调用本地方法不断接受数据
Timer timer = new Timer();
//新建一个定时器任务task
TimerTask task = new TimerTask()
{
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (sign1){
ReStr=Uartjni.receiveMsgUart();
if(ReStr!=null)
{
Log.e(TAG, "-receiveMsguart = "+ ReStr);
view.append(ReStr);
view.append("\n");
ReStr=null;
}
}
}
});
}
};
//重构onDestroy方法,关闭串口和释放资源
@Override
public void onDestroy()
{
sign1=false;
timer.cancel();
Uartjni.closeUart();
finish();
}
//实现程序第一次启动时调用的方法onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//现实布局
setContentView(R.layout.activity_main);
//时间线程调度
timer.schedule(task, 8000, 8000);
//获取资源ID,实例化变量,设置编辑框宽度
mySpinner=(Spinner)findViewById(R.id.uart_mode);
view1=(TextView)findViewById(R.id.uart_textview);
view=(TextView)findViewById(R.id.uart_view);
editmsg=(EditText)findViewById(R.id.uart_edit);
editmsg.setWidth(200);
myButton0=(Button)findViewById(R.id.uart_button0);
myButton2=(Button)findViewById(R.id.uart_button2);
myButton3=(Button)findViewById(R.id.uart_button3);
myButton4=(Button)findViewById(R.id.uart_button4);
//为组件设置监听事件
myButton0.setOnClickListener(myButton0_listener);
myButton2.setOnClickListener(myButton2_listener);
myButton3.setOnClickListener(myButton3_listener);
myButton4.setOnClickListener(myButton4_listener);
//实例化字符串适配器
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, countriesStr);
//mySpinner绑定适配器
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(adapter);
//mySpinner的OnItemSelectedListener事件监听,调用本地方法设置串口波特率
mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
if(fd>0)
{
Log.e(TAG, "setUart baudrate= "+ arg2);
//Uartjni.setUart(arg2);
Uartjni.setUart(baudrate[arg2]);
}
else
{
k=arg2;
Log.e(TAG, "select setUart baudrate= "+ arg2);
arg0.setVisibility(View.VISIBLE);
}
}
public void onNothingSelected(AdapterView<?> arg0)
{
// TODO Auto-generated method stub
}
});
}
}