Я общаюсь со своим аппаратным обеспечением через эмулированную последовательную линию 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.