2011-01-08 101 views
2

我正在使用以下Python代碼來存儲從加速度計MMA7361L接收到的數據。該文件已創建,但沒有任何數據正在寫入?使用Python將串行數據存儲到文本文件中

我需要將數據存儲到文件,以防止數據丟失。數據由作爲我的微控制器的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() 
+1

的代碼,你顯示正如註釋所示,在`r + b`模式下打開文件,而不是`a + b`模式。另外,給二進制文件一個'txt'擴展名至少是令人困惑的。 – aaronasterling 2011-01-08 09:01:41

回答

1

更改文件模式爲'ab',它應該工作。 a + b僅在您將數據附加到數據時想要讀取內容時纔有用。

除非你在這裏需要認真優化,它更易於閱讀開頭的整個文件,然後只將數據追加到它與「AB」模式重新打開它。

3
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() 
0

你可以這樣做,我現在正在這樣做,它的工作原理。我還有另一個告訴你什麼com端口正在被使用,並且com端口是否存在運行while循環,如果沒有,關閉文件。

進口串行 導入CSV

文件=的raw_input( '文件另存爲: ') saveFile的=打開(文件, 'W')

的SerialPort =的raw_input(' 輸入端口:') 端口1的serialport =

打印 「連接到......」,PORT1

的Arduino = serial.Serial(PORT1,9600)

打印 「的Arduino檢測」

而真: time.sleep(0.01) 數據= arduino.readline() saveFile.write(數據) 打印數據

相關問題