python怎么串口通信_python串口通信

测试1 单独开一个进程接收,不发送,共享内存拿数据

创建一个类Serial.py

'''

函数作用:

1开启其一个进程

2开启一个串口

3串口数据解析

4开辟共享内存 str 接收温度 湿度 mq2数据 (字符类型)

5主进程创建类调用这些数据

'''

# -*- coding: utf-8 -*

import serial

import time

from multiprocessing import Process,Manager

class Class_sensor:

def __init__(self):

pass

#读取温度和湿度和MQ2烟雾火焰

def serial_wsmq2(self,arr,clock):

ser = serial.Serial('/dev/ttyUSB0', 9600)

if ser.isOpen == False:

ser.open() # 打开串口

#ser.write(b"Raspberry pi is ready")

try:

while True:

line = str(ser.readline())

#print('1')

if line is not None:

fengefu='-'

a=line.strip().split(fengefu) # x.strip()#除去每行的换行符 按照:分割

wendu = "".join(a[1:2] ).strip() # 去除空格

shidu = "".join(a[3:4]).strip() # 去除空格

light = "".join(a[5:6]).strip() # 去除空格

#print('温度-'+ wendu +'-湿度-'+shidu+"-光照-"+light+"-")

#print(mq9)

with clock:

arr[1]=str(wendu)

arr[2]=str(shidu)

arr[3]=str(light)

except KeyboardInterrupt:

ser.close()

def class_int(self):

#1初始化共享内存

self.manager=Manager()

self.str_msg=self.manager.dict()#存str类型数据

#用几个必须预先初始化 否则后面无法访问

self.str_msg[1]='0'#温度

self.str_msg[2]='0'#湿度

self.str_msg[3]='0'#光照

#2线程锁 保护多个线成对数据控制

self.lock=self.manager.Lock()

p = Process(target=self.serial_wsmq2, args=(self.str_msg,self.lock))

p.deamon=True #伴随主进程关闭而关闭

p.start()

'''

#共享内存测试

t = Class_sensor()#类的初始化

t.class_int()#串口初始化

while 1:

#print(t.str_msg[1]) #调用数据

#print(t.str_msg[2]) #调用数据

#print(t.str_msg[3]) #调用数据

pass

'''

创建一个调用文件

#!/usr/bin/env python2

# -*- coding: utf-8 -*-

from Serial import Class_sensor

t = Class_sensor()#类的初始化

t.class_int()#串口初始化

wendu=t.str_msg[1] #温度0-100度

shidu=t.str_msg[2] #湿度 用来测下雨 0-100%

light=t.str_msg[3] #光照 0-255

例程2 单独一个进程接收,同一个串口发送,共享内存拿收到的数据

创建一个类 Serial.py

创建一个调用文件

标签:ser,python,self,通信,print,str,串口,msg

来源: https://www.cnblogs.com/kekeoutlook/p/13929618.html


版权声明:本文为weixin_36324960原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。