Python操作串口通信

Python操作串口通信

注意Linux下先要修改串口的权限:

sudo chmod 777 /dev/ttyUSB0

以下是python代码:

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 0A
        x.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是拼接出来的数据,比如:001a
           my_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()#开启线程1
     t1.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

相关推荐
我材不敲代码2 小时前
Python实现打包贪吃蛇游戏
开发语言·python·游戏
0思必得04 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
韩立学长4 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
qq_192779874 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
u0109272714 小时前
使用Plotly创建交互式图表
jvm·数据库·python
爱学习的阿磊4 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python
Imm7775 小时前
中国知名的车膜品牌推荐几家
人工智能·python
tudficdew5 小时前
实战:用Python分析某电商销售数据
jvm·数据库·python
sjjhd6525 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
2301_821369616 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python