当前位置:首页 > 科技  > 软件

Python 串口收发使用与示例教程

来源: 责编: 时间:2024-07-03 17:18:07 254观看
导读今天咱们来聊聊怎么用Python搞定串口通信,让你的电脑和各种设备愉快地“对话”。别担心,跟着我,保证轻松上手!一、准备工作首先,确保你的电脑有串口(通常是USB转串口),然后安装pyserial库。打开终端或命令行,敲入这行命令:pip i

今天咱们来聊聊怎么用Python搞定串口通信,让你的电脑和各种设备愉快地“对话”。别担心,跟着我,保证轻松上手!TP528资讯网——每日最新资讯28at.com

TP528资讯网——每日最新资讯28at.com

一、准备工作

首先,确保你的电脑有串口(通常是USB转串口),然后安装pyserial库。打开终端或命令行,敲入这行命令:TP528资讯网——每日最新资讯28at.com

pip install pyserial

安装好了?那咱们就开始吧!TP528资讯网——每日最新资讯28at.com

二、串口基础知识

串口通信,简单说就是设备之间通过一根线,一个字节一个字节地传递信息。在Python里,我们用Serial类来控制这个过程。TP528资讯网——每日最新资讯28at.com

三、实战代码

(1) 打开串口TP528资讯网——每日最新资讯28at.com

import serial# 创建串口对象ser = serial.Serial('COM3', 9600, timeout=1)# 检查是否成功打开if ser.isOpen():    print("串口已打开!")else:    print("串口打开失败,请检查设置!")

这里,COM3是串口号,不同的电脑可能不同,9600是波特率,要和设备一致哦!TP528资讯网——每日最新资讯28at.com

(2) 发送数据TP528资讯网——每日最新资讯28at.com

发送数据很简单,用write()方法就行:TP528资讯网——每日最新资讯28at.com

# 准备发送的数据data_to_send = "Hello, Arduino!".encode()# 发送数据ser.write(data_to_send)print("数据已发送!")

记得把字符串编码成字节哦,因为串口通信处理的是字节流。TP528资讯网——每日最新资讯28at.com

(3) 接收数据TP528资讯网——每日最新资讯28at.com

接收数据要用readline()或read()方法。这里我们用readline()来读取一行:TP528资讯网——每日最新资讯28at.com

while True:    # 读取一行数据    data_received = ser.readline().decode().strip()        if data_received:        print(f"收到数据:{data_received}")    else:        break

decode()是把接收到的字节解码回字符串,strip()去掉末尾的换行符。TP528资讯网——每日最新资讯28at.com

四、完整示例

把上面的代码整合一下,就得到一个完整的串口收发程序:TP528资讯网——每日最新资讯28at.com

import serialdef main():    # 创建串口对象    ser = serial.Serial('COM3', 9600, timeout=1)        if not ser.isOpen():        print("串口打开失败,请检查设置!")        return        print("串口已打开!")        # 准备发送的数据    data_to_send = "Hello, Arduino!".encode()        # 发送数据    ser.write(data_to_send)    print("数据已发送!")        while True:        # 读取一行数据        data_received = ser.readline().decode().strip()                if data_received:            print(f"收到数据:{data_received}")        else:            break        # 关闭串口    ser.close()    print("串口已关闭!")if __name__ == "__main__":    main()

五、小贴士

TP528资讯网——每日最新资讯28at.com

  • 记得检查你的串口号和波特率。
  • 发送前最好等待设备准备好,比如Arduino重启后需要等待几秒。
  • 玩串口通信时,记得及时关闭串口,避免资源占用。

六、错误处理与调试

在实际应用中,串口通信可能会遇到各种各样的问题,如设备未连接、波特率不匹配等。为了确保程序的健壮性,我们需要添加错误处理机制:TP528资讯网——每日最新资讯28at.com

try:    # 尝试打开串口    ser = serial.Serial('COM3', 9600, timeout=1)except serial.SerialException as e:    print(f"串口打开失败: {e}")

此外,使用logging模块可以帮助我们记录程序运行过程中的关键信息,便于调试和维护:TP528资讯网——每日最新资讯28at.com

import logginglogging.basicConfig(level=logging.DEBUG)logger = logging.getLogger(__name__)# 记录日志logger.debug("尝试打开串口...")

七、多设备通信

如果需要同时与多个设备通信,可以创建多个Serial实例,每个实例对应一个设备:TP528资讯网——每日最新资讯28at.com

device1 = serial.Serial('COM3', 9600)device2 = serial.Serial('COM4', 9600)# 向两个设备发送相同数据data_to_send = "Hello, Devices!".encode()device1.write(data_to_send)device2.write(data_to_send)

八、高级数据处理

在某些场景下,你可能需要解析从设备接收到的复杂数据。Python的强大在于,你可以利用各种库来处理这些数据,比如使用正则表达式提取特定模式的信息:TP528资讯网——每日最新资讯28at.com

import re# 假设设备返回的数据格式为:Temperature: 23.5°Cpattern = r'Temperature: (/d+/./d+)°C'data_received = ser.readline().decode().strip()match = re.search(pattern, data_received)if match:    temperature = float(match.group(1))    print(f"当前温度为:{temperature}°C")

九、小项目实践

为了加深理解,尝试设计一个小项目,比如一个温度监测系统,使用Arduino作为温度传感器,Python作为数据处理中心。这样不仅可以练习串口通信,还能学习数据处理和可视化。TP528资讯网——每日最新资讯28at.com

十、结语

串口通信是连接物理世界和数字世界的桥梁,掌握它将开启无限可能。无论是DIY爱好者还是专业开发者,Python都能提供强大的工具箱,帮助你实现创意。TP528资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-98551-0.htmlPython 串口收发使用与示例教程

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 利用Spring Boot 3.x与消息中间件RabbitMQ实现火车购票系统实时票务信息同步与更新

下一篇: 彻底理解字符串匹配KMP算法

标签:
  • 热门焦点
  • 石头自清洁扫拖机器人G10S评测:多年黑科技集大成之作 懒人终极福音

    科技圈经常能看到一个词叫“缝合怪”,用来形容那些把好多功能或者外观结合在一起的产品,通常这样的词是贬义词,但如果真的是产品缝合的好、缝合的实用的话,那它就成了中性词,今
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top