2011-03-08 239 views
0

我通過USB仿真串行線(FT2232HL)與我的硬件通信。我需要使用pySerial和Python Imaging Library將位圖發送給它。這裏是代碼:pyserial輸入緩衝區


#!/usr/bin/python2 

from PIL import Image 
import serial 
import string 

img = Image.open("db/bitmap.bmp") 
img = img.convert("L") 
img = img.tostring() 

print "img length: " + `len(img)` 

device = serial.Serial("/dev/ttyUSB1", 115200, timeout=30) 
device.write(size) 
device.write(img) #the bitmap has about 40kB 
print "image written" 

問題是它不起作用。我設置了一個迴環,用cutecom捕捉它,但似乎只傳輸了大約30kB(cutecom日誌的大小)。我還嘗試了另一個硬件(帶有F5U103v的Belkin usb串行轉換器),結果相同。我想這可能是一些io緩衝區,但我找不到任何有關它的信息。

編輯:第一個cutecom日誌(包含從回送接收的數據)的大小是32725字節(正好發送42126字節)。當我在不截斷日誌文件的情況下運行腳本兩次時,它的大小爲81838字節。我也檢查了device.write()呼叫的返回值,這正是42126.

回答

0

這是我的愚蠢的錯。在cutecom中,我沒有關閉日誌文件,所以缺少的數據位於write()緩衝區中。設備因另一個錯誤而無法工作。