纯 Java 代码获取串口列表

本文将介绍怎样通过纯 Java 代码获取本机的串口列表。

下面通过纯 Java 代码实现获取本机串口列表功能,通过查询注册表信息来实现。代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * 串口工具类
 *
 * @author hxstrive.com
 */
public class ComPortTools {

    /**
     * 通过注册表的方式去获取串口列表
     *
     * @return 串口名称 List
     */
    public static List<String> getComPorts() {
        List<String> ports = new ArrayList<String>();

        BufferedReader br = null;
        try {
            // 命令,执行改命令的示例:
            // C:\Users\Administrator> reg query HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
            //
            // HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
            //     \Device\VSerial_1    REG_SZ    COM2
            //     \Device\VSerial_0    REG_SZ    COM1
            String command = "reg query HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";

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

            String line;
            int index = 0;
            while ((line = br.readLine()) != null) {
                if ("".equals(line)) {
                    continue;
                }

                if (index != 0) {
                    String[] strs = line.split("\\s+");
                    String comPort = strs[strs.length - 1];
                    ports.add(comPort);
                }

                index++;
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(null != br) {
                try {
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return ports;
    }

}

测试

先看看本机的串口信息,如下图:

纯 Java 代码获取串口列表

测试代码如下:

import org.junit.Test;
import java.util.List;

/**
 * ComPortTools 测试
 *
 * @author hxstrive.com
 */
public class ComPortToolsTest {

    @Test
    public void getComPorts() {
        List<String> ports = ComPortTools.getComPorts();
        for(String port : ports) {
            System.out.println(port);
        }
        // 结果:
        // COM2
        // COM1
    }

}
学习必须与实干相结合。 —— 泰戈尔
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号