首先,我必须说我是Python编程的初学者。我已将传感器连接到RPi 3 UART端口。我在这个传感器的互联网工作程序中找到了。稍微修改了一下,就把它写给了测量文件的结果。代码如下:
import serial
import time
import sys
import json
import datetime
import binascii
class pmsA003():
def __init__(self, dev):
self.serial = serial.Serial(dev, baudrate=9600,
timeout=3)
def __exit__(self, exc_type, exc_value, traceback):
self.serial.close()
def setIdel(self):
idelcmd = b'\x42\x4d\xe4\x00\x00\x01\x73'
ary = bytearray(idelcmd)
self.serial.write(ary)
def setNormal(self):
normalcmd = b'\x42\x4d\xe4\x00\x01\x01\x74'
ary = bytearray(normalcmd)
self.serial.write(ary)
def vertify_data(self):
if not self.data:
return False
return True
def read_data(self):
while True:
b = self.serial.read(1)
if b == b'\x42':
data = self.serial.read(31)
if data[0] == b'\x4d':
self.data = bytearray(b'\x42' + data)
if self.vertify_data():
return self._PMdata()
def _PMdata(self):
d = {}
d['apm10'] = self.data[4] * 256 + self.data[5]
d['apm25'] = self.data[6] * 256 + self.data[7]
d['apm100'] = self.data[8] * 256 + self.data[9]
return d
if __name__ == '__main__':
con = pmsA003('/dev/ttyAMA0')
d = con.read_data()
print(d)
with open('/home/pi/ramdisk/PMA003', 'a') as f:
f.write("%s" % (d))
结果,我得到了控制台和文件字符串,如下所示:
{'apm10': 150, 'apm100': 244, 'apm25': 228}
但我的目标是在文件格式中使用CSV文件:
,value_of_apm10, value_of_apm25, value_of_apm100
有人可以帮我修改上面的代码吗?
答案 0 :(得分:0)
您需要导入Python CSV库,然后创建一个DictWriter
对象。 (请参阅Python文档,了解如何执行此操作 - 它非常简单)。
创建writerow()
时,您需要为其提供所需列标题的列表。然后,对于要写入CSV文件的每条记录,只需创建一个包含与列标题对应的键的字典,然后调用DictWriter的{{1}}方法。
有一个确切需要做的事情的例子here.