pyserial входен буфер

Комуникирам с моя HW през USB емулирана серийна линия (FT2232HL). Трябва да изпратя растерно изображение към него, като използвам pySerial и Python Imaging Library. Ето кода:


#!/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"

Проблемът е, че не работи. Настроих loopback, заснемайки го с cutecom, но изглежда, че се предават само около 30kB (размер на cutecom log). Опитах и ​​друг хардуер (USB-сериен конвертор на Belkin с F5U103v) със същия резултат. Предполагам, че може да е някакъв io буфер, но не можах да намеря информация за него.

РЕДАКТИРАНЕ: размерът на първия журнал на cutecom (който съдържа данни, получени от loopback) е 32725 байта (изпраща точно 42126 байта). Когато стартирам скрипта два пъти, без да съкращавам регистрационния файл, неговият размер е 81838 байта. Проверих и върнатата стойност на повикването device.write(), тя е точно 42126.


person Adam Trhon    schedule 08.03.2011    source източник


Отговори (1)


Това беше моя глупава грешка. В cutecom не затворих лог файла, така че липсващите данни бяха в буфера write(). Устройството не работи поради друг бъг.

person Adam Trhon    schedule 20.03.2011