Python数据处理(2) —16进制文本数据处理
admin 于 2018年03月05日 发表在 Python软件开发
1. 本节讲解
利用Python程序语言解析攀藤PM2.5传感器G5003存储的16进制的文本文件。
2. 原始数据
3. 实现思路
根据攀藤相关产品型号手册,可知16进制文本所代表的含义。首先,通过方括号符号 "[ ]" 获取有效时间信息及16进制格式的数据序列;其次,以空格" "对16进制数据串进行拆分,将每一字节根据手册对应到相应位置,并做统一处理。
4. 工程文件(点击下载附件)
核心代码如下:
# -*- coding: utf-8 -*- """ Created on Thu Dec 7 11:02:53 2017 @author: jack """ import time import matplotlib.pyplot as plt #读取的txt文件, G5003传感器 fileName = 'PTCOM52.txt' #绘图所需数据 xtime = [] yvalue = [] #定义PM1/PM2.5/PM10标准颗粒物和大气颗粒物 sPM1 = [] sPM2_5 = [] sPM10 = [] PM1 = [] PM2_5 = [] PM10 = [] #读取包含攀藤传感器数据的txt文本 for line in open(fileName): #截取时间数值 end = line.find(']') try: xtimestamp = time.mktime(time.strptime(line[1:end],"%Y:%m:%d:%H:%M:%S")) #以空格拆分字符串,作为数据 array = line[end+1:].strip().split(' '); #判断数据是否符合规则,针对G5003传感器 if(len(array)) == 32: xtime.append(xtimestamp) #存储时刻 data = int(array[4],16)*256+ int(array[5],16) #标准PM1.0 sPM1.append(data) data = int(array[6],16)*256+ int(array[7],16) #标准PM2.5 sPM2_5.append(data) data = int(array[8],16)*256+ int(array[9],16) #标准PM10 sPM10.append(data) data = int(array[10],16)*256+ int(array[11],16) #大气环境PM1.0 PM1.append(data) data = int(array[12],16)*256+ int(array[13],16) #大气环境PM2.5 PM2_5.append(data) data = int(array[14],16)*256+ int(array[15],16) #大气环境PM10 PM10.append(data) except ValueError: continue; #将数据存到新的列表 yvalue.append(sPM1) yvalue.append(sPM2_5) yvalue.append(sPM10) yvalue.append(PM1) yvalue.append(PM2_5) yvalue.append(PM10) #将字符串转为整型数据 deta = int(xtime[0]) for j in range(len(xtime)): xtime[j] = int(xtime[j])-deta for i in range(len(yvalue)): yvalue[i][j] = int(yvalue[i][j]) #X和Y坐标信息 plt.xlabel("Time(s)") plt.ylabel("Ug(PT_PM2.5)") #绘制曲线 for j in range(len(yvalue)): if j == 0: msg = "PT_sPM1.0" elif j == 1 : msg = "PT_sPM2.5" elif j == 2: msg = "PT_sPM10" elif j == 3: msg = "PT_PM1.0" elif j == 4: msg = "PT_PM2.5" else: msg = "PT_PM10" plt.plot(xtime,yvalue[j],label=msg,linewidth=2) plt.legend() plt.show()
5. 实验结果
注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。
标签:python