【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】:串口开发
串口开发 安装模块:pyserial端口检查:uartDevice自定义文件:SerialMonitor.py导入自定义文件:SerialMonitor.py延伸阅读 安装模块:pyserial Pyserial 是 Python 中使用串口通信的一个第三方库,使用它可以方…...
亲测可用!!!Centos7安装chrome+chromedriver以便实现selenium自动化详细教程
网上很多教程都是在线安装chrome,这样安装了最新稳定的chrome,可惜我遇到chromdriver的版本跟上 chrome,为了早日实现在centos服务selenium自动化,不可能去等待 chromdriver 更新,只能 chrome进行降版本来离线安装。花…...
spring cloud、gradle、父子项目、微服务框架搭建---cloud gateway(十)
总目录 https://preparedata.blog.csdn.net/article/details/120062997 文章目录 总目录一、简介二、order、pay服务 配置context-path三、新建gateway网关服务(1) 启动类添加 SpringCloudApplication 即可(2) application.yml 配…...
AD22使用笔记+积累库
一、前言 使用AD9习惯了,但是需求逐渐上来了就不够用了,好多快捷的新功能要新版本软件才能用,所以升级使用AD22 目录 1.添加层之后中间层无法布线 2.新增快捷方式CtrlW布线,不用点图标了 二、环境 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、单线程压缩。 建议使用:pigz多线程压缩…...
python-xpath语法-爬取彼岸图4k高清动漫壁纸
安装 pip install lxml导入 from lxml import etreexpath使用路径表达式提取html文档中的元素或元素集,然后元素通过沿路径path或步steps来选取数据 XPath常用语法格式 表达式描述div选取div元素的所有子元素/div选取根元素divul//li选取ul元素下的所有li子元素…...
韩信点兵:求韩信一共有多少兵
任务描述 本关任务:求韩信一共有多少兵。 韩信有一队兵,他想知道有多少人,便让士兵排队报数。 按从 1 至5报数,最末一个士兵报的数为 1; 按从 1 至 6 报数,最末一个士兵报的数为 5; 按从 1 …...
10个简单但超级有用的Python装饰器
装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的…...
DataGrip 2023 年下载、安装教程、亲测可用
文章目录 前言1. 下载2. 安装3、DataGrip 常用操作4 推荐阅读 前言 DataGrip 是 JetBrains 发布的多引擎数据库环境,支持 MySQL 和 PostgreSQL,Microsoft SQL Server 和 Oracle,Sybase,DB2,SQLite,还有 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 在日常操作中,对于一组相关操作,通常要求要么都成功,要么都失败。在关系…...
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进行三方库依赖管理是比较通用的方案,更换开发环境后突然发现conan无法安装三方库了,报错如下: zlib/1.2.12: Not found in local cache, looking in remotes... zlib/1.2.12: Trying with conan-center... ERROR…...
基于springboot+vue的大学生智能消费记账系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
Java——》synchronized的使用
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...
vue+element使用阿里的图标库保存图标
阿里图标网站iconfont-阿里巴巴矢量图标库 我想使用保存图标,但是element的图标库没有找到可用的,首先在阿里的图标网站搜索保存 发现这个还不错 点击添加入库 点击购物车 点击添加至项目 点击下载到本地 把下载的压缩包里面的文件拖到自己项目里面 在m…...
Day 01 web前端基础知识
首先我们要了解什么事前端? 先简单用文字介绍一下: 一、入门知识 Web前端是指网站或应用程序的用户界面部分。它包括HTML、CSS、JavaScript等语言和技术,用于创建用户可浏览和交互的网页。Web前端的特点在于其交互性和动态性,可…...
Redis 高可用之持久化
目录 Redis 高可用 Redis 持久化 RDB 持久化 触发条件 执行流程 启动时加载 修改配置文件 AOF 持久化 配置 执行流程 命令追加(append) 文件写入(write)和文件同步(sync) 文件重写(rewrite) 文件重写的流程 RDB和AOF的优缺点 Redis 高可用 在web服务器中&…...
生成元 rust解法
如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求n的最小生成元。无解输出0。例如,n216,121,2005时的解分别为198,0,1979。 【分析】 本题看起来…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?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日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): 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了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用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中所有框架元素的基…...
