繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM