python脚本实现串口通讯收发,并测试延时时间

STM32模拟CH340实现USB转串口与离线烧录功能实战 USB转串口是嵌入式开发中连接微控制器与上位机进行调试、数据交换的常用技术,其核心原理是通过USB通信设备类(CDC)协议在计算机上虚拟出串行通信端口。在工程实践中,利用通用MCU模拟专用USB转串口芯片(如CH340)的功能,能够显著提升系统集成度与灵活性。通过软件实现完整的CDC/ACM设备栈,开发者可以在单一芯片上整合串口通信、自定义协议解析及外围控制等任务,尤其适用于需要离线操作或定制化功能的应用场景。本文聚焦于基于STM32平台模拟CH340的解决方案,重点探讨了如何实现稳定的程序烧录功能,并针对 阅读详情

1:先配置基本的串口参数;
2:发送数据之后就进入接收模式,数据接收成功之后计算收发之间的时间差,并打印发送次数和时间差;
3:再进入发送模式循环发送接收;
4:没有设备端的话,就短接串口的TX和RX,自收自发;

# 测试串口通讯延时
# 发送数据之后就进入接收模式,数据接收成功之后计算收发之间的时间差
# 再进入发送模式循环

import serial
import time

# 测试数据
send_data = bytes([
            0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,
            ])

# 设置串口号和波特率
serial_baud = 115200
ser = serial.Serial('COM110', serial_baud) # 设置串口号和波特率

send_flag = 1   # 发送接收标志
send_cnt = 0    # 发送次数
print("start baud={0} data_len = {1}".format(serial_baud, len(send_data)))
while True:
    if send_flag == 1:
        # 发送数据,避免发的太快加一点延时
        time.sleep(1)
        # print("send_data")
        send_cnt = send_cnt + 1
        # print(f'Sending: {send_data}')
        time_start = time.time() # 记录开始发送时间
        # print("send_time-{0}".format(time_start))
        ser.write(send_data)    
        send_flag = 0
    else:
        if ser.in_waiting > 0: # 如果有数据可读
            # print("reveive_data")
            data = ser.read(len(send_data)) # 读取接收到的数据
            # print(f'Received: {data}') # 打印接收到的数据
            time_end = time.time() # 记录接收时间
            # print("reveive_time-{0}".format(time_end))
            time1 = time_end - time_start    # 计算发送和接收时间差
            print('check {0}, Time: {1:.6f} seconds'.format(send_cnt, time1))
            time.sleep(3)
            send_flag = 1

测试日志

start baud=115200 data_len = 32
check 1, Time: 0.005994 seconds
check 2, Time: 0.002264 seconds
check 3, Time: 0.002105 seconds

可以自行修改发送内容,获取发送多少次之后自动停止等功能

python串口收发 一、安装串口模块 pip3 install pyserialer 二、串口接口 打开串口,并得到串口对象 ser=serial.Serial(portx,bps,timeout=timex) 发送 result=ser.write(text.encode(“gbk”)) 接收 rcv = ser.read_all() 三、程序示例 import serial #导入模块 import xlrd import time #import easygui import tkinter try: #端 阅读详情

相关推荐

python+嵌入式——串口通信篇(收发解包)_python串口通信的接收与发送

查看串口端口号代码收发包寻找原因并连接fill:#333;color:#333;color:#333;fill:none;导入pyserial库打开串口并设置串口参数发送数据关闭 or 循环发送fill:#333;color:#333;color:#333;fill:none;导入pyserial库打开串口并设置串口参数python读取数据至缓存区从缓存区读取数据解包转换为自己需要的数据关闭串口 or 循环读取。

2401_86372721的博客 1610

Python应用开发——串口通信

在嵌入式开发中我们经常会用到串口,串口通信简单,使用起来方便,且适用场景多,因此串口常常用来输出调试Log或者跟其他外设进行通讯,也可以用作上位机和下位机之间的通讯。那这一讲我就简单介绍一下如何用Python编写一个串口收发程序。

ShenZhen_zixian的博客 1万+

工业RS485串口丢包乱码的六大物理层根源与实测整改

RS485串口通信是工业自动化中Modbus、PLC和传感器数据交互的基础物理层协议,其稳定性直接取决于信号完整性、电气隔离、时序精度、拓扑结构及驱动兼容性五大工程要素。当出现丢包、乱码、校验失败等现象,本质并非软件逻辑错误,而是差分信号在长线传输中遭遇阻抗失配引发反射、地电位漂移导致共模超限、USB转串口芯片驱动节能机制与时序缺陷叠加、半双工收发控制延时不足、MCU UART与DMA资源竞争,以及星型接线等拓扑反模式所共同诱发的物理层失真。这些问题在产线高干扰、多节点、实时轮询场景下高频复现,需结合示波器

weixin_34212762的博客 424

python+嵌入式——串口通信篇(收发解包)

python利用pyserial读取串口数据,包含一些总结和官方文档参数的说明。 且包含利用struct模块进行解包操作

scarecrow_sun的博客 2万+

Modbus诊断工具怎么选?一套高效工作流与实战排查经验

Modbus协议是工业自动化领域最常用的通讯标准之一,其诊断涉及物理层、协议层和应用层多个层面。理解报文结构、功能码、CRC校验和异常码等基础原理,是快速定位通讯故障的关键。一套高效的诊断工作流通常需要报文抓取、主从站模拟和自动化分析工具的组合,以应对现场调试、设备测试和长时间稳定性验证等场景。本文围绕Modbus诊断工具选型与实战排查方法,分享可复现的诊断思路和常见问题处理技巧,帮助工程师减少现场调试时间。

weixin_34228387的博客 263

马肯依码士9410/9450串口通讯协议与调试避坑指南

串口通讯是工业设备集成的底层技能,RS232与RS485的选型、帧结构设计、校验方式以及终端电阻处理,都会直接影响设备互联的稳定性。在产线自动化与MES系统对接中,喷码机等现场设备通过串口协议完成文本下发、启停控制和状态采集,能显著减少人工干预并提升追溯效率。马肯依码士9410/9450小字符喷码机采用ASCII指令帧,本文以其通讯协议为例,梳理从RS232/RS485参数确认、指令帧封装、PLC与Modbus网关对接,到高频串口通讯故障排查的完整链路,帮助工程师避开接线、参数和时序方面的常见深坑,快速搭建

weixin_33795806的博客 290

python fxb通讯

使用 Python 实现 Fxb 通讯的步骤指南 一、概述 Fxb 通讯一般涉及到通过特定协议进行数据交流。在这里,我们将使用 Python 来实现 Fxb 通讯。下面是整个流程的分步表格: 步骤 描述 工具/库 1 安装必要的库和环境 pip, PySerial 2 编写 Fxb 通讯的基本框架 Pyt...

weixin_36382155的博客 214

马肯依码士9410/9450串口通讯协议详解与PLC集成实战

串口通讯是工业自动化设备互联的基础,而喷码机作为产线标识的核心,其通讯协议的解析尤为关键。本文以马肯依码士9410/9450为例,从RS232/RS485物理层选型讲起,深入剖析ASCII帧结构的STX/ETX/校验码设计,结合状态机与重传机制,给出与PLC集成的完整方案。通过串口助手抓帧与Python代码实例,帮助工程师快速掌握通讯调试方法,规避常见踩坑点,实现稳定可靠的产线喷码控制。

weixin_34218890的博客 397

python测试串口最大通信速率

通过本篇博客的介绍,我们了解了如何使用Python中的pyserial库来测试串口的最大通信速率。通过编写测试代码,并分析测试结果,我们可以更好地理解串口通信在不同波特率下的性能表现,从而为实际的串口通信应用提供参考和指导。希望本篇博客能帮助你更好地理解串口通信的测试方法,并在实际开发中发挥作用。祝你在串口通信方面取得成功!

牛肉胡辣汤 1767

MCGSPro自由口串口驱动:非标设备接入组态的关键技术

串口通信是工业现场与设备交互的基础方式,但面对非标仪表或自制采集板时,标准驱动往往缺失,协议需自行定义。自由口驱动的核心原理是将串口字节流映射为组态变量,把协议控制权交还给工程师,从而实现从物理层到应用层的灵活对接。其技术价值在于隔离串口硬件调度与协议处理,减少脚本并发冲突,提升通信稳定性。在实际应用中,工程师需要掌握串口参数配置、帧分隔规则、缓冲长度设计及CRC16校验等关键点,并通过状态机实现可靠收发。本文以MCGSPro自由口串口通信驱动包为例,系统讲解非标设备接入组态软件的方法、协议拆分组帧技巧以及

weixin_31858171的博客 268

Python3 串口接收与发送16进制数据包的实例

如下所示: import serial import string import binascii s=serial.Serial('com4',9600) s.open() #接收 n=s.inwaiting() if n: data= str(binascii.b2a_hex(s.read(n)))[2:-1] print(data) #发送 d=bytes.fromhex('10 11 12 34 3f') s.write(d) s.close() 以上这篇Python3 串口接收与发送16进制数据包的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支

51单片机实现可靠串口通讯聊天系统

串口通信是嵌入式系统最基础的数据传输方式,其核心在于物理层电平匹配、链路层帧同步与校验机制、以及应用层协议设计。理解UART工作原理、波特率误差控制、环形缓冲区管理及中断安全访问,是构建稳定通讯系统的前提。在资源受限的裸机环境下(如51单片机),这些技术点尤为关键——它们直接决定数据是否丢失、指令是否错乱、状态是否崩溃。本文以‘51单片机通讯聊天系统’为实践载体,深入剖析从寄存器配置、自定义轻量帧协议、到抗干扰帧解析的完整链路,覆盖Proteus仿真、实物焊接、EMC优化及工业级扩展(RS485/ESP82

weixin_34204722的博客 373

ROS入门必学导航算法——Navigation

该平台集成了多款无人车底盘,包括履带式、四轮差速、阿克曼、麦克纳姆轮底盘等,以满足不同形式和配置的需求,并搭载了RTK定位系统、双目相机、深度相机和激光雷达等多种传感器,以满足开发者的科研需求。amcl节点接收里程计数据(通过"odom"话题)和激光雷达数据(通常通过"scan"话题),结合已知的地图,实时地估计出机器人在该地图上的位置。在ROS中,这是通过"tf库"变换实现的,通过将传感器数据转换到共同的参考系中,系统可以更容易地集成来自不同传感器的数据,并确保它们在相同的空间和时间范围内可用。

AMOVLAB(阿木实验室) 2908

Docklight串口调试实战:RS232/RS485故障定位与协议解析

串口通信是嵌入式系统、工业控制和物联网设备最基础的数据交互方式,其本质是UART在物理层(RS232/RS485/RS422)上的电气实现与协议层(帧结构、校验、时序)的协同。理解波特率匹配、电平标准、硬件流控及数据粘包等原理,是解决乱码、烧写失败、响应丢失等高频问题的技术前提。Docklight作为轻量级串口分析工具,不依赖编程环境,通过时间戳标记、方向识别、HEX可视化、协议模板定义和自动脚本等能力,将抽象的串行数据转化为可读、可测、可验证的工程信号,特别适用于CH340驱动适配、RS485终端电阻验证

weixin_33806300的博客 358

保姆级教程:用OpenCV的calibrateHandEye()搞定机器人手眼标定(附Python代码)

本文详细介绍了如何使用OpenCV的calibrateHandEye()函数完成机器人手眼标定,解决机械臂与相机坐标系对齐问题。教程涵盖从基础原理、数据采集到Python代码实现的完整流程,特别适合需要精确视觉引导的机器人应用开发。通过手眼标定,可确保机械臂准确抓取相机检测到的目标物体。

weixin_33712987的博客 515

DPABI实战:手把手教你处理小鼠静息态fMRI数据(从Voxel Size到SPM完整流程)

本文详细介绍了使用DPABI处理小鼠静息态fMRI数据的完整流程,从Voxel Size调整到SPM分析,涵盖预处理、质量控制和可视化等关键步骤。针对小鼠数据特有的低分辨率和信噪比问题,提供了实战建议和避坑指南,帮助研究人员高效完成数据分析。

weixin_42663213的博客 476

C#串口通讯实战:突破SerialPort类的三大幻觉

串口通讯是工业自动化、嵌入式调试和设备集成的基础通信方式,其本质是物理层(RS232/RS485)、驱动层(USB转串口芯片兼容性)与应用层(.NET SerialPort API)的深度协同。理解波特率误差、DataReceived事件的线程池本质、Open()调用的电气验证缺失等底层原理,是构建高可靠上位机系统的前提。C#凭借Windows生态适配性、Win7/10长期支持及丰富的异步IO能力,成为工控现场主流开发语言;而串口通讯的稳定性瓶颈往往不在代码逻辑,而在信号完整性、驱动行为差异与协议解析鲁棒性

weixin_34292402的博客 355

Labview执行adbshell操作

一、目录 1、实现思路 2、adbshell工具配置 3、Labview执行命令窗口 1、实现思路 使用Labview的优点: 1、可以配合电源系统或者调用其他接口工具实现更高程度的自动化测试; 2、直接执行Linux相关命令,编写相关执行顺序或者逻辑更简易; --------可以用adbpush命令将.sh的脚本文件推入控制器内部执行; 3、Ubuntu系统比较大,如果只是日常执行脚本测试还是比较占用磁盘空间; 2、adbshell工具配置 1)下载adbshell工具; adbshell工具下载链

zataji的博客 2052

告别万用表与串口助手:BoardLab一站式开发板调试实战指南

嵌入式开发板调试长期受困于工具链的分散:硬件测电压、软件收日志、两边交叉验证,万用表和串口助手各自为战,导致效率低下。GPIO检测、电压采集、逻辑分析、日志记录等环节往往需要多款工具来回切换,信息相互割裂,难以形成统一的时间轴。一站式硬件测试平台的出现,通过主机端软件与板端固件的协同,将串口终端、GPIO检测、ADC采样、协议解码等能力整合于同一工作区,实现软硬件数据的自动关联与连续观测。这种架构不仅让物联网、驱动开发等场景中的重复性测量变得高效,还能结合脚本自动化大幅缩短回归测试周期。本文以实际操作为基础

weixin_34221773的博客 289

Unity简单操作:PostProcessing的使用

Postprocessing是一个unity2018版本的集成后期插件,有了这个插件,之后用unity开发时,后期调整颜色、光晕等会很方便。 目录 新建一个postprocessing profile(配置文件)。​ 参数说明: 新建一个postprocessing profile(配置文件)。 在主相机下加一个组件PostProcess Layer。 注意:需要将相机的Layer层设置与Post Process Layer 下的Volume blending(体积混合)...

weixin_39114763的博客 7365

基于大模型的重度膝关节骨关节炎全流程预测与治疗方案研究

本研究基于大模型构建了重度膝关节骨关节炎(KOA)预测体系,涵盖术前风险预测、手术方案优化、术中监测和术后康复指导全流程。通过分析临床和影像数据,模型在手术风险预测准确率(85%)、并发症预警(血栓预测准确率88%)等方面显著优于传统方法。研究实现了临床数据与AI技术的深度融合,术前预测指导麻醉选择(如高危患者推荐椎管内麻醉),术中实时监测生命体征,术后个性化康复方案使患者HSS评分平均提升45分。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1389

RK3568 RS485自动收发:设备树配置与内核驱动深度调优

RS485是一种半双工差分总线通信协议,其可靠运行依赖收发状态(DE/RE)与UART数据流的微秒级同步。传统软件延时控制因Linux调度不确定性导致错帧率飙升,而硬件自动收发需内核驱动在发送完成中断中精准翻转引脚——这正是RK3568 DesignWare UART控制器的核心能力。其`UART_RS485_CTRL`寄存器仅在8250驱动中断上下文中安全访问,必须通过设备树显式启用`uart-has-rs485`并正确配置`rs485-delay-rts-after-send`等参数。工程实践中,90%

weixin_33858485的博客 402

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 149

Modbus RTU通讯不稳?别只查硬件,CRC与轮询时序才是隐形杀手

Modbus RTU与RS485是工业自动化中广泛使用的通讯协议与物理层标准,其主从轮询机制依赖严格的报文校验与时序控制。当PLC作为主站轮询多个从站时,CRC校验错误、寄存器地址映射偏移、响应超时设置过短等问题,常导致偶发通讯超时,却容易被误判为硬件故障。理解CRC-16/MODBUS的校验原理、寄存器地址的偏移规则以及帧间延时要求,能帮助工程师从协议层面快速定位根因,提升RS485组网的稳定性与可维护性。

weixin_33923762的博客 297

微信小程序、H5微信公众号网页JSAPI:解决报错requestMerchantTransfer:fail:internal error(使用wx.requestMerchantTransfer错误)

如何解决requestMerchantTransfer:fail:internal error,微信小程序wx.requestMerchantTransfer报错,微信公众号H5网页使用jssdk调用wx.requestMerchantTransfer报错,JSAPI调起用户确认收款报错errMsg:“requestMerchantTransfer:fail:internal error“,微信小程序/H5 调起确认收款界面,JSAPI调起用户确认收款,微信公众号(H5),用户发起提现,商家转账给用户,用户

✅ 精选推荐文章 4962

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

12路锁控板RS485通讯协议详解:帧结构、指令集与调试实战

RS485是一种差分信号串口通信技术,通过双绞线实现多点组网和远距离传输,抗干扰能力强,广泛应用于工业控制和智能柜体。其原理基于半双工通信,主机轮询从机,通过自定义二进制协议帧实现指令交互。在智能储物柜、门禁系统等场景中,RS485总线可连接多块锁控板,实现12路电控锁的独立控制与状态回读。掌握帧结构、校验方式和硬件防护设计,是确保通信稳定的关键。本文深入拆解12路锁控板的RS485通讯协议,涵盖帧格式、指令集、寄存器映射及实操调试技巧。

weixin_34208185的博客 297

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 超级串口工具——SuperCom
下一篇: UART串口通讯乱码分析
dujunqiu
博客等级 码龄9年 2787粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值