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·正则表达式
星光樱梦1 小时前
02. Python基础知识
python
亚图跨际1 小时前
MATLAB和C++及Python流式细胞术
c++·python·matlab·流式细胞术
steamedobun1 小时前
【爬虫】Firecrawl对京东热卖网信息爬取(仅供学习)
爬虫·python
右恩1 小时前
Docker 实践与应用举例
python·docker
凤枭香1 小时前
Python Scikit-learn简介(二)
开发语言·python·机器学习·scikit-learn
湫ccc9 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe10 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin10 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
哭泣的眼泪40810 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame