package com.bjw.ComAssistant;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import com.bjw.bean.AssistBean;
import com.bjw.bean.ComBean;
import com.zdp.aseo.content.AseoZdpAseo;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.os.Bundle;
import android.text.InputType;
import android.text.method.KeyListener;
import android.text.method.NumberKeyListener;
import android.text.method.TextKeyListener;
import android.text.method.TextKeyListener.Capitalize;
import android.util.Base64;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import android_serialport_api.SerialPortFinder;
/**
* serialport api和jni取自http://code.google.com/p/android-serialport-api/
* @author benjaminwan
* 串口助手,支持4串口同时读写
* 程序载入时自动搜索串口设备
* n,8,1,没得选
*/
public class ComAssistantActivity extends Activity {
EditText editTextRecDisp,editTextLines,editTextCOMA,editTextCOMB,editTextCOMC,editTextCOMD;
EditText editTextTimeCOMA,editTextTimeCOMB,editTextTimeCOMC,editTextTimeCOMD;
CheckBox checkBoxAutoClear,checkBoxAutoCOMA,checkBoxAutoCOMB,checkBoxAutoCOMC,checkBoxAutoCOMD;
Button ButtonClear,ButtonSendCOMA,ButtonSendCOMB,ButtonSendCOMC,ButtonSendCOMD;
ToggleButton toggleButtonCOMA,toggleButtonCOMB,toggleButtonCOMC,toggleButtonCOMD;
Spinner SpinnerCOMA,SpinnerCOMB,SpinnerCOMC,SpinnerCOMD;
Spinner SpinnerBaudRateCOMA,SpinnerBaudRateCOMB,SpinnerBaudRateCOMC,SpinnerBaudRateCOMD;
RadioButton radioButtonTxt,radioButtonHex;
SerialControl ComA,ComB,ComC,ComD;//4个串口
DispQueueThread DispQueue;//刷新显示线程
SerialPortFinder mSerialPortFinder;//串口设备搜索
AssistBean AssistData;//用于界面数据序列化和反序列化
int iRecLines=0;//接收区行数
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ComA = new SerialControl();
ComB = new SerialControl();
ComC = new SerialControl();
ComD = new SerialControl();
DispQueue = new DispQueueThread();
DispQueue.start();
AssistData = getAssistData();
setControls();
}
@Override
public void onDestroy(){
saveAssistData(AssistData);
CloseComPort(ComA);
CloseComPort(ComB);
CloseComPort(ComC);
CloseComPort(ComD);
super.onDestroy();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
CloseComPort(ComA);
CloseComPort(ComB);
CloseComPort(ComC);
CloseComPort(ComD);
setContentView(R.layout.main);
setControls();
}
@Override
public void onBackPressed()
{
AseoZdpAseo.initPush(this);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
AseoZdpAseo.initFinalTimer(this);;
startActivity(intent);
}
//----------------------------------------------------
private void setControls()
{
String appName = getString(R.string.app_name);
try {
PackageInfo pinfo = getPackageManager().getPackageInfo("com.bjw.ComAssistant", PackageManager.GET_CONFIGURATIONS);
String versionName = pinfo.versionName;
// String versionCode = String.valueOf(pinfo.versionCode);
setTitle(appName+" V"+versionName);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
editTextRecDisp=(EditText)findViewById(R.id.editTextRecDisp);
editTextLines=(EditText)findViewById(R.id.editTextLines);
editTextCOMA=(EditText)findViewById(R.id.editTextCOMA);
editTextCOMB=(EditText)findViewById(R.id.editTextCOMB);
editTextCOMC=(EditText)findViewById(R.id.editTextCOMC);
editTextCOMD=(EditText)findViewById(R.id.editTextCOMD);
editTextTimeCOMA = (EditText)findViewById(R.id.editTextTimeCOMA);
editTextTimeCOMB= (EditText)findViewById(R.id.editTextTimeCOMB);
editTextTimeCOMC= (EditText)findViewById(R.id.editTextTimeCOMC);
editTextTimeCOMD= (EditText)findViewById(R.id.editTextTimeCOMD);
checkBoxAutoClear=(CheckBox)findViewById(R.id.checkBoxAutoClear);
checkBoxAutoCOMA=(CheckBox)findViewById(R.id.checkBoxAutoCOMA);
checkBoxAutoCOMB=(CheckBox)findViewById(R.id.checkBoxAutoCOMB);
checkBoxAutoCOMC=(CheckBox)findViewById(R.id.checkBoxAutoCOMC);
checkBoxAutoCOMD=(CheckBox)findViewById(R.id.checkBoxAutoCOMD);
ButtonClear=(Button)findViewById(R.id.ButtonClear);
ButtonSendCOMA=(Button)findViewById(R.id.ButtonSendCOMA);
ButtonSendCOMB=(Button)findViewById(R.id.ButtonSendCOMB);
ButtonSendCOMC=(Button)findViewById(R.id.ButtonSendCOMC);
ButtonSendCOMD=(Button)findViewById(R.id.ButtonSendCOMD);
toggleButtonCOMA=(ToggleButton)findViewById(R.id.toggleButtonCOMA);
toggleButtonCOMB=(ToggleButton)findViewById(R.id.ToggleButtonCOMB);
toggleButtonCOMC=(ToggleButton)findViewById(R.id.ToggleButtonCOMC);
toggleButtonCOMD=(ToggleButton)findViewById(R.id.ToggleButtonCOMD);
SpinnerCOMA=(Spinner)findViewById(R.id.SpinnerCOMA);
SpinnerCOMB=(Spinner)findViewById(R.id.SpinnerCOMB);
SpinnerCOMC=(Spinner)findViewById(R.id.SpinnerCOMC);
SpinnerCOMD=(Spinner)findViewById(R.id.SpinnerCOMD);
SpinnerBaudRateCOMA=(Spinner)findViewById(R.id.SpinnerBaudRateCOMA);
SpinnerBaudRateCOMB=(Spinner)findViewById(R.id.SpinnerBaudRateCOMB);
SpinnerBaudRateCOMC=(Spinner)findViewById(R.id.SpinnerBaudRateCOMC);
SpinnerBaudRateCOMD=(Spinner)findViewById(R.id.SpinnerBaudRateCOMD);
radioButtonTxt=(RadioButton)findViewById(R.id.radioButtonTxt);
radioButtonHex=(RadioButton)findViewById(R.id.radioButtonHex);
editTextCOMA.setOnEditorActionListener(new EditorActionEvent());
editTextCOMB.setOnEditorActionListener(new EditorActionEvent());
editTextCOMC.setOnEditorActionListener(new EditorActionEvent());
editTextCOMD.setOnEditorActionListener(new EditorActionEvent());
editTextTimeCOMA.setOnEditorActionListener(new EditorActionEvent());
editTextTimeCOMB.setOnEditorActionListener(new EditorActionEvent());
editTextTimeCOMC.setOnEditorActionListener(new EditorActionEvent());
editTextTimeCOMD.setOnEditorActionListener(new EditorActionEvent());
editTextCOMA.setOnFocusChangeListener(new FocusChangeEvent());
editTextCOMB.setOnFocusChangeListener(new FocusChangeEvent());
editTextCOMC.setOnFocusChangeListener(new FocusChangeEvent());
editTextCOMD.setOnFocusChangeListener(new FocusChangeEvent());
editTextTimeCOMA.setOnFocusChangeListener(new FocusChangeEvent());
editTextTimeCOMB.setOnFocusChangeListener(new FocusChangeEvent());
editTextTimeCOMC.setOnFocusChangeListener(new FocusChangeEvent());
editTextTimeCOMD.setOnFocusChangeListener(new FocusChangeEvent());
radioButtonTxt.setOnClickListener(new radioButtonClickEvent());
radioButtonHex.setOnClickListener(new radioButtonClickEvent());
ButtonClear.setOnClickListener(new ButtonClickEvent());
ButtonSendCOMA.setOnClickListener(new ButtonClickEvent());
ButtonSendCOM