2011-03-08 3 views
0

USB 에뮬레이트 된 직렬 회선 (FT2232HL)을 통해 내 HW와 통신합니다. 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 로그의 크기). 나는 또 다른 하드웨어 (Belkin usb-serial converter with F5U103v)를 사용하여 동일한 결과를 얻었다. 나는 약간의 io 버퍼가 될 수 있다고 생각하지만 그것에 관한 정보를 찾을 수 없었다.

EDIT : 루프백에서 수신 한 데이터가 들어있는 첫 번째 cutecom 로그의 크기는 32725 바이트 (정확히 42126 바이트를 전송)입니다. 로그 파일을 자르지 않고 스크립트를 두 번 실행하면 크기는 81838 바이트가됩니다. 또한 device.write() 호출의 반환 값을 확인했는데 정확하게 42126입니다.

답변

0

내 바보 같은 잘못이었습니다. cutecom에서 로그 파일을 닫지 않았으므로 누락 된 데이터는 write() 버퍼에있었습니다. 다른 버그로 인해 장치가 작동하지 않았습니다.