我正在通过 python 中的串行端口发送命令,但它们被发送多次而不是一次

2025-04-15 09:19:00
admin
原创
30
摘要:问题描述:我正在使用 com 端口串行发送一些具有特定响应的命令..这些命令保存在一个文件中..我正在逐行读取文件中的每个命令并通过 com 端口串行发送它..但是当我使用 Magic Terminal(软件)从接收端看到它时..我发现每个命令都会运行多次..而我只发送​​一次..我已经在 pycharm 中...

问题描述:

我正在使用 com 端口串行发送一些具有特定响应的命令..这些命令保存在一个文件中..我正在逐行读取文件中的每个命令并通过 com 端口串行发送它..但是当我使用 Magic Terminal(软件)从接收端看到它时..我发现每个命令都会运行多次..而我只发送​​一次..我已经在 pycharm 中编写了一个代码..在控制台中我看到该命令只运行一次但从 uart 接收端来看情况就不同了..我被这个问题困住了..我保持了相同的波特率和一切,但无法诊断问题..代码的 github 链接是:https: //github.com/AkshatPant06/Akshat-Pant/blob/master/cmd%20list

def recvResponse():
ser.write(serial.to_bytes(intCmd))
time.sleep(1)
data_recv=ser.read(2)
return data_recv

我已经用它来接收 2 字节响应。


解决方案 1:

你的代码似乎没什么问题。至少在我能复现的范围内,它只发送了一次命令(我在设置串口为环回模式后尝试了你的函数)。

我不能肯定地说,但可能是您使用的终端有两个窗口,一个用于输入,另一个用于输出,不知何故您对端口的输入和输出感到困惑。

处理此类问题的一个简单方法是使用嗅探器来检测端口。你可以在 Windows 上结合使用 com0com 和 Termite 来实现,正如我最近在这里解释的那样。

如您所见,此终端上只有一个窗口,设置转发后,您将看到所有进出端口的信息。这样可以更轻松地查看代码的写入和读取内容。

为了给你一个应用嗅探器技巧的常规场景,你可以参考以下屏幕截图:

常规串口场景

在本例中,计算机上有两个真实的串行端口。在第一个端口(COM9)上,我们运行着一个 Modbus 服务器(您可以将其想象成一堆内存地址,每个地址存储一个 16 位数字)。在 上,COM10我们有一个客户端正在发送查询,询问前 10 个地址(在 Modbus 术语中称为寄存器)的内容。在一般情况下,我们用电缆连接这些端口,因此我们(理论上)知道 上的客户端正COM10在发送一个数据帧,询问这 10 个寄存器,而 上的服务器COM9正在使用这些寄存器中存储的数字进行应答。但我们只能看到服务器上的内容(图片左侧)和客户端正在接收的内容(图片右侧)。我们看不到总线上传输的内容(是的,我们知道它是什么,但我们不知道 Modbus 协议的内部结构)。

如果我们想点击总线来查看每一侧发送和接收的内容,我们可以使用 com0com 创建几个虚拟端口,并使用 Termite 创建端口转发连接,如下面的屏幕截图所示:

使用 Termite 和 com0com 设置端口转发

现在,我们已将 Modbus 服务器移至其中一个虚拟串口(COM4在本例中)。安装 com0com 后,我们获得了一对转发端口(COM4<-->COM5)(默认情况下,但您当然可以更改名称或添加更多端口对)。现在,如果我们想查看端口间的数据流通情况,可以打开 Termite(图片右下角)并设置另一个端口转发方案,在本例中是从虚拟端口COM5到真实端口COM9

最后(和之前嗅探完全一样),我们用一根电缆COM9连接起来了COM10。不过现在我们能够看到总线上所有来回的数据(所有在 Termite 上看到的十六进制值都以绿/蓝字体显示)。

正如您所见,这将提供与您使用更专业的工具所能做的事情类似的功能。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用