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

Python操作串口通信

Python操作串口通信

注意Linux下先要修改串口的权限:
sudo chmod 777 /dev/ttyUSB0

以下是python代码:

# coding=utf-8
# 包:pyserial,pymysql
# 权限:sudo chmod 777 /dev/ttyUSB0
import serial
# import pymysql
import threading
import time# x=serial.Serial('COM3',9600)  # winsows系统使用com3口连接串行口
# x=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5)  # 使用USB连接串行口
x=serial.Serial("/dev/ttyS4",9600,timeout=0.5)  # Linux系统使用com4口连接串行口def fasong():#发送函数while True:time.sleep(3)myinput= bytes([0x01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A])#这是我要发送的命令,原本命令是:01 03 00 00 00 01 84 0Ax.write(myinput)def jieshou():#接收函数while True:while x.inWaiting()>0:myout=x.read(7)#读取串口传过来的字节流,这里我根据文档只接收7个字节的数据datas =''.join(map(lambda x:('/x' if len(hex(x))>=4 else '/x0')+hex(x)[2:],myout))#将数据转成十六进制的形式new_datas = datas.split("/x")#将字符串分割,拼接下标4和5部分的数据need = new_datas[4]+new_datas[5];#need是拼接出来的数据,比如:001amy_need = int(hex(int(need,16)),16)#将十六进制转化为十进制sql = "INSERT INTO VOC_DATA(value,create_time)VALUES('"+str(my_need)+"',"+str(int(time.time()))+")"print(sql)# 使用 execute()  方法执行 SQL 查询# 执行sql语句# cursor.execute(sql)# 提交到数据库执行# db.commit()if __name__== '__main__':# 打开数据库连接# db = pymysql.connect("localhost","root","123456789","voc" )# 使用 cursor() 方法创建一个游标对象 cursor# cursor = db.cursor()t1 = threading.Thread(target=jieshou,name="jieshou")#线程1:不断的去请求数据t2= threading.Thread(target=fasong, name="fasong")#线程2:不断地去接收数据t2.start()#开启线程1t1.start()#开启线程2#import serial
#ser = serial.Serial('/dev/ttyS3')  # 'COM3'
#ser.setBaudrate(9600)
#ser.setByteSize(8)
#ser.setStopbits(1)
#print(ser.portstr)
#data = ser.readline(0,'\r\n')
#data = ser.read(20)
#print(data)

参考博客:

https://www.cnblogs.com/zhengweizhao/p/8426826.html
https://blog.csdn.net/xuzhexing/article/details/91043579

相关文章:

Python操作串口通信

Python操作串口通信 注意Linux下先要修改串口的权限: sudo chmod 777 /dev/ttyUSB0 以下是python代码: # codingutf-8 # 包:pyserial,pymysql # 权限:sudo chmod 777 /dev/ttyUSB0 import serial # import pymysql …...

图详解第四篇:单源最短路径--Dijkstra算法

文章目录 1. 最短路径问题2. 单源最短路径--Dijkstra算法算法思想图解如何存储路径及其权值代码实现调式观察打印最短路径Dijkstra算法的缺陷 3. 源码 1. 最短路径问题 最短路径问题: 从带权有向图(求最短路径通常是有向图)G中的某一顶点出发…...

CRMEB多商户商城系统阿里云集群部署教程

注意: 1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区 2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示 一、 创建容器镜像服务,容器镜像服务(aliyun.com) ,个人版本就可以 先创建一个命名空间 然后创建一个镜像仓库 查看并记录镜像公网地址…...

Java第三方登录封装工具类

Java中可以使用第三方登录来简化用户登录流程,常见的第三方登录如QQ、微信、微博等。下面是一个Java封装第三方登录的工具类: import java.io.IOException; import java.util.HashMap; import java.util.Map;import org.apache.http.client.ClientProto…...

BUUCTF学习(四): 文件包含tips

1、介绍 2、hackBar插件安装 教程: Hackbar插件安装-CSDN博客 3、解题 php://filter/readconvert.base64-encode/resource要读取的文件 ?filephp://filter/readconvert.base64-encode/resourceflag.php Base64 在线编码解码 | Base64 加密解密 - Base64.us 结束...

德国人工智能公司【Kodex AI】完成160万欧元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于德国柏林的人工智能公司【Kodex AI】今日宣布已完成160万欧元融资。 本轮融资由Signals VC领投,Techstars、德意志银行等天使投资者参与,其中包括:most AI首席执行官…...

LeetCode 2 两数相加

题目描述 链接:https://leetcode.cn/problems/add-two-numbers/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度:中等 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式…...

springboot项目启动失败,不打印报错详细信息(启动打印日记问题)

1&#xff1a;出现这种我问题一般都是日记的问题&#xff0c;查看控制台启动打印的第一句&#xff0c;为什么启动失败&#xff0c;需要用那个日记 2&#xff1a;如果使用的是log4j或者logback与slf4j都是默认在依赖web自带的如下 <dependency><groupId>org.springf…...

MyBatis (where、set、foreach)标签

where标签 在上一节SQL 语句中加入了一个条件“11”&#xff0c;如果没有加入这个条件&#xff0c;那么可能就会变成下面这样一条错误的语句。 SELECT id,name,url,age,country FROM website AND name LIKE CONCAT(%,#{name},%)显然以上语句会出现 SQL 语法异常&#xff0c;但…...

flutter开发之安装dart

1、在MacOS系统中打开终端&#xff0c;进入到官网Get the Dart SDK | Dart brew tap dart-lang/dartbrew install dart 注意&#xff1a;若显示没有brew&#xff0c;请先执行第二步骤&#xff0c;如下&#xff1a; 2、打开homebrew的官网Homebrew — The Missing Package Man…...

向量召回:深入评估离线体系,探索优质召回方法

向量召回:深入评估离线体系,探索优质召回方法 1.简介 近年来,基于向量进行召回的做法在搜索和推荐领域都得到了比较广泛的应用,并且在学术界发表的论文中,基于向量的 dense retrieve 的方法也在不少数据集上都战胜了 sparse retrieve,吸引了越来越多的关注。在内网的不…...

播放器缓存队列bug解决方案

背景 我在开发一个播放器的缓存队列时&#xff0c;遇到一个bug,导致包和帧无法被下一个模块读取 找了半天&#xff0c;原来是队列中的包和帧数据要进行内容的刷新暂存 包数据和帧数据不能直接放入队列 //入队&#xff0c;包进队列 int AVPacketQueue::Push(AVPacket *val,i…...

React拖拽实践

当涉及到前端开发中的用户体验时&#xff0c;拖拽功能是一个常见而重要的需求。在React中&#xff0c;实现拖拽功能可以通过多种方式完成&#xff0c;但通常需要深刻理解React的状态管理、事件处理和DOM操作。本文将探讨React中拖拽的实践&#xff0c;包括基本原理、拖拽库的使…...

Stable Diffusion绘图,lora选择

best quality, ultra high res, (photorealistic:1.4), 1girl, off-shoulder white shirt, black tight skirt, black choker, (faded ash gray hair:1), looking at viewer, closeup <lora:koreandolllikeness_v20:0.66> 最佳品质&#xff0c;超高分辨率&#xff0c;&am…...

kube-controller-manager和kube-scheduler不能正常启动

kube-controller-manager-k8s-worker01和kube-scheduler-k8s-worker01没有启动起来 原因&#xff1a; 解决&#xff1a;进入/etc/kubernetes/manifests 编辑 将镜像地址修改为 然后重启kubelet&#xff1a;systemctl restart kubelet.service...

Mac OS m1 下安装Gradle5.1

1. 下载、解压 1.1 下载地址 https://gradle.org 往下翻 选择 5.1 或者选择 任何 你想要的版本 ,点击 binary-only 即可下载 . 1.2 解压到指定目录 2. 配置环境变量 2.1 编辑环境文件 vi ~/.bash_profile #GRADLE相关配置 GRADLE_HOME/Users/zxj/Documents/devSoft/grad…...

JUC并发编程面试题(自用)

线程池 1 线程池的作用&#xff1a;提高线程的利用率&#xff0c;线程复用&#xff0c;频繁的创建和销毁线程非常浪费资源 线程池的七大参数&#xff1a; corePoolSize&#xff08;核心线程数&#xff09;&#xff1a;线程池中始终保持的活动线程数&#xff0c;即使它们处于空…...

Redis分布式会话

当探讨Redis分布式会话管理时&#xff0c;以下是更加详细的知识点&#xff1a; 1. 会话管理的挑战&#xff1a; 在分布式应用程序中&#xff0c;每个用户请求可能由不同的服务器处理。这导致了会话数据的分散性&#xff0c;需要一种方法来维护一致性的用户会话状态。 2. Redi…...

程序员大厂之鹅厂探秘

...

【Java 进阶篇】深入理解 JavaScript DOM Node 对象

在前端开发中&#xff0c;与HTML文档进行交互是一项基本任务。文档对象模型&#xff08;Document Object Model&#xff0c;简称DOM&#xff09;为开发者提供了一种以编程方式访问和操作HTML文档的方式。DOM的核心是节点&#xff08;Node&#xff09;对象&#xff0c;它代表了文…...

区块链前端技术栈介绍

这是一份完整区块链前端的学习路径&#xff0c;基于当前市场需求和技术趋势。 &#x1f5fa;️ 技术路线总览 阶段 1&#xff1a;基础入门 (1-2个月) 阶段 2&#xff1a;核心 Web3 技能 (2-3个月) 阶段 3&#xff1a;高级应用开发 (3-4个月) 阶段 4&#xff1a;架构与优化 (2-…...

Wayback Machine浏览器扩展:时光倒流神器,一键保存网页历史

Wayback Machine浏览器扩展&#xff1a;时光倒流神器&#xff0c;一键保存网页历史 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webex…...

别再新建空文件了!手把手教你用CodeBlocks创建可调试的C/C++工程(避坑中文路径)

别再新建空文件了&#xff01;手把手教你用CodeBlocks创建可调试的C/C工程&#xff08;避坑中文路径&#xff09; 刚接触编程的新手常常会遇到这样的困惑&#xff1a;明明按照教程写好了代码&#xff0c;设置了断点&#xff0c;按下F7却毫无反应。这种挫败感往往源于一个被多数…...

Navicat Mac终极重置指南:3种简单方法快速恢复试用期

Navicat Mac终极重置指南&#xff1a;3种简单方法快速恢复试用期 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 你是否正在使…...

Camunda流程版本管理避坑指南:从Version Tag查询到迁移验证,这些细节决定成败

Camunda流程版本管理实战精要&#xff1a;从精准查询到安全迁移的全链路策略 在企业级流程自动化领域&#xff0c;Camunda作为领先的工作流引擎&#xff0c;其版本管理机制直接影响着业务系统的稳定性和迭代效率。本文将深入剖析版本管理的核心痛点&#xff0c;提供一套覆盖全…...

图片转Word怎么转?2026年图片转文档完整方法与工具对比

日常工作中&#xff0c;我们经常需要将拍摄的照片、截图或扫描的纸质文件转换成可编辑的Word文档。无论是转录会议笔记、整理手写资料&#xff0c;还是数字化办公文件&#xff0c;高效的转换工具能显著提升工作效率。本文将详细介绍多种图片转word文档的方法&#xff0c;帮你找…...

Git Bisect 实战:用二分法快速找到引入 Bug 的提交

前言 项目跑了一段时间以后&#xff0c;最麻烦的 Bug 往往不是一眼能看出来的语法错误&#xff0c;而是那种“之前明明是好的&#xff0c;现在突然坏了”的回归问题。 比如某个接口在上个月还能正常返回数据&#xff0c;最近发版后开始报错&#xff1b;某个页面之前可以打开&am…...

【RT-DETR实战】061、端到端速度优化:从数据加载到后处理

昨天深夜调模型的时候又遇到性能瓶颈——明明GPU利用率只有60%,帧率死活上不去。 盯着nvidia-smi的输出发呆半小时,突然意识到问题不在前向推理那几百毫秒,而在数据加载和后处理这些“边角料”环节。今天咱们就聊聊RT-DETR端到端流水线里那些容易被忽略的速度陷阱。 数据加…...

别再只写CRUD了!用SpringBoot+MySQL设计一个高并发预约挂号系统,这些架构细节你得知道

高并发预约挂号系统架构实战&#xff1a;SpringBootMySQL核心技术解析 1. 系统架构设计挑战与解决方案 在医疗信息化高速发展的今天&#xff0c;预约挂号系统作为医院服务的"第一窗口"&#xff0c;其稳定性与性能直接影响患者就医体验。传统CRUD架构在面对挂号早高峰…...

FFXVIFix终极指南:解锁《最终幻想16》的完美游戏体验

FFXVIFix终极指南&#xff1a;解锁《最终幻想16》的完美游戏体验 【免费下载链接】FFXVIFix Migrated to https://codeberg.org/Lyall/FFXVIFix 项目地址: https://gitcode.com/gh_mirrors/ff/FFXVIFix FFXVIFix是一款专门为《最终幻想16》设计的全方位优化工具&#xf…...