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

Я общаюсь со своим аппаратным обеспечением через эмулированную последовательную линию 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, но кажется, что передается всего около 30 КБ (размер журнала cutecom). Я также пробовал другое оборудование (USB-последовательный преобразователь Belkin с F5U103v) с тем же результатом. Я предполагаю, что это может быть какой-то буфер ввода-вывода, но я не смог найти никакой информации об этом.

РЕДАКТИРОВАТЬ: размер первого журнала 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