Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 1, 2018 09:24:32

viktand
Зарегистрирован: 2018-07-31
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

чтение/запись устройства

Здравствуйте.

Мне потребовалось переделать программу, написанную на C# и работающую под mono на Raspberri Pi на аналог на python. Я в python'е не очень понимаю и столкнулся с такой проблемой:

Программа управляет чековым принтером и просто пишет и читает байты в /dev/usb/lp0

Я использовал конструкцию вида

 with open('/dev/usb/lp0', 'wb') as prnDev:
            for b in byte:
                prnDev.write(chr(b))

первый раз (при старте) туда передается массив byte с последовательностью байтов инициализации принтера и это работает. Как мне кажется. Но при следующих обращениях к принтеру программа виснет на последней строке этого фрагмента. И даже перезапуск не помогает. Только перезагрузка Rospberry. Такое ощущение, что /dev/usb/lp0 не освобождается после выхода из with и поэтому все последующие попытки что-то читать/писать оказываются безуспешными. В чем может быть проблема? как гарантированно закрыть подключение к устройству?

Офлайн

#2 Авг. 2, 2018 23:34:40

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

чтение/запись устройства

Так просто ты туда ничего не запишешь, а если и запишешь то совешишь большую ошибку. Есть такая штука - файловая система. Перезаписав хотябы несколько байт первого раздела - file system kapec. И туда ты уже ничего не запишешь.
А чтобы закрыть стрим надо использовать:

 prnDev.close()
UPDATE: про несколько байт овеврайта перегнул. Но все-равно как то странно ты подходишь к задаче.



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Отредактировано DamMercul (Авг. 2, 2018 23:35:27)

Офлайн

#3 Авг. 3, 2018 12:48:31

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

чтение/запись устройства

DamMercul
вы бы думали прежде чем писали. Блочные устройства в UNIX подобных ОС вам о чем нибудь говорит?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version