当前位置: 首页 > news >正文

【PyCharm Community Edition】:串口开发

串口开发

  • 安装模块:pyserial
  • 端口检查:uartDevice
  • 自定义文件:SerialMonitor.py
  • 导入自定义文件:SerialMonitor.py
  • 延伸阅读

安装模块:pyserial

Pyserial 是 Python 中使用串口通信的一个第三方库,使用它可以方便地与设备进行数据交互。

  • 方法1: CMD指令
pip install pyserial
  • 方法2:PyCharm Community Edition的工程界面搜索导入
    详见【PyCharm Community Edition】:基础 中的模块安装

端口检查:uartDevice

获取串口相关信息:名称,属性等

import serial.tools.list_portswhile True:print("选择使用的串口通道号")port_list = list(serial.tools.list_ports.comports())#获取串口列表print("可用的COM端口:")portNames = []for i, p in enumerate(port_list): #枚举串口列表里面的信息,便于提示打印portNames.append(p.name)print("%d. %s"%(i + 1, p.name))print(p)#等待外界选择端口序号:uartDevice = input().strip() #strip()作用是输入字符串时删除字符串左右两端的空格’ ‘、换行符’\n’、制表符’\t’等print(uartDevice)try:uartDevice = int(uartDevice) #将uartDevice转换成十进制if uartDevice <= len(portNames) and uartDevice > 0:uartDevice = portNames[uartDevice - 1] #通过数值找出对应的端口名称比如:COM5breakelse:print("请选择正确的串口通道号")except:print("请选择正确的串口通道号")#这里最终得到uartDevice 的端口名称,比如:COM5

自定义文件:SerialMonitor.py

便于自己使用,可以聚合开发自己的串口服务函数。

# cython: language_level=3
from serial import *
import timeclass SerialMonitor():def __init__(self, port: str):#指定带入参数:port(类型为:字符串)self.port = portself.pwd = "mcu.v4"#与下位机通信时的密码字符def open(self):print("打开端口%s" % (self.port))self.serial = Serial(self.port, 460800, timeout=5)def close(self):self.serial.close()def setup(self):self.write()time.sleep(5)self.write(self.pwd)#发送解密指令time.sleep(0.2)self.write(self.pwd)time.sleep(0.2)# result = str(self.serial.read())# # command error# while len(result) > 0:#     self.write("Noch")#     time.sleep(0.2)#     result = str(self.read())# print(f'接收的反馈内容:{result}')print("解密成功")self.write("log ALL 0")#发送“log ALL 0”字符串result = str(self.serial.read())# command errorwhile '[ALL] -> [OFF]' not in result:#查询想要的字符串下位机反馈:“[ALL] -> [OFF]print('Resp Data is not expected:%s' % result, ' resend cmd:log ALL 0')time.sleep(1)self.write(self.pwd)time.sleep(0.2)self.write("log ALL 0")time.sleep(0.05)result = str(self.read())#读取串口获取的数据,转换成字符串print(f'接收的反馈内容:{result}')print("屏蔽所有的log成功")self.read()def read(self):return self.serial.read_all()def write(self, content: str = ""):content = "%s\r\n" % (content)content = bytes(content.encode("ascii"))# content = content.encode("ascii")self.serial.write(content)def flush(self):self.serial.flushInput()self.serial.flushOutput()

导入自定义文件:SerialMonitor.py

打开串口,并发送相关数据

from SerialMonitor import *serial = SerialMonitor(uartDevice)#注意uartDevice必须时端口名称,比如COM5
print("打开串口")
serial.open()#打开串口
serial.setup()#里面有一些列自定义操作

延伸阅读

  • 神奇的python(六)之python的串口操作(pyserial) 推荐:5星
serial = serial.Serial(‘COM1’, 115200) 打开COM1并设置波特率为115200,COM1只适用于Windows
print serial .portstr 能看到第一个串口的标识
serial.write(“hello”) 往串口里面写数据
serial.close() 关闭serial 表示的串口
serial.open() 打开串口
data = serial.read(num) 读num个字符
data = serial.readline() 读一行数据,以/n结束,要是没有/n就一直读,阻塞。
serial.baudrate = 9600 设置波特率
print serial 可查看当前串口的状态信息
serial.isOpen() 当前串口是否已经打开
serial.inWaiting() 判断当前接收的数据
serial.flushInput() 清除输入缓冲区数据
serial.flushOutput() 中止当前输出并清除输出缓冲区数据

相关文章:

【PyCharm Community Edition】:串口开发

串口开发 安装模块&#xff1a;pyserial端口检查&#xff1a;uartDevice自定义文件&#xff1a;SerialMonitor.py导入自定义文件&#xff1a;SerialMonitor.py延伸阅读 安装模块&#xff1a;pyserial Pyserial 是 Python 中使用串口通信的一个第三方库&#xff0c;使用它可以方…...

亲测可用!!!Centos7安装chrome+chromedriver以便实现selenium自动化详细教程

网上很多教程都是在线安装chrome&#xff0c;这样安装了最新稳定的chrome&#xff0c;可惜我遇到chromdriver的版本跟上 chrome&#xff0c;为了早日实现在centos服务selenium自动化&#xff0c;不可能去等待 chromdriver 更新&#xff0c;只能 chrome进行降版本来离线安装。花…...

spring cloud、gradle、父子项目、微服务框架搭建---cloud gateway(十)

总目录 https://preparedata.blog.csdn.net/article/details/120062997 文章目录 总目录一、简介二、order、pay服务 配置context-path三、新建gateway网关服务&#xff08;1&#xff09; 启动类添加 SpringCloudApplication 即可&#xff08;2&#xff09; application.yml 配…...

AD22使用笔记+积累库

一、前言 使用AD9习惯了&#xff0c;但是需求逐渐上来了就不够用了&#xff0c;好多快捷的新功能要新版本软件才能用&#xff0c;所以升级使用AD22 目录 1.添加层之后中间层无法布线 2.新增快捷方式CtrlW布线&#xff0c;不用点图标了 二、环境 AD22 三、正文 1.添加层之…...

20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度

20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度 2023/9/15 22:19 https://blog.csdn.net/wb4916/article/details/128447298 20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理 4、单线程压缩。 建议使用&#xff1a;pigz多线程压缩&#xf…...

python-xpath语法-爬取彼岸图4k高清动漫壁纸

安装 pip install lxml导入 from lxml import etreexpath使用路径表达式提取html文档中的元素或元素集&#xff0c;然后元素通过沿路径path或步steps来选取数据 XPath常用语法格式 表达式描述div选取div元素的所有子元素/div选取根元素divul//li选取ul元素下的所有li子元素…...

韩信点兵:求韩信一共有多少兵

任务描述 本关任务&#xff1a;求韩信一共有多少兵。 韩信有一队兵&#xff0c;他想知道有多少人&#xff0c;便让士兵排队报数。 按从 1 至5报数&#xff0c;最末一个士兵报的数为 1&#xff1b; 按从 1 至 6 报数&#xff0c;最末一个士兵报的数为 5&#xff1b; 按从 1 …...

10个简单但超级有用的Python装饰器

装饰器&#xff08;Decorators&#xff09;是Python中一种强大而灵活的功能&#xff0c;用于修改或增强函数或类的行为。装饰器本质上是一个函数&#xff0c;它接受另一个函数或类作为参数&#xff0c;并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的…...

DataGrip 2023 年下载、安装教程、亲测可用

文章目录 前言1. 下载2. 安装3、DataGrip 常用操作4 推荐阅读 前言 DataGrip 是 JetBrains 发布的多引擎数据库环境&#xff0c;支持 MySQL 和 PostgreSQL&#xff0c;Microsoft SQL Server 和 Oracle&#xff0c;Sybase&#xff0c;DB2&#xff0c;SQLite&#xff0c;还有 Hy…...

6.SpringEL与List,Map

SpringEL与List,Map 文章目录 SpringEL与List,Map介绍Spring EL以注解的形式Spring EL以XML的形式 介绍 使用SpEL与 Map 和 List 的工作方式与Java是完全一样的 //get map whete key MapA Value("#{testBean.map[MapA]}") private String mapA;//get first value …...

【Oracle】使用 SQL Developer 连接 Oracle 数据库

文章目录 前言一、准备工作1、安装 SQL Developer2、安装 Oracle 数据库 二、连接 Oracle 数据库1、打开 SQL Developer2、连接数据库3、访问数据库 三、SQL 开发功能1、SQL Worksheet2、对象浏览器3、数据库管理 四、总结 前言 SQL Developer 是 Oracle 官方推出的一款免费的…...

PostgreSQL 事务并发锁

文章目录 PostgreSQL 事务大家都知道的 ACID事务的基本使用保存点 PostgreSQL 并发并发问题MVCC PostgreSQL 锁机制表锁行锁 总结 PostgreSQL 事务 大家都知道的 ACID 在日常操作中&#xff0c;对于一组相关操作&#xff0c;通常要求要么都成功&#xff0c;要么都失败。在关系…...

CANoe-Model Editor无法修改ARXML文件的问题、E2E在SOME/IP通信中的使用问题

1、Model Editor无法修改ARXML文件的问题 在CANoe 15软件版本中,Communication Setup导入arxml文件后,可以在model editor中打开arxml并修改配置。关闭model editor后再打开,可以看到修改的配置被保存了。 但是,当我把arxml文件从Communication Setup中移除后,再导入。此…...

Conan安装第三方依赖库时SSL验证失败解决办法

背景 c跨平台项目使用conan进行三方库依赖管理是比较通用的方案&#xff0c;更换开发环境后突然发现conan无法安装三方库了&#xff0c;报错如下&#xff1a; zlib/1.2.12: Not found in local cache, looking in remotes... zlib/1.2.12: Trying with conan-center... ERROR…...

基于springboot+vue的大学生智能消费记账系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

Java——》synchronized的使用

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...

vue+element使用阿里的图标库保存图标

阿里图标网站iconfont-阿里巴巴矢量图标库 我想使用保存图标&#xff0c;但是element的图标库没有找到可用的&#xff0c;首先在阿里的图标网站搜索保存 发现这个还不错 点击添加入库 点击购物车 点击添加至项目 点击下载到本地 把下载的压缩包里面的文件拖到自己项目里面 在m…...

Day 01 web前端基础知识

首先我们要了解什么事前端&#xff1f; 先简单用文字介绍一下&#xff1a; 一、入门知识 Web前端是指网站或应用程序的用户界面部分。它包括HTML、CSS、JavaScript等语言和技术&#xff0c;用于创建用户可浏览和交互的网页。Web前端的特点在于其交互性和动态性&#xff0c;可…...

Redis 高可用之持久化

目录 Redis 高可用 Redis 持久化 RDB 持久化 触发条件 执行流程 启动时加载 修改配置文件 AOF 持久化 配置 执行流程 命令追加(append) 文件写入(write)和文件同步(sync) 文件重写(rewrite) 文件重写的流程 RDB和AOF的优缺点 Redis 高可用 在web服务器中&…...

生成元 rust解法

如果x加上x的各个数字之和得到y&#xff0c;就说x是y的生成元。给出n&#xff08;1≤n≤100000&#xff09;&#xff0c;求n的最小生成元。无解输出0。例如&#xff0c;n216&#xff0c;121&#xff0c;2005时的解分别为198&#xff0c;0&#xff0c;1979。 【分析】 本题看起来…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...