2010-04-24 6 views
0

Я запускаю программу python. Когда получите на эти строки:
f = open("/dev/bus/usb/007/005", "r")
x = fcntl.ioctl(f.fileno(), 0x84005001, '\x00' * 256)
он не говорил:
IOError: [Errno 1] Операция не допускается
Что может быть причиной этой проблемы?операция python не разрешена (graphtecprint)

+0

, который дает ошибку, первую или вторую строку. что говорит трассировка? – joaquin

+0

Вторая строка: – eyecreate

ответ

1

Разрешения на файловую систему?

что делает ls -l/dev/bus/usb/007/005 сказать?

Кошка/dev/bus/usb/007/005 работает или он сообщает об этой же ошибке?

+0

Выход первого: 'crw-rw-rw- 1 корень lp 189, 772 24.04.2010 15:58/dev/bus/usb/007/00' Команда cat печатает некоторые странные символы на терминал. – eyecreate

+0

Кроме того, работа под управлением root выводит то же самое. – eyecreate

+1

, то, вероятно, ioctl не работает. У меня нет более глубокого знания устройств USB и ioctls. IOCTL вы пытаетесь сделать может быть - допускается только корнем - неправильно магическое число - работает только с файлами открыл г/ш К сожалению, я могу только догадываться, – plaisthos

0

Третий аргумент fcntl.ioctl, как описано here, должна быть либо 1024 байт строка (а не только 256), или, лучше, возможно, даже больше, записываемые-buffer - основной объект может быть array.array байтов , К сожалению, вам нужно заранее знать, сколько пространства потребуется для результата, но вы можете играть в него с несколькими килобайтами (что ioctl похоже на код «получить идентификатор устройства», но я не уверен, какая максимальная длина результата может быть).

Смежные вопросы