android+apk+访问串口,APK:SerialPortFinder,显示串口列表
packagecom.gatsby.serialport;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ListView;importan
packagecom.gatsby.serialport;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.Toast;importandroidx.appcompat.app.AppCompatActivity;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.ArrayList;importjava.util.List;importandroid_serialport_api.SerialPort;importandroid_serialport_api.SerialPortFinder;public class MainActivity extends AppCompatActivity implementsView.OnClickListener {
SerialPortFinder mSerialPortFinder;final String[] devices = newSerialPortFinder().getAllDevicesPath();final List data = new ArrayList<>();protectedSerialPort mSerialPort;protectedInputStream mInputStream;protectedOutputStream mOutputStream;private String prot = "/dev/ttyS3";private int baudrate = 9600;//数据
private static long i = 0;privateToast mToast;privateThread receiveThread;privateThread sendThread;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView=findViewById(R.id.id_list);
listView.setAdapter(bA);
getSerialPortPression();
initLayout();
mToast= Toast.makeText(this, "", Toast.LENGTH_SHORT);
}private voidinitLayout() {
findViewById(R.id.btn_open).setOnClickListener(MainActivity.this);
findViewById(R.id.btn_send).setOnClickListener(MainActivity.this);
findViewById(R.id.btn_close).setOnClickListener(MainActivity.this);
}
@Overridepublic voidonClick(View v) {switch(v.getId()) {caseR.id.btn_open:
showTip("btn_open");//打开
try{
mSerialPort= new SerialPort(new File(prot), baudrate,8,1,'N');
mInputStream=mSerialPort.getInputStream();
mOutputStream=mSerialPort.getOutputStream();
receiveThread();
}catch(SecurityException e) {
e.printStackTrace();
}catch(IOException e) {//打开失败
Log.e("gatsby", "open serialport default");
e.printStackTrace();
}break;caseR.id.btn_send:
showTip("btn_send");//发送
sendThread = newThread() {
@Overridepublic voidrun() {while (true) {try{
i++;
mOutputStream.write((String.valueOf(i)).getBytes());//发送成功
Log.i("gatsby", "send serialport sucess!" +i);
Thread.sleep(50);
}catch(Exception e) {//发送失败
Log.i("gatsby", "send serialport default!");
e.printStackTrace();
}
}
}
};
sendThread.start();break;caseR.id.btn_close:
showTip("btn_close");
closeSerialPort();break;default:break;
}
}private voidreceiveThread() {//接收
receiveThread = newThread() {
@Overridepublic voidrun() {while (true) {intsize;try{byte[] buffer = new byte[512];if (mInputStream == null)return;
size=mInputStream.read(buffer);if (size > 0) {
String recinfo= new String(buffer, 0,
size);
Log.i("gatsby", "recevier serialport info :" +recinfo);//sb = recinfo;//handler.sendEmptyMessage(1);
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
};//111
receiveThread.start();
}/*** 关闭串口*/
public voidcloseSerialPort() {if (mSerialPort != null) {
mSerialPort.close();
}if (mInputStream != null) {try{
mInputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}if (mOutputStream != null) {try{
mOutputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}private void showTip(finalString str) {
mToast.setText(str);
mToast.show();
}public voidgetSerialPortPression() {if (devices.length > 0) {for(String device : devices) {
File file= newFile(device);
String path=file.getAbsolutePath();
StringBuilder permission= newStringBuilder();
permission.append("[");
permission.append(file.canRead()? " 可读" : "不可读");
permission.append(file.canWrite()? " 可写 " : " 不可写 ");
permission.append(file.canExecute()? "可执行" : "不可执行");
permission.append("]");
String msg= "(" + path + ")" + " 权限:" +permission;
data.add(msg);
}
}
}
BaseAdapter bA= newBaseAdapter() {
@Overridepublic intgetCount() {returndevices.length;
}
@Overridepublic Object getItem(intposition) {returndevices[position];
}
@Overridepublic long getItemId(intposition) {returnposition;
}
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {if (convertView == null)
convertView= getLayoutInflater().inflate(R.layout.item_layout, null);
TextView textView=convertView.findViewById(R.id.id_item_text);
textView.setText(data.get(position));returnconvertView;
}
};
}
更多推荐


所有评论(0)