2011-02-09 64 views
0

我試圖從連接到Arduino的外部設備讀取Blender中的數據並保存到文件中。但它給出了這個錯誤使用Python在Blender中進行文件處理時出錯

SyntaxError: invalid syntax 
Python script error from controller "contr#CONTR#1": 
Traceback (most recent call last): 
    File "SerialBGE.py", line 6, in <module> 
    f=open('abc.dat', 'r') 
IOError: [Errno 2] No such file or directory: 'abc.dat' 

我的代碼是正確的,我不明白這個問題。

serial.py

import GameLogic 
import pickle 
import os 

os.system('dane.py') 
f=open('abc.dat', 'r') 
print "abc.dat = " 
x=pickle.load(f) 
print x 
print "end of abc.dat" 
f.close(); 
y=x[:] 
for z in x: 
    y.remove(z) 
    print "removing " + str(z) 
    print str(y) + " and " + str(x) 
    f=open('abc.dat', 'w') 
    pickle.dump(y, f) 
    f.close() 
    contr = GameLogic.getCurrentController() 
    location=contr.actuators["loc"] 
    y = 0.001*(ord(z)-128) 
    location.dLoc=[y,0,0] 
    contr.activate(location) 

dane.py:

import serial 
import pickle 

with serial.Serial(COM3,9600) as port, open('abc.dat','r') as f: 
    for i in range(0, 10): 
     x = port.read(size=1) 
     y=pickle.load(f) 
     f.close() 
     f=open('abc.dat','w') 
     for i in x: 
      y.append(i) 
     pickle.dump(y,f) 
     f.close() 
port.close() 

回答

3

你所得到的錯誤,因爲文件 'abc.dat' 不存在,運行該程序的第一次。

在'abc.dat'存在之前,您需要處理初始情況,當您第一次運行程序時。

+0

因此,閱讀,追加,然後寫入最終數據。在那種情況下,我的代碼很好。當我把自己的數據,而不是port.read(),它工作正常。 – change 2011-02-10 10:30:07