Python接受通过串行通信传入的第一个值

Python接受通过串行通信传入的第一个值,python,python-2.7,csv,Python,Python 2.7,Csv,我有一个Nodemcu ESP8266通过串行连接连接到我的Raspberry Pi。Nodemcu经常(每5分钟)向我的Pi发送数据,但是如果我没有在Pi上运行脚本,那么这些数据将不会以任何方式使用。数据只是一个数字,通常在0-15之间。在Pi上,我试图编写一个CSV文件,其中包含来自Nodemcu的传入数据(带有时间戳),但是传入的第一个值会被吞没,直到第二个值传入。然后,第一个值写入CSV文件,但带有第二个值的时间戳 例如,Nodemcu发送以下消息: (时间戳不是由Nodemcu发送的,

我有一个Nodemcu ESP8266通过串行连接连接到我的Raspberry Pi。Nodemcu经常(每5分钟)向我的Pi发送数据,但是如果我没有在Pi上运行脚本,那么这些数据将不会以任何方式使用。数据只是一个数字,通常在0-15之间。在Pi上,我试图编写一个CSV文件,其中包含来自Nodemcu的传入数据(带有时间戳),但是传入的第一个值会被吞没,直到第二个值传入。然后,第一个值写入CSV文件,但带有第二个值的时间戳

例如,Nodemcu发送以下消息: (时间戳不是由Nodemcu发送的,我添加它们是为了比较) 08:04:15 1 08:09:16 2 08:14:16 3 08:19:16 4 08:24:17 5 08:29:17 6 08:34:17 7

脚本将其写入CSV文件: (这些时间戳写入CSV文件中) 08:09:16 1 08:14:16 2 08:19:16 3 08:24:17 4 08:29:17 5 08:34:17 6

我已经检查了串行连接(Pi上的引脚)和我在Nodemcu上运行的脚本,它们看起来非常好,所以我假设它是我Pi上的脚本。 以下是我在Pi上运行的脚本:

import serial
import time
import csv
from datetime import datetime
value_mcu = ''
s = serial.Serial('/dev/ttyAMA0', 74880) 
time.sleep(5)

today = datetime.today().strftime('%Y-%m-%d')
with open('/home/pi/Desktop/CSV/' + today + '.csv','w') as db:
    db.write('Timestamp,Value\n')

while True:
    try:
        while value_mcu.strip() == '':
            value_mcu = s.readline().decode('utf-8').strip()
        today = datetime.today().strftime('%Y-%m-%d')
        now = datetime.today().strftime('%H:%M:%S')

        with open('/home/pi/Desktop/CSV/' + today + '.csv','a') as db:
            db.write(now + ',' + value_mcu + '\n')
        value_mcu = ''
    except KeyboardInterrupt:
        s.close()
我希望有人知道这里发生了什么。
提前感谢您的帮助。

这听起来像是NodeMCU在号码之前而不是之后发送新行。您是否使用其他终端应用程序(如hercules)检查了ESP发送的数据?我检查了ESP发送的数据,它没有发送任何新行,只发送了一个号码。