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

2023-05-16

在实际使用过程中使用到串口 ,基于人性化、交互性考虑,直接获取到本地计算机的串口号提供给用户,比直接给出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)
	}
}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang 找到本机串口号的两种办法 的相关文章

随机推荐