import binascii
import serial
import datetime
from openpyxl import Workbook
from openpyxl.styles import Font
ser = serial.Serial(port = "com5", baudrate = 9600, timeout = 2) ##串口参数配置
now = datetime.datetime.now() ##系统时间获取
test_data1 = Workbook()
now_time =now.strftime("%Y%m%d%H%M%S")
ws = test_data1.create_sheet(title= now_time) ##按照系统时间创建工作表
header_font = Font(bold=True)
ws.append(["时间", "二氧化碳", "甲醛", "TVOC", "PM2.5", "PM10", "温度", "湿度"]) ##写入表格首行 标题行
while True:
data = ser.read(17)
if data:
data_hex = binascii.hexlify(data).decode('utf-8')
test_time = now.strftime("%H:%M:%S")
print(test_time)
co2_com_data = data_hex[4:8]
co2_data = int(co2_com_data, 16) ##二氧化碳数据获取
print(f"co2={co2_data}")
ch2o_com_data = data_hex[8:12]
ch2o_data = int(ch2o_com_data, 16) ##甲醛数据获取
print(f"ch2o={ch2o_data}")
tvoc_com_data = data_hex[12:16]
tvoc_data = int(tvoc_com_data, 16) ##挥发物数据获取
print(f"tvoc={tvoc_data}")
pm25_com_data = data_hex[16:20]
pm25_data = int(pm25_com_data, 16) ##PM2.5数据获取
print(f"pm2.5={pm25_data}")
pm10_com_data = data_hex[20:24]
pm10_data = int(pm10_com_data, 16) ##PM10数据获取
print(f"pm10={pm10_data}")
temp1_com_data = data_hex[24:26]
temp1_data = int(temp1_com_data, 16)
temp2_com_data = data_hex[26:28]
temp2_data = int(temp2_com_data, 16)
temp_data = str(temp1_data) + "." + str(temp2_data) ##温度数据获取
temp = float(temp_data)
print(f"temperature= {temp}")
humi1_com_data = data_hex[28:30]
humi1_data = int(humi1_com_data, 16)
humi2_com_data = data_hex[30:32]
humi2_data = int(humi2_com_data, 16)
humi_data = str(humi1_data) + "." + str(humi2_data)
humi = float(humi_data)
print(f"humidity={humi}") ##湿度数据获取
print("=========================")
ws.append([test_time, co2_data, ch2o_data, tvoc_data, pm25_data, pm10_data, temp, humi])
test_data1.save("{}.xlsx".format(test_time)) ##表格数据保存
else:
print("error")