识别串口/USB设备python

2024-02-16

这个问题的解决方案可能非常简单,但我对动态与设备交互还很陌生。我正在做的是制作一个Python可执行代码,这样用户的计算机上就不必有Idle或任何类型的Python解释器,这意味着我不知道设备将插入哪个USB端口到。该程序需要能够打开与通过串行到 USB 转换器连接的设备的连接。如何确定哪个连接的设备是打开端口的正确设备?我正在使用 pySerial 与设备交互。任何帮助将不胜感激。


无论您如何配置设备,在某些时候您可能都必须询问用户端口在哪里,或者轮询所有串行设备以获得已知响应。 (但是投票也有缺陷,所以请继续阅读!)。与 USB 设备不同,当您连接普通的串行设备时,操作系统不会获知供应商/设备 ID。

首先,您需要找到串行端口。这是一个可能有帮助的问题:Python中枚举串口(包括虚拟端口)的跨平台方法是什么? https://stackoverflow.com/questions/11303850/what-is-the-cross-platform-method-of-enumerating-serial-ports-in-python-includi.

一旦获得了串行端口列表,您就可以询问用户是否知道要使用哪个端口。如果他们这样做了,问题就解决了!

如果没有,您可以使用您收集的一些数据来轮询所有串行设备。know将从您的设备产生一定的响应。但请记住,如果用户连接了其他串行设备,您的“hello”字节字符串实际上可能是其他设备的自毁序列!因此,您应该警告用户轮询可能会干扰其他设备,并始终在这样做之前提示他们。

如果不了解有关代码的更多信息(例如,您正在使用什么通信框架(如果有的话);您是在控制台中执行此操作还是使用 GUI 工具包等),则不可能说出编写此代码的最佳方法可能。在最简单的情况下,您可以循环遍历所有串行设备,发送问候语并检查响应。 (您也可以并行执行此操作:循环一次问候语,然后再次循环检查缓冲区中的内容。如果您想要比这更奇特的内容,请使用适当的库。)


边注: You might如果您有一个可以为其设置供应商/设备 ID 的内置转换器,则可以解决此问题,但任何现代操作系统仍会自动检测到该转换器并将其枚举为串行端口;您无法将其作为 USB 设备直接与其对话。可以找出哪个端口与哪个 ID 对应,但我从未尝试这样做。但如果您不是挑选转换器的人(例如,如果它是用户提供的电缆),则这种方法毫无用处。

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

识别串口/USB设备python 的相关文章

随机推荐

  • 将背景设置为空

    如果我在 xml 布局中使用以下行 android background null 安全吗 从性能的角度来看有效吗 或者 最好从以下位置设置布局或组件的背景 实际代码为空 android background null 绝对安全 如果你想根
  • 如何将 SourceGear DiffMerge 设置为 Visual Studio 的差异/合并工具?

    我使用 TFS 进行源代码控制 但我想使用 SourceGear DiffMerge 查看文件差异并进行合并 我找到了 工具 gt 选项 gt 源代码管理 gt Visual Studio Team Foundation Server gt
  • 如果应用程序未运行,为什么不显示平视通知

    我使用 fcm 实现了平视通知 当应用程序收到 fcm 通知时 如果我的应用程序正在运行 则平视通知会显示在屏幕上 那挺好的 但如果我的应用程序处于后台或被杀死 则不会显示平视通知 我怎么解决这个问题 也许我认为如果我的应用程序在收到 fc
  • 在 PHP 中获取恰好一周前的时间戳?

    我需要使用 PHP 计算 7 天前的时间戳 因此如果当前是 3 月 25 日晚上 7 30 它将返回 3 月 18 日晚上 7 30 的时间戳 我应该从当前时间戳中减去 604800 秒 还是有更好的方法 strtotime 1 week
  • 如何在鼠标悬停时显示隐藏的div?

    如何在鼠标悬停时显示一组隐藏的div 例如 div Div 1 Content div div Div 2 Content div div Div 3 Content div 所有 div 都需要在鼠标悬停事件上显示 如果 div 被隐藏
  • Python Pandas:使用 Aggregate 与 Apply 定义新列

    假设我有一个像这样的数据框 n 20 dim1 np random randint 1 3 size n dim2 np random randint 3 5 size n data1 np random randint 10 20 siz
  • 如何通过黄瓜空手道项目进行调试

    我继承了一个Java Maven Cucumber项目 我对黄瓜相当陌生 在其中一个文件夹中我有一堂这样的课程 import com intuit karate junit4 Karate import org junit runner R
  • 防止 grep 在输入不匹配时返回错误

    我想在 bash 脚本中编写一段代码来检查程序是否已经在运行 我有以下内容来搜索栏是否正在运行 foo ps ef grep bar grep v grep The grep v grep 部分是确保 ps 结果中不考虑 grep bar
  • 用于检查服务是否正在运行的Python代码?

    我正在使用 python2 7 检查服务是否正在运行 我已经制作了自己的服务并将其放在里面 etc init d 我有一个覆盆子 我正在使用它 现在要正常检查服务状态 我们可以这样做 service my service status 但是
  • 无法获取 SAMSUNG S4 本机浏览器历史记录

    我正在从设备本机浏览器访问浏览器历史记录 我使用以下代码 Cursor cur getContentResolver query Browser BOOKMARKS URI new String Browser BookmarkColumn
  • 带间隔 Gurobi 约束的图形着色

    我正在尝试使用 networkx 和 gurobi 修复图形着色问题的一些限制 对于每个 i V 我们定义以下一组区间 每个区间 l u Ii 表示与顶点 i 相关的边集的一对可能的最小颜色 l 和最大颜色 u 此外 对于每个 k K 我们
  • 使用django反向传递查询参数?

    我有一个应该像这样访问的网址 people raj updates people raj updates tag food 但是 Django 反向 URL 解析器似乎没有任何规定可做tag food 即将其检测为额外参数并放入查询字符串中
  • 如果我使用 DOT 和 doxygen,如何更改由 graphviz 创建的图表在 HTML 中的位置?

    我在 doxygen 中使用 dot 和 Graphviz 以 HTML 格式创建代码的用户手册 doxygen 代码看起来有点像这样 br addtogroup MainProgram dot digraph G Main label M
  • C++ 编译器什么时候开始考虑字符串文字字符转义中超过两个十六进制数字?

    我在 C 中有一个 生成的 文字字符串 其中可能包含需要使用转义的字符 x符号 例如 char foo xABEcho 然而 g 版本 4 1 2 如果重要的话 会抛出错误 test cpp 1 error hex escape seque
  • Ecto 与某种情况的关联

    假设我有两个模型 Post and Comment评论模型可以是两种类型中的一种 normal and fancy由列定义type in the comments table 现在我想在我的上添加 2 个关联Post模型 其中一个指的是花哨
  • 如何切换到单击按钮后打开的新浏览器窗口?

    我遇到的情况是 当单击按钮时会打开带有搜索结果的新浏览器窗口 有什么方法可以连接并聚焦到新打开的浏览器窗口吗 并使用它 然后返回到原始 第一个 窗口 您可以按如下方式在窗口之间切换 Store the current window hand
  • 更新后自动缩小 Javascript/CSS 文件吗?

    我知道缩小 JS 和 CSS 文件的方法 但是有没有办法在生产系统中自动缩小这些文件 例如 我修改了原始JS文件中的一些内容并更新了生产环境 但是 在使用 JS 文件时 应该使用 JS 文件的自动缩小版本 如果源文件发生更改 最好更新当前的
  • Solr(太阳黑子),最大结果超过 30?

    我通过 Sunspot for Rails 使用 Solr 但我不知道如何返回超过 30 个结果 假设我有这个搜索块 posts Post search do keywords something end 我如何确定太阳黑子应该返回all比
  • Git 别名为新分支的名称添加前缀

    有没有办法编写一个别名 将当前日期添加到新分支的名称中 例如 git branch today new branch name 应该创建新分支22 09 2015 new branch name name 创建一个 git 别名并将其添加到
  • 识别串口/USB设备python

    这个问题的解决方案可能非常简单 但我对动态与设备交互还很陌生 我正在做的是制作一个Python可执行代码 这样用户的计算机上就不必有Idle或任何类型的Python解释器 这意味着我不知道设备将插入哪个USB端口到 该程序需要能够打开与通过