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
