import binascii
import serial
import datetime
import time
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'SimHei'
import keyboard
import numpy as np
def update_line(): ##动态更新折线图
plt.figure(num= 'Test data', figsize= (6, 3))
x.append(i)
PM25_data_Y_1.append(PM25_data_1)
PM10_data_Y_1.append(PM10_data_1)
np.savetxt('PM25_data_1.txt', PM25_data_Y_1, delimiter=',') ##备份数据保存
np.savetxt('PM10_data_1.txt', PM10_data_Y_1, delimiter=',')
plt.subplot(1, 2, 1)
plt.plot(x, PM25_data_Y_1, 'r')
plt.xlabel('Time')
plt.ylabel('PM2.5_1')
plt.title('PM2.5_1')
plt.subplot(1, 2, 2)
plt.plot(x, PM10_data_Y_1, 'r')
plt.xlabel('Time')
plt.ylabel('PM10_1')
plt.title('PM10_1')
plt.pause(0.1)
i = 0 ##初始坐标
x = [0]
failed= 0 ##异常统计
PM25_data_Y_1 = [0]
PM10_data_Y_1 = [0]
test_data = openpyxl.Workbook()
time_excel_name =datetime.datetime.now().strftime("%Y%m%d%H%M%S")
save_test_data = test_data.create_sheet(title= time_excel_name, index=0) ##按照系统时间创建工作表
header_font = Font(bold=True)
save_test_data.append(["NO.", "Time", "PM2.5浓度_1", "PM10浓度_1", "Failed"]) ##写入表格首行 标题行
test_data.save("{}.xlsx".format(time_excel_name)) ##表格数据保存
while i < 30000:
i = i + 1
test_time = datetime.datetime.now().strftime("%H:%M:%S") ##系统时间获取
ceshi_time = str(i)
print(test_time, "\033[1;37;42m第{}次测试\033[0m".format(ceshi_time), failed) ##测试次数获取
data_1 = binascii.hexlify(serial.Serial(port= "com4", baudrate= 9600, timeout= 2).read(32)).decode('utf-8')
if len(data_1) == 64:
PM25_data_1 = int(data_1[12:16], 16) ##PM2.5数据获取
print(f"\033[1;33;40mPM2.5={PM25_data_1}\033[0m")
PM10_data_1 = int(data_1[16:20], 16) ##PM10数据获取
print(f"\033[1;33;40mPM10={PM10_data_1}\033[0m")
print("=========================")
save_test_data.append([i, test_time, PM25_data_1, PM10_data_1, failed])
test_data.save("{}.xlsx".format(time_excel_name)) ##表格数据保存
update_line()
else:
test_data.save("{}.xlsx".format(time_excel_name)) ##表格数据保存
i = i + 1
failed= failed + 1
else:
test_data.save("{}.xlsx".format(time_excel_name)) ##表格数据保存
serial.close()
now = datetime.datetime.now() ##系统时间获取
test_data = openpyxl.Workbook()
time_excel_name =now.strftime("%Y%m%d%H%M%S")
save_test_data = test_data.create_sheet(title= time_excel_name, index=0)
header_font = Font(bold=True)
save_test_data.append(["NO.", "Time", "PM2.5浓度_1", "PM10浓度_1", "Failed"])
i = 0