golang 找到本机串口号的两种办法

在实际使用过程中使用到串口 ,基于人性化、交互性考虑,直接获取到本地计算机的串口号提供给用户,比直接给出COM1-COMn这样的选择 靠谱的多,就有了 查找整理 获取当前计算机获取串口号的想法

通过读取注册表读取串口列表

  • "golang.org/x/sys/windows/registry" 注册表包

//get_commlist 通过读取注册表读取串口列表
func getCommlist() []string {
	comlist := []string{}
	key, err := registry.OpenKey(registry.LOCAL_MACHINE, `HARDWARE\DEVICEMAP\SERIALCOMM`, registry.ALL_ACCESS)
	if err != nil {
		log.Fatal("报错:", err)
	}
	// 读取值名称
	kns, err := key.ReadValueNames(0)
	if err != nil {
		log.Fatal(err)
	}

	// fmt.Printf("%#v\n", kns)
	// 根据值名称获取值
	for _, item := range kns {
		v, _, err := key.GetStringValue(item)
		if err != nil {
			log.Fatal(err)

		}
		comlist = append(comlist, v)

	}

	defer key.Close()

	return comlist
}

两点注意事项

  • 需要管理员权限运行
  • HARDWARE\DEVICEMAP\SERIALCOMM 斜线 不是反斜线

通过三方的库

-"go.bug.st/serial"

//get_commlist 通过第三方库读取串口列表
func getCommlist2() {
	ports, err := serial.GetPortsList()
	if err != nil {
		log.Fatal(err)
	}
	if len(ports) == 0 {
		log.Fatal("没有找到串口")
	}
	fmt.Printf("%#v", ports)
	for _, port := range ports {
		fmt.Printf("找到串口: %v\n", port)
	}
}

方便 快捷 就是没找到人家是怎么实现的

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值