Python:解析pyserial串口通讯

简介:串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

历史攻略:

i2c-tools:让硬件通信更简单

IPMI开源库pyghmi基本使用

安装:

pip install pyserial

案例指引:

1、查询当前机器有哪些串口:

ls -al /dev/tty* | grep  USB

图片

2、进入串口调试模式

sudo minicom -D /dev/ttyUSB0

3、手工输入和返回尝试

图片

4、pyserial - demo:serial_demo.py

# -*- coding: utf-8 -*-
# time: 2024/4/7 23:31
# file: serial_demo.py
# 公众号: 玩转测试开发
import time
import serial


class SerialTool(object):
    def __init__(self, baudrate, bytesize, timeout=0):
        self.baudrate = baudrate
        self.bytesize = bytesize
        self.timeout = timeout
        self.ser = serial.Serial(self.baudrate, self.bytesize, timeout=self.timeout)

    def get_data(self, size=100, encoding_type=""):
        if encoding_type:
            data = self.ser.read(size).decode(encoding=encoding_type)
        else:
            data = self.ser.read(size).decode()

        return data

    def get_all_data(self, encoding_type=""):
        if encoding_type:
            data = self.ser.read_all().decode(encoding=encoding_type)
        else:
            data = self.ser.read_all().decode()

        return data

    def input_data(self, data):
        data = data.encode()
        print(f"input data: {str(data)}")
        self.ser.write(data)
        time.sleep(0.1)

    def reset_output_buffer(self):
        self.ser.reset_output_buffer()

    def test_write_read(self):
        self.ser.write(b"\n")
        time.sleep(0.1)
        data = self.get_data(100, "ascii")
        print(f"my test data: {data}")


if __name__ == "__main__":
    baudrate = "/dev/ttyUSB0"
    bytesize = 115200
    timeout = 0
    my_ser = SerialTool(baudrate, bytesize, timeout)

    data = my_ser.get_data(100, "ascii")
    print(f"Before input. Get data:{data}")

    # my_ser.input_data("mw 0x0109010C 0x02f24500")
    my_ser.test_write_read()

    data2 = my_ser.get_data(100, "ascii")
    print(f"After input. Get data:{data2}")

运行结果:对比步骤3手工调试可知,

代码运行与手工输入回车都是返回 =>,说明调试成功。

图片

其他参考命令:退出串口调试, ctrl + A 然后松开后按 X 即可实现退出串口调试模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/575733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【插件】IDEA 热部署插件 JRebel

1 搜索安装插件 JRebel 2 选中Team URL 1、在上面的框中输入激活的url地址 https://jrebel.qekang.com/{GUID} http://jrebel-license.jiweichengzhu.com/{GUID} GUID生成工具 Create GUID online (guidgen.com) 备用 404 Not Found (ofmonkey.com) 如果上述激活地址不能…

Python请求示例电商商品详情数据(API接口开发系列),从入门到实战

在电商系统中,商品详情数据通常通过API接口提供。以下是一个从入门到实战的Python请求示例,展示如何获取电商商品详情数据。 入门篇:理解API接口 首先,你需要了解API(应用程序接口)的基本概念。API允许不…

Flutter应用下拉菜单设计DropdownButtonFormField控件介绍

文章目录 DropdownButtonFormField介绍使用方法重点代码说明属性解释 注意事项 DropdownButtonFormField介绍 Flutter 中的 DropdownButtonFormField 是一个用于在表单中选择下拉菜单的控件。它是 DropdownButton 和 TextFormField 的组合,允许用户从一组选项中选择…

全域外卖城市合伙人怎么样啊?一文解答

全域外卖城市合伙人,也叫做全域外卖服务商,这一职业在当今数字化时代愈发显得重要。它与传统团购外卖服务商的区别,就如同广袤的星空与单一的星星。全域外卖服务商,顾名思义,就是能够涉足所有外卖领域的服务商。这些领…

Python数据爬取超简单入门

## 什么是网络爬虫? 网络爬虫是一种自动浏览器程序,能够自动地从互联网获取数据。爬虫的主要任务是访问网页,分析网页内容,然后提取所需的信息。爬虫广泛应用于数据收集、数据分析、网页内容监控等领域。 ## 爬虫的基本步骤 1.…

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音,英语简写是 tts) 包括接收 app 中需要语音合成的文本,再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis,外加一些处理如何表示要被合成的文本 (也被称为 utte…

学习随手记ComboBoxEx选定项的值value和text值获取方法

代码:dotNetBar2中的ComboxBoxEx的使用方法 //获取选定项的value值 string _v ((DevComponents.Editors.ComboItem)cbo_cmdType.SelectedItem).Value.ToString(); //获取选定项的text值 string _t ((DevComponents.Editors.ComboItem)cbo_cmdType.SelectedItem)…

Hive函数详解

Hive 是一个建立在 Hadoop 上的数据仓库基础架构,它提供了类似于 SQL 的查询语言,称为 HiveQL,用于对存储在 Hadoop 分布式文件系统中的数据进行查询和分析。 1.函数简介 Hive会将常用的逻辑封装成函数给用户进行使用,类似于Jav…

Java关键字super解释

hi,我是程序员王也,一个资深Java开发工程师,平时十分热衷于技术副业变现和各种搞钱项目的程序员~,如果你也是,可以一起交流交流。 今天我们来聊聊Java中super关键字~ 1. 引言 1.1 介绍Java中的关键字 Java是一种强…

SpringCloud 之 服务提供者

前提 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com学习Rest实例之提供者 提供者模块展示 1、导入依赖 <!-- 实体类 Web--><dependency><groupId>com.jyl</groupId><…

HarmonyOS实战开发-如何在鸿蒙开发中使用数据库

鸿蒙中的数据库基于SQLite组件&#xff0c;用来处理关系比较复杂的数据&#xff0c;本文将以WORKER表为例&#xff0c;为大家演示在鸿蒙开发中对数据库的增删改查操作。 1、首先导入数据库模块&#xff1a; import relationalStore from ohos.data.relationalStore;2、配置数…

独家定制,个性至上——可道云TeamOS企业网盘,为您的企业量身定制

烦恼买了企业网盘&#xff0c;却不能修改网盘名称&#xff1f;想要将网盘的logo换成公司的logo&#xff1f; 市面上的大多数公有云盘就是标准化产品&#xff0c;无法改变企业网盘的既定样式、增删功能、也难以根据企业的实际需求灵活变通。 特别是当今企业应用的办公软件比较…

jmeter安装和简单使用

jmeter安装和简单使用 1. 安装 jmeter是基于Java开发的测试应用&#xff0c;其运行依赖于java环境&#xff0c;所以在下载运行jmeter前&#xff0c;先确保本机已经安装jdk或者jre&#xff0c;安装jdk步骤此处不描述。 下载jmeter&#xff1a; jmeter是Apache旗下的产品&…

Fluent.Ribbon创建Office的RibbonWindow菜单

链接&#xff1a; Fluent.Ribbon文档 优势&#xff1a; 1. 可以创建类似Office办公软件的复杂窗口&#xff1b; 2. 可以应用自定义主题风格界面

【redis】非关系型数据库——Redis介绍与安装(windows环境)

目录 数据库架构的演化单体架构缓存(Memcached)MySQL集群缓存(Memcached可以)MySQL集群垂直拆分&#xff08;主从复制&#xff0c;读写分离&#xff09;缓存(Redis)MySQL集群垂直拆分分库分表 NoSQLNoSQL产生的背景性能需求MySQL的扩展性瓶颈方面什么是NoSQLNoSQL的特点主流的N…

李彦宏:程序员将不复存在! 周鸿祎回怼!网友:先把百度程序员都开除了!

近日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在央视《对话》•开年说的访谈中指出&#xff1a;“基本上说以后其实不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 “未来的编程语言只会剩下两种&#xff0c;一种…

超潜力 JAM 链何以超越中继链,引领 Polkadot 2.0 新航向?

2024 年 4 月 18 日&#xff0c;Polkadot 创始人 Gavin Wood 在迪拜 Token 2049 活动上宣布了一项波卡生态的重大进展—— JAM 灰皮书发布&#xff01;JAM 协议的诞生与发展开辟了波卡生态的另一种发展路径&#xff0c;它将替代当前中继链的技术角色&#xff0c;以模块化、简约…

Recommended Azure Monitors

General This document describes the recommended Azure monitors which can be implemented in Azure cloud application subscriptions. SMT incident priority mapping The priority “Blocker” is mostly used by Developers to prioritize their tasks and its not a…

场内股票期权和场外期权(附场内期权交易攻略)

期权是交易双方关于未来买卖权利达成的合约。 就股票期权来说&#xff0c;期权的买方(权利方)通过向卖方(义务方)支付一定的费用(即期权费或权利金)&#xff0c;获得一种权利&#xff0c;即有权在约定的时间以约定的价格向期权卖方买入或卖出约定数量的标的股票或ETF。 买方(…

AI大模型探索之路-训练篇1:大语言模型微调基础认知

文章目录 前言一、微调技术概述二、微调的必要性三、大模型的微调方法四、微调过程中的技术细节五、微调后的模型评估与应用总结 前言 在人工智能的广阔研究领域内&#xff0c;大型预训练语言模型&#xff08;Large Language Models, LLMs&#xff09;已经成为推动技术革新的关…
最新文章