2017-04-21 10 views
-2

私はPython 3でグラフィカルインターフェイスを開発していますので、GRBLにファイル(gcode)を送るのに役立つコードがいくつか見つかりましたが、このコードはPython 2 。私はそれを実行すると、私のpythonに3TypeError: 'str'はバッファインターフェイスをサポートしていません

import serial 
import time 

# Open grbl serial port 
s = serial.Serial('/dev/ttyS0',115200) 

# Open g-code file 
f = open(r'/home/pi/Downloads/spinner.gcode') 

# Wake up grbl 
s.write("\r\n\r\n".encode("utf8")) 
time.sleep(2) # Wait for grbl to initialize 
s.flushInput() # Flush startup text in serial input 

# Stream g-code to grbl 
for line in f: 
    l = line.strip() # Strip all EOL characters for streaming 
    print ('Sending: ' + l) 
    s.write(l + '\n') # Send g-code block to grbl 
    grbl_out = s.readline() # Wait for grbl response with carriage return 
    print(' : ' + grbl_out.strip()) 

# Wait here until grbl is finished to close serial port and file. 
raw_input(" Press <Enter> to exit and disable grbl.") 

# Close file and serial port 
f.close() 
s.close() 

を動作するようにプログラムを変更しようとした、それは私にエラーを示しています

TypeError : 'str' does not support the buffer interface

+2

フルスタックトレース –

+2

's.write( "\ rをする\ n個ます\ r \ n")を追加してください'右を見ていない( "UTF8")をコードします。 ... –

+0

はい正しい構文は:s.write( "\ r \ n \ r \ n" .encode( "utf8"))、それは私に同じ問題を示しています:( –

答えて

0

はちょうどあなたがスタックトレースを示さなかったことから推測し、またはエラーを生成する行ですらあります。しかし、私はそれを固定することができると思います。

s.write((l + '\n').encode("utf8")) 
+0

それは動作しません:(、TypeError:暗黙的に 'bytes'オブジェクトをstrに変換できません –

+0

@SkaouzMacacあなたは本当にどちらの行があなたのエラーを生成しているかを報告する必要があります(あなた自身に注意を払う必要があります)。 "バイトオブジェクトを暗黙的にstrに変換できません"という場合は、おそらく2行下の '+'操作です。避けるそれは 'grbl_out = s.readline()。decode( 'utf8')' – jez

+0

@jezありがとうございます、しかし問題は今です:AttributeError 'NoneType'オブジェクトには属性 'strip'がありません –

関連する問題