用于将传感器数据写入十进制格式的文本文件的python代码

时间:2017-04-21 05:49:28

标签: python

我正在为我的项目使用VB-8200振动计。它以16位数格式提供振动测量。例如。 000001 ???? 0004这意味着振动值为0.4 mm / s。我想编写一个python代码,用于在收到后将0.4发送到文本文件。 我写的代码如下:

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时,它正在工作。但我需要将整数格式的数据发送到文本文件,以便我可以在thingpeak中绘制它。

1 个答案:

答案 0 :(得分:0)

在这一行:

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')

它不会有任何前导零。