当前位置: 首页 > 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

http://www.lryc.cn/news/196412.html

相关文章:

  • 图详解第四篇:单源最短路径--Dijkstra算法
  • CRMEB多商户商城系统阿里云集群部署教程
  • Java第三方登录封装工具类
  • BUUCTF学习(四): 文件包含tips
  • 德国人工智能公司【Kodex AI】完成160万欧元融资
  • LeetCode 2 两数相加
  • springboot项目启动失败,不打印报错详细信息(启动打印日记问题)
  • MyBatis (where、set、foreach)标签
  • flutter开发之安装dart
  • 向量召回:深入评估离线体系,探索优质召回方法
  • 播放器缓存队列bug解决方案
  • React拖拽实践
  • Stable Diffusion绘图,lora选择
  • kube-controller-manager和kube-scheduler不能正常启动
  • Mac OS m1 下安装Gradle5.1
  • JUC并发编程面试题(自用)
  • Redis分布式会话
  • 程序员大厂之鹅厂探秘
  • 【Java 进阶篇】深入理解 JavaScript DOM Node 对象
  • 测试用例基础
  • “Flex弹性布局、轮播图mock遍历数据和首页布局解析与实践“
  • 自动化办公篇之python
  • 华为云云耀云服务器L实例评测|使用sysbench对云耀云服务器mysql的性能测试
  • 【译】快速开始 Compose 跨平台项目
  • 高性能服务器之mysql数据库连接池设计与实现
  • 黑客技术(自学)——网络安全
  • day06-前后端项目上传到gitee、后端多方式登录接口、发送短信功能、发送短信封装、短信验证码接口、短信登录接口
  • 【SA8295P 源码分析 (一)】83 - SA8295P HQNX + Android 完整源代码下载方法介绍
  • 文献阅读快速法-ChatPDF
  • Jenkins 内存占用