Java 置顶 2018年11月15日 16:27:00 662

之前用RXTX 获取串口列表的时候,如果串口被使用,就没法获取到了。

所以采用另外一种方式,利用注册表来获取所有串口列表

package com.zh.client.serial.utils;


import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 获取com端口,windows专用
 */
public class ComPortScanUtil {

    public static List<String> getComPorts() {
        List<String> ports = new ArrayList<>();

        try {

            String command = "reg query HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";

            Process process = Runtime.getRuntime().exec(command);
            InputStream in = process.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(in));


            String line;

            int index = 0;
            while ((line = br.readLine()) != null) {
                if (line == null || "".equals(line)) {
                    continue;
                }
                if (index != 0) {
                    String[] strs = line.replaceAll(" +", ",").split(",");
                    String comPort = strs[strs.length - 1];
                    ports.add(comPort);
                }
                index++;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ports;
    }

    public static void main(String[] args) {
        System.out.println(getComPorts());
    }
}


评论
登录以后才可以发布评论哦! 点击登录 发布评论
评论列表 1人参与,2条评论
test
2019-01-16 09:24:19
动态
启用HTTP2.0
启用全站redis缓存
增加QQ登录
增加Github登录
增加代码集市登录