获取雾霾检测数据

# encoding=utf-8
import os
import serial
import time
from struct import *

# 打开串口  
print
"Opening Serial Port...",
# 这里是通信端口,不同系统有所不同
ser = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=2.0)
print
"Serial Connected"


def read_pm_line(_port):
    rv = b''
    while True:
        ch1 = _port.read()
        if ch1 == b'\x42':
            ch2 = _port.read()
            if ch2 == b'\x4d':
                rv += ch1 + ch2
                rv += _port.read(28)
                return rv


def main():
    cnt = 0
    # conn = sqlite3.connect('pm25.db')
    # c = conn.cursor()
    while True:
        # 获得接收缓冲区字符
        recv = read_pm_line(ser)

        cnt = cnt + 1
        print
        "[%d]Recieve Data" % cnt,
        print
        len(recv), "Bytes:",
        tmp = recv[4:]
        datas = unpack('>hhhhhhhhhhhhh', tmp)
        # print datas
        os.system('clear')
        print('\n======= PMS5003ST ========\n'
              'PM1.0(CF=1): {}\n'
              'PM2.5(CF=1): {}\n'
              'PM10 (CF=1): {}\n'
              'PM1.0 (STD): {}\n'
              'PM2.5 (STD): {}\n'
              'PM10  (STD): {}\n'
              '>0.3um     : {}\n'
              '>0.5um     : {}\n'
              '>1.0um     : {}\n'
              '>2.5um     : {}\n'
              '>5.0um     : {}\n'
              '>10um      : {}\n'
              .format(datas[0], datas[1], datas[2],
                      datas[3], datas[4], datas[5],
                      datas[6], datas[7], datas[8],
                      datas[9], datas[10], datas[11]))
        # 清空接收缓冲区  
        ser.flushInput()

        # 必要的软件延时  
        time.sleep(0.5)


if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        if ser != None:
            ser.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值