zoukankan      html  css  js  c++  java
  • APK:SerialPortFinder,显示串口列表

    百分之50 https://blog.csdn.net/bfz_50/article/details/96483242

    MainActivity.java

    package com.gatsby.serialport;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import android_serialport_api.SerialPort;
    import android_serialport_api.SerialPortFinder;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        SerialPortFinder mSerialPortFinder;
    
        final String[] devices = new SerialPortFinder().getAllDevicesPath();
        final List<String> data = new ArrayList<>();
    
    
        protected SerialPort mSerialPort;
        protected InputStream mInputStream;
        protected OutputStream mOutputStream;
    
        private String prot = "/dev/ttyS3";
        private int baudrate = 9600;
        //数据
        private static long i = 0;
    
        private Toast mToast;
    
        private Thread receiveThread;
        private Thread sendThread;
    
    
        @Override
        protected void onCreate(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 void initLayout() {
            findViewById(R.id.btn_open).setOnClickListener(MainActivity.this);
            findViewById(R.id.btn_send).setOnClickListener(MainActivity.this);
            findViewById(R.id.btn_close).setOnClickListener(MainActivity.this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.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;
                case R.id.btn_send:
                    showTip("btn_send");
                    // 发送
                    sendThread = new Thread() {
                        @Override
                        public void run() {
                            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;
                case R.id.btn_close:
                    showTip("btn_close");
    
                    closeSerialPort();
    
                    break;
                default:
                    break;
            }
        }
    
        private void receiveThread() {
            // 接收
            receiveThread = new Thread() {
                @Override
                public void run() {
                    while (true) {
                        int size;
                        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 void closeSerialPort() {
    
            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(final String str) {
            mToast.setText(str);
            mToast.show();
        }
    
        public void getSerialPortPression() {
            if (devices.length > 0) {
                for (String device : devices) {
    
                    File file = new File(device);
                    String path = file.getAbsolutePath();
    
                    StringBuilder permission = new StringBuilder();
                    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 = new BaseAdapter() {
            @Override
            public int getCount() {
                return devices.length;
            }
    
            @Override
            public Object getItem(int position) {
                return devices[position];
            }
    
            @Override
            public long getItemId(int position) {
                return position;
            }
    
            @Override
            public View getView(int position, 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));
    
                return convertView;
            }
        };
    }

     文档:20200417_SerialPortTestDemo1.rar

  • 相关阅读:
    MYSQL select查询练习题
    10.17数据库的增删改查(简单查询)
    10.17 如何修改数据库中的表名、增删列、修改列类型
    9.25 DOM作业
    PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive(); array_map();
    Echarts设置点击事件
    表单验证输入用户名和密码时验证大于6个字符,
    PHP获取今天,本年度,本周,上周,本月,上月,上季度,本季度,等各时间方法汇总
    javaee全套视频,java实战全套视频,感谢黑马程序员,感谢传智播客,java视频,java教程,java,百度网盘java教程,java百度网盘下载,javaee,java在线教程,javaee视频,java免费教程,java面试题,2018最新java教程视频,2019java最近教程视频
    百度网盘无限速下载,PanDownload,百度网盘vip 百度网盘下载文件无限速,百度网盘破解版,百度网盘绿色破解版
  • 原文地址:https://www.cnblogs.com/crushgirl/p/13254413.html
Copyright © 2011-2022 走看看