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 单独一个进程接收,同一个串口发送,共享内存拿收到的数据

python串口通信

 

 python串口通信

 

 

创建一个类 Serial.py

 

创建一个调用文件

上一篇:Python 之 Serial串口通信


下一篇:【Java】java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector