Python通过注册表获取串口列表

2023-11-10

工作中需要使用CameraLink接口自带的串口与设备进行通信,DALSA采集卡软件中可以将CameraLink接口里的串口映射到一个COM口,但是在使用第三方串口库(nodejs的serialport、python的serial)提供的获取串口列表接口,都无法枚举到这个映射的COM口,切Windows的设备管理器也无法识别到该COM口。本文记录一种以访问注册表的方式成功获取到该COM口的方法

Nodejs serialport获取串口列表

serialport.list()方法会返回一个串口列表数组,遍历该数组,元素的path就是串口名称(COMx)。程序中可以通过创建一个定时器或者线程来定时轮询该列表

import serialport from 'serialport'

setInterval(() => {
    serialport.list().then(
        ports => {
	        if (ports.length > 0) {
			    /* do something */
                ports.forEach((item, index, arr) => {
                    console.log('name:' + item.path)
                })
			}
		}
	)
}, 500)

Python serial获取串口列表

serial.tools.list_ports()方法可以获取到串口列表数组,遍历数组,每个元素的name属性就是串口名称(COMx)

import serial
import serial.tools.list_ports

plist = list(serial.tools.list_ports.comports())
ports = [p.name for p in plist]
print(ports)

Python通过注册表获取串口列表

以上两种方式都无法获取不在Windows设备管理器中的COM口。Python中可以使用win32api和win32con来枚举注册表中的硬件信息,从而获取比较全的COM口列表,这种方式可以枚举到采集卡映射的COM口。以下是函数示例

import win32api
import win32con

def get_serial_ports():
    ports = []
    key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,
        "HARDWARE\DEVICEMAP\SERIALCOMM", 0, win32con.KEY_READ)
    try:
        i = 0
        while True:
            name, value, type1 = win32api.RegEnumValue(key, i)
            print("name:{} value:{}".format(name, value))
            i += 1
            ports.append(value)
    except:
        print('except')
    win32api.RegCloseKey(key)
    return ports

需注意以下几点

  • 访问串口列表的注册表路径是固定的,即 HKEY_LOCAL_MACHINE + "HARDWARE\DEVICEMAP\SERIALCOMM"
  • 通过RegOpenKey()打开键值,时候完毕后需要通过RegCloseKey()关闭键值
  • 通过RegEnumValue()来枚举可迭代的键值,枚举返回name、value和type,其中的value是串口名

以上其实是提供了访问PC外设资源的一种方式,不管是使用Python、JavaScript、C++等语言,在Windows环境中都可以以访问注册表的方式来实现访问外设资源的功能

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

Python通过注册表获取串口列表 的相关文章

随机推荐

  • CTF_ctfshow_web7_sql注入之过滤空格

    打开靶机 打开每一个列表 发现有一个id 所以为get传参 ok 找一下注入点 2 union select 1 2 3 这里发现过滤了空格 所以直接用 代替空格进行绕过 发现回显点为2 3 下面开始查库吧 2 union select 1
  • Zotero使用指南06:Markdown笔记

    转载Zotero使用指南06 Markdown笔记 这篇推文主要介绍如何通过插件实现在Zotero用markdown做笔记 首先下载Markdown Here源码包 这里已为大家准备好 需要墙 https github com piyixi
  • python读写txt文件

    当我们做深度学习项目时实验数据规模非常庞大 而xls格式 最多6万多行 xlsx格式 和csv 最多100多万行 格式等都有写入上限 而txt格式下没有写入限制 因此我们可以利用txt格式读写大规模的实验数据 具体代码如下 import n
  • dz论坛开启html,DZ论坛解决https开启后部分出现http的网址问题导致https不能显示方法...

    首先 申请并且配置好服务器ssl证书 快云IDC https kuaiyunidc cn都有免费的 同时都有教程 配置完毕后需要配置以下几处 1 后台 全局 站点URL 2 后台 站长 ucenter设置 3 ucenter 应用 编辑 4
  • 大数据入门成长指南

    1 Java编程技术 Java编程技术是大数据学习的基础 Java是一种强类型语言 拥有极高的跨平台能力 可以编写桌面应用程序 Web应用程序 分布式系统和嵌入式系统应用程序等 是大数据工程师最喜欢的编程工具 因此 想学好大数据 掌握Jav
  • PCL 耳切三角剖分算法

    目录 一 算法原理 1 原理概述 2 主要函数 二 代码实现 三 结果展示 一 算法原理 1 原理概述 简单多边形的耳朵 是指由连续顶点 V 0 V 0 V
  • Net Core API跨域的处理 vs2017

    Startup ConfigureServices public void ConfigureServices IServiceCollection services services AddCors options gt options
  • 利用html模板发送邮件

    扣扣分享交流群 1125844267 一 背景 刚刚在测试别的项目组的项目时 突然发现人家的邮件内容怎么那么好看呢 再看看自己的 就几行字发过去了 不要说客户能不能满意 首先自己就感觉不好看 所以自己也搞一个试试 二 展示 完成后的邮件内容
  • python里的override(重写)

    本文翻译自Let s override 什么是override override字面理解是无效 消除的意思 在Python里两个同名的方法但执行不同程序 其中一个方法使得另外一个方法无效的 这就叫override 重写 通常情况下 父类中的
  • Unity Vuforio 导出安卓apk后摄像头识别不出物体

    可以看一下是不是场景导错了
  • Linux下查看进程、线程

    ps ef f 用树形显示进程和线程 在Linux下面好像因为没有真正的线程 是用进程模拟的 有一个是辅助线程 所以真正程序开的线程应该只有一个 ps ef f grep httpd root apache dhj ps ef f grep
  • 【IDEA】超级舒服的IDEA界面

    设置目录栏字体 设置Editor字体
  • BigDecimal的String类型

    java本身对浮点型的计算会丢失精度 这个一定要注意 必须要用BigDecimal的String类型才能解决精度的问题 BigDecimal一共有四个构造方法 我们在计算商品价格的时候 一定要用BigDecimal的String构造器才好
  • Nginx 四层代理配置模板

    worker processes 4 worker rlimit nofile 40000 events worker connections 8192 http upstream rancher server IP NODE 1 80 s
  • 阿里云服务器架构X86计算、ARM、GPU/FPGA、裸金属和超级计算集群

    阿里云服务器架构有什么区别 X86计算 ARM计算 GPU FPGA ASIC 弹性裸金属服务器 超级计算集群有什么区别 阿里云服务器网分享云服务器ECS架构详细说明 目录 阿里云服务器ECS架构说明 X86计算 ARM计算 GPU FPG
  • 文举论金:黄金原油全面走势分析策略指导。

    市场没有绝对 涨跌没有定势 所以 对市场行情的涨跌平衡判断就是你的制胜法宝 欲望 有句意大利谚语 让金钱成为我们忠心耿耿的仆人 否则 它就会成为一个专横跋扈的主人 空头 多头都能赚钱 唯有贪心不能赚 是你掌控欲望还是欲望掌控你 古人云 不积
  • win无法启动资源修复服务器,Win10修复:Windows Defender无法启动两步解决

    有些IT之家用户在升级安装Win10后 发现内置杀软Windows Defender无法正常启动 IT之家发现这类用户基本上都是从Win7升级而来 而且之前可能用过MSE 虽然MSE在正常情况下升级后会被清除 但也有清理不干净的情况 这可能
  • deepspeed训练模型报错:磁盘空间不够

    解决方法 修改huggingface缓存路径 让数据存到其它分区上 不和目录 cache 在同一分区即可 export TRANSFORMERS CACHE data0 xxx huggingface export HF HOME data
  • 我这里有一款情侣之间用来记录生活的app Android端和web端的

    我这里有一款情侣之间用来记录生活的app app下载地址 复制链接到网页下载即可 web网页端地址 当今社会 情侣之间的交流方式越来越多样化 而一款专门为情侣设计的数据共享应用程序也应运而生 这款应用程序可以帮助情侣们更好地分享彼此的生活
  • Python通过注册表获取串口列表

    工作中需要使用CameraLink接口自带的串口与设备进行通信 DALSA采集卡软件中可以将CameraLink接口里的串口映射到一个COM口 但是在使用第三方串口库 nodejs的serialport python的serial 提供的获