从Arduino到Python的串行数据,保存数据tp文件并处理D

2024-04-18 15:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

刚刚开始编程,但请欣赏python在收集和后处理数据方面的强大功能。所以我只是想把自己推过去。你知道吗

我只是用这个代码通过串口滴入数据,避免了任何缓冲区问题

void setup() {
  Serial.begin (9600);

}

void loop() {
  delay(1000);
  int data = 0;
  while (data<50){
    data++;
    Serial.println(data);
    delay(1000);
   }
}

然后我想用python读取这些数据,并在数据进入时将其保存到一个txt文件中,然后使用这个脚本进行一些简单的平均(只是为了提高我的理解力)

import serial 
import time 

ser = serial.Serial('COM7', baudrate= 9600, timeout = 1)
time.sleep(3)
numPoints = 50
dataList = [0]*numPoints
dataFile = open('SerialDataTest.txt', 'w')
numRowsCollect = 50

def getValues():

    ser.write(b'g')
    arduinoData = ser.readline().decode().split('\r\n')  
    return arduinoData[0]

def printToFile(arduinoData,index):

    with open('SerialDataTest.txt', 'w') as dataFile:

        dataFile.write(arduinoData)


def getAverage(dataSet,row):

    dataAvg = sum(dataSet)/len(dataSet)
    print('Average for ' + str(row) + ' is: ' +str(dataAvg))

while(1):

    for row in range(0,numRowsCollect):
        for i in range(0,numPoints):
            data = getValues()
            printToFile(data,i)
            dataInt = int(data)
            dataList[i] = dataInt

            getAverage(dataList,row)

    dataFile.close()
    break

然而,数据似乎根本没有保存,我有点困惑为什么,我已经尽力使用正确的操作,根据我所读的,但脚本返回

Average for 0 is: 0
Average for 0 is: 0
Average for 0 is: 0
etc.. 

我的文本文件是空白的:/任何你的经验指导将不胜感激。你知道吗

非常感谢您的时间


Tags: 数据txtfordataisdefserialdataset