[英]python code for writing sensor data to a text file in decimal format
我正在为我的项目使用VB-8200振动计。 它以16位格式提供振动测量。 例如。 000001 ???? 0004 这意味着振动值为0.4 mm / s。 我想编写一个在收到文本后将0.4发送到文本文件的python代码。 我写的代码如下:
import string
import time
import serial
ser = serial.Serial(port='/dev/ttyS3', baudrate=9600, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=0.0005)try:
ser.isOpen()
print("serial port is open")
except:
print("error")
exit()
if(ser.isOpen()):
try:
while(1):
x=ser.readline().rstrip('\0')
print x
y= x[11:]
textdata = str(y)/10
f = open('/home/root/sensor_data.txt','a')
f.write(textdata+'\n')
time.sleep(1)
f.close()
except Exception:
print("error")
else:
print("cannot open serial terminal")
但是,它不起作用。 您能帮我解决这个问题吗? 当我不在/ 10 in时,textdata = str(y)/ 10,它正在工作。 但是我需要将整数格式的数据发送到文本文件,以便可以在Thingspeak中进行绘制。
在这一行:
textdata = str(y)/10
您正在尝试将字符串除以10,这没有任何意义。 由于y已经是一个字符串(您是通过从x去除前11个字符在上面获得的),因此首先要将其转换为整数:
iy = int(y)
该函数将为您处理前导零。
您知道iy是流速,单位为0.1mm / s。 要获得真实单位的流量,请执行以下操作:
flow_rate = iy * 0.1
要将整数写入文件,只需执行以下操作:
f.write(str(iy) + '\n')
它不会有任何前导零。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.