Хранение последовательных данных в текстовый файл с использованием Python - PullRequest
2 голосов
/ 08 января 2011

Я использую следующий код Python для хранения данных, которые я получаю от акселерометра MMA7361L. Файл создан, но без записи данных?

Мне нужно сохранить данные в файл, чтобы предотвратить потерю данных. Данные отправляются Arduino, как мой микроконтроллер, который подключает мой акселерометр.

import serial

port = serial.Serial('COM4', 9600)

for i in range(0, 10):
    abc=open('abc.txt', 'r+b')  //append and binary(a+b) mode
    x = port.read(size=1)//   1 byte
    print x
    abc.write(x)
    abc.close()

port.close()

Ответы [ 3 ]

3 голосов
/ 08 января 2011
import serial

addr  = 'COM4'
baud  = 9600
fname = 'accel.dat'
fmode = 'ab'
reps  = 10

with serial.Serial(addr,baud) as port, open(fname,fmode) as outf:
    for i in range(reps):
        x = port.read(size=1)
        print x
        outf.write(x)
        outf.flush()
1 голос
/ 08 января 2011

Измените режим файла на 'ab', и он должен работать.a + b полезно только в том случае, если вы также хотите читать содержимое, когда добавляете к нему данные.

Если вам не нужна серьезная оптимизация, проще сначала прочитать весь файл, а затем просто добавить данные вон снова открывается в режиме 'ab'.

0 голосов
/ 28 июля 2016

Вы могли бы просто сделать это так, я делаю это сейчас, и это работает. У меня также есть другой, где он сообщает вам, какие com-порты используются, и если com-порт существует для запуска while loop и, если нет, для закрытия файла.

import serial
import csv

file = raw_input('Save File As: ')
saveFile = open(file, 'w')

serialport = raw_input('Enter Port: ')
port1 = serialport

print "Connecting to....", port1

arduino = serial.Serial(port1, 9600)

print "Arduino detected"

while True: 
    time.sleep(.01)
    data = arduino.readline()
    saveFile.write(data)
    print data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...