1、SerialChat .java文件
```java
package com.xuhaoran.factorymode;
import android.app.Activity;
import android.content.Context;
import android.hardware.SerialManager;
import android.hardware.SerialPort;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.Toast;
import java.nio.ByteBuffer;
import java.io.IOException;
import java.io.ByteArrayOutputStream;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;
import android.widget.CompoundButton;
import android.text.method.ScrollingMovementMethod;
public class SerialChat extends Activity implements View.OnClickListener{
private static final String TAG = "SerialChat";
private TextView mReceiverEditText;
private TextView mReceiverTextView;
private TextView mSendTextView;
private EditText mSendEditText,mRepeatTime;
private Button mSendButton,mClearButton;
private ByteBuffer mInputBuffer;
private ByteBuffer mOutputBuffer,mOutputTestBuffer;
private SerialManager mSerialManager;
private SerialPort mSerialPort;
private boolean mPermissionRequestPending,mIsHex,mHaveSelect;
private RadioGroup mRadioGroup;
private Spinner mPathSpinner,mBtlSpinner;
private Switch mSwitch;
private Thread mThread;
private int mPath = 0;
private int mBtl = 921600;
private int sendNum = 0;
private int receiverNum = 0;
private static final int MESSAGE_LOG = 1;
private static String hexString="0123456789ABCDEF";
Handler hander = new Handler();
private Button mSuccess;
private Button mFailure;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSerialManager = (SerialManager)getSystemService(Context.SERIAL_SERVICE);
setContentView(R.layout.serial_chat);
mReceiverEditText = (TextView)findViewById(R.id.message_receiver);
mReceiverTextView = (TextView)findViewById(R.id.receiver_number);
mSendTextView = (TextView)findViewById(R.id.send_number);
mReceiverEditText.setMovementMethod(ScrollingMovementMethod.getInstance());
mSendEditText = (EditText)findViewById(R.id.send_message_edit);
mSendEditText.setText("3031");
//mSendEditText.setText("6000000a6a");
mRepeatTime = (EditText)findViewById(R.id.repeat_time);
mRepeatTime.setText("500");
mRadioGroup = (RadioGroup)findViewById(R.id.radioGroup_id);
mPathSpinner = (Spinner) findViewById(R.id.path);
mBtlSpinner = (Spinner) findViewById(R.id.btl);
mSwitch = (Switch) findViewById(R.id.auto_switch);
mSwitch.setChecked(false);
mSwitch.setOnCheckedChangeListener(mAutoListener);
mPathSpinner.setOnItemSelectedListener(mPathSelectedListener);
mBtlSpinner.setOnItemSelectedListener(mBtlSelectedListener);
mRadioGroup.check(0);
mRadioGroup.setOnCheckedChangeListener(mListener);
mSendButton = (Button)findViewById(R.id.send);
mClearButton = (Button)findViewById(R.id.clear);
mSuccess = (Button) findViewById(R.id.success);
mFailure = (Button) findViewById(R.id.failure);
JudgementListener judgement = new JudgementListener(this);
mSuccess.setOnClickListener(judgement);
mFailure.setOnClickListener(judgement);
mSendButton.setOnClickListener(this);
mClearButton.setOnClickListener(this);
mClearButton.setFocusable(true);
mClearButton.setFocusableInTouchMode(true);
mClearButton.requestFocus();
mClearButton.requestFocusFromTouch();
mOutputTestBuffer = ByteBuffer.allocate(4);
if (false) {
mInputBuffer = ByteBuffer.allocateDirect(1024);
mOutputBuffer = ByteBuffer.allocateDirect(1024);
} else {
mInputBuffer = ByteBuffer