Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 24, 2017 02:39:02

garamond
Зарегистрирован: 2017-01-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как работать через переходник USB->RS239

Привет всем.
Товарищи, помогите нубу разобраться.
Есть фискальный принтер с COM-разъемом. Надо заставить его от компа, где такого разъема нет печатать от свмописной проги.
Нашел переходник COM<->USB. В Линуксе переходник определился. Есть файл в папке /dev/serial со ссылкой на /dev/ttyUSB0. Прога формирует bytearray с массивом байт, которые надо отправить. Как в Питоне правильно работать с такой конфигурацией.
Пробовал через пакет PySerial

 import serial
conn = serial.Serial()
conn.port = "/dev/ttyUSB0"
conn.baudrate = 115200
conn.bytesize = serial.EIGHTBITS #number of bits per bytes
conn.parity = serial.PARITY_NONE #set parity check: no parity
conn.stopbits = serial.STOPBITS_ONE #number of stop bits
conn.timeout = None          #block read
#conn.timeout = 1            #non-block read
#ser.timeout = 2              #timeout block read
conn.xonxoff = False     #disable software flow control
conn.rtscts = True     #disable hardware (RTS/CTS) flow control
conn.dsrdtr = True       #disable hardware (DSR/DTR) flow control
#conn.writeTimeout = 2     #timeout for write
conn.open()
conn.write(b'\x01\x25\x21\x26\x00\x05\x00\x00\x37\x31\x03') #Строка, которую надо отправить на принтер

Пробовал через PyUSB
 import usb.core
import usb.util
dev = usb.core.find(idVendor=0x067b, idProduct=0x2303)
 # was it found?
 if dev is None:
    raise ValueError('Device not found')
 s=b'\x01\x25\x21\x26\x00\x05\x00\x00\x37\x31\x03'
reattach = False
if dev.is_kernel_driver_active(0):
    reattach = True
    dev.detach_kernel_driver(0)
    dev.set_configuration()
 
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
    intf,
#match the first OUT endpoint
    custom_match = \
lambda e: \
    usb.util.endpoint_direction(e.bEndpointAddress) == \
    usb.util.ENDPOINT_OUT)
    
ep.write(s)

Ну никак эта шайтан-машина не хочет ничего отправлять. Правильно ли я делаю? Где ошибка? Хоть пните в нужную сторону.
Может принтер дурку валяет. Можно ли ак-то проверить, что данные ушли?

Заранее благодарен.

Отредактировано garamond (Фев. 24, 2017 02:44:20)

Офлайн

#2 Фев. 25, 2017 02:20:58

garamond
Зарегистрирован: 2017-01-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как работать через переходник USB->RS239

Все. Тема закрыта.
Если кому интересно, оба варианта правильны. Проблема была в формировании строки для отправки.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version