pySerial - 有没有办法同时选择多个端口?

2023-11-25

我正在开发需要与许多串行端口通信的应用程序。我还没有找到一种方法来做到这一点而不使用每个端口的线程。有没有办法用单线程来做到这一点?比如同时在多个端口上选择或轮询?我正在使用 pyserial 2.6


我假设您在类 Unix 平台上使用 PySerial...

Since PySerial 对象实现fileno()要获取底层文件描述符,您可以将它们直接传递到select()这将允许您同时处理多个 PySerial 对象。

另一种选择是打开Serial对象处于非阻塞(读取)模式(通过传递timeout=0)并处理您的读取和写入可能返回的事实errno.EWOULDBLOCK错误。这可能是最简单的方法。

第三种选择是使用扭曲的串行端口如果你不介意以扭曲的方式做事的话。

Update

对于 Windows,除了使用线程之外,几乎唯一的选择就是使用in_waiting财产。定期轮询所有串行端口读取in_waiting从他们。如果有东西在等待,那么您可以读取该内容,并且只能读取那么多字节而不会阻塞。

不幸的是,pyserial 没有“输出缓冲区中有多少可用空间”方法,这意味着当您写入串行端口时,您有阻塞的风险。如果您正在实现典型的串行端口协议,则几千字节的默认缓冲区大小将确保这通常不是问题。

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

pySerial - 有没有办法同时选择多个端口? 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 如何消除 angular-cli 站点中的渲染阻塞?

    跑步后ng build prod我可以进入我的index html在新创建的 dist 文件夹中添加文件async属性到捆绑的脚本标签以防止它们被阻塞 这有助于提高网站速度 但偶尔会导致网站崩溃 中有一个选项吗angular cli jso
  • 小部件中的 jQuery

    我想在 JS 库上使用 jQuery 该库可以添加到随机网站 这些网站可能已经使用也可能尚未使用 jQuery 我实际上有3个问题 我可能会从我自己的 js 脚本 而不是从文档头中的脚本标记 动态加载 jQuery jquery会这样工作吗
  • 为什么 main() 在 C 中不能声明为静态?

    为什么必须将 main 声明为具有外部链接 为什么它不应该是静态的 外部链接是什么意思 因为您将启动文件链接到您的程序 其中 通常 包含调用 main c 文件的汇编代码 如果 main 是静态的 则该代码将无法调用 main extern
  • 通过 php 更新 Facebook 状态

    我想开发一个机器人 它将使用 php 更新 Facebook 帐户的状态 请在这方面指导我 Porchop 是正确的 您可能需要 Facebook Connect API 要更新 Facebook 上的用户状态 您应该查看状态集API 调用
  • 与 Cisco 路由器的持久 ssh 会话

    我在此站点和多个其他位置进行了搜索 但无法解决在一个命令后连接和维护 ssh 会话的问题 下面是我当前的代码 opt local bin python import os import pexpect import paramiko imp
  • 如何从相同的输入类型上传文件夹和文件?

    我使用的表单可以同时上传文件或完整文件夹 我正在使用以下代码
  • 标准 C++11 中的 IEEE 754 总阶

    根据IEEE 浮点维基页面 在 IEEE 754 上 有一个总订单在双精度浮点上 即C 11具有 IEEE 754 浮点数的实现 例如 Linux x86 64 上的 gcc 4 8 当然 operator lt on double通常提供
  • 如何从 svn diff 中排除某些文件?

    我在用着svn diff c 789显示我们软件版本 789 中所做的更改 但它显示了很多我不关心的文件 特别是测试文件 如何从差异中排除某些文件 例如与模式匹配的所有文件 Test java 我在 Windows 上使用 Cygwin 如
  • 微信Api无法设置应用图标

    在注册 iOS 应用程序时 我一直在努力将水印和高分辨率的图标图像上传到微信 api 结果如下 检查这里的网站 http developers wechat com 我尝试了不同的方法来上传28 28 png透明或不透明和灰度 这真的很烦人
  • 学校考勤系统数据库设计

    我正在为一所学校开展一个项目 其中一个特定模块涉及考勤系统 我正在使用 LAMP PHP 5 2 MYSQL 5 堆栈进行开发 现在学校人数约为1500人 每年总工作日约为250天 另外 我必须保留记录5年才能删除 表结构是 student
  • 在 ggplot2 中的轴刻度上显示两个测量单位

    如何在 ggplot2 中的轴刻度上显示两个替代单位 如果有的话 我想要实现的是这样的 这是一种巧妙的方法 d data frame x 1 20 y rnorm 20 5 5 ggplot data d aes x x y y scale
  • 将我的应用程序提交到 TestFlight 后出现问题

    我们发现您最近交付的 AppName 存在一个或多个问题 要处理您的交货 必须纠正以下问题 无效捆绑包 您的应用程序引用的一个或多个动态库不存在于 dylib 搜索路径中 纠正这些问题后 您可以重新交付纠正后的二进制文件 Regards 应
  • 如何将 stderr 和 stdout 重定向到脚本中同一行中的不同文件?

    我知道的就这么多 command 2 gt gt error command 1 gt gt output 有什么方法可以将 stderr 输出到错误文件并将 stdout 输出到 bash 同一行的输出文件吗 只需将它们添加到一行中即可c
  • 阿拉伯语:“源”Unicode 到最终显示 Unicode

    简单的问题 这是我正在寻找的最终显示字符串 现在下面是每个单独的字符 然后被 粘合 在一起 所以我在每个字符之间留了一个空格以阻止连接 请注意它们不是相同的字符 有一些神奇的转换可以将它们融合在一起并将它们转换为新的 Unicode 字符
  • Python 中 statsmodels 中的 ADF 测试

    我正在尝试运行增强迪基富勒测试statsmodels在Python中 但我似乎遗漏了一些东西 这是我正在尝试的代码 import numpy as np import statsmodels tsa stattools as ts x np
  • `gsutil cp` 命令抛出“OSError:文件名、目录名或卷标语法不正确”

    我已经按照gsutil 安装指南按照 Google Cloud 说明进行操作 我已经更新了 GCloud 组件到最新版本 我最近刚刚安装并配置了 GCloud 以使用我的凭据和项目 首先 我使用以下命令从我的数据库中导出我需要的单个集合火库
  • Spark 作业在显示所有作业已完成后重新启动,然后失败(TimeoutException:Futures 在 [300 秒] 后超时)

    I m running a spark job It shows that all of the jobs were completed 然而几分钟后 整个作业重新启动 这次它将显示所有作业和任务也已完成 但几分钟后它将失败 我在日志中发现
  • 使用 UIViewControllerContextTransitioning “从视图控制器”消失

    我遇到了一个问题 我在下面进行了描述 我在用UIViewControllerContextTransitioning用于自定义过渡 我有 2 个视图控制器 第一个视图控制器和第二个视图控制器 现在我想在第一个视图控制器上添加第二个视图控制器
  • 在 Spring Boot 中自动装配参数化构造函数

    我无法在参数化构造函数中传递值时自动装配 bean 如何使用Spring Boot调用参数化构造函数 Component public class MainClass public void someTask AnotherClass ob
  • pySerial - 有没有办法同时选择多个端口?

    我正在开发需要与许多串行端口通信的应用程序 我还没有找到一种方法来做到这一点而不使用每个端口的线程 有没有办法用单线程来做到这一点 比如同时在多个端口上选择或轮询 我正在使用 pyserial 2 6 我假设您在类 Unix 平台上使用 P