在实际使用过程中使用到串口 ,基于人性化、交互性考虑,直接获取到本地计算机的串口号提供给用户,比直接给出COM1-COMn这样的选择 靠谱的多,就有了 查找整理 获取当前计算机获取串口号的想法
通过读取注册表读取串口列表
"golang.org/x/sys/windows/registry"
注册表包
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)
}
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"
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(使用前将#替换为@)