2010-04-24 143 views
0

我正在运行一个python程序。当获得的这些行:
f = open("/dev/bus/usb/007/005", "r")
x = fcntl.ioctl(f.fileno(), 0x84005001, '\x00' * 256)
失败说:
IO错误:[错误1]不允许操作
什么导致这个问题呢?python操作不允许(graphtecprint)

+0

哪一个给出错误,第一行或第二行。回溯说什么? – joaquin 2010-04-24 20:34:38

+0

第二行是 – eyecreate 2010-04-24 20:40:29

回答

1

文件系统权限?

ls -l/dev/bus/usb/007/005是什么意思?

确实cat/dev/bus/usb/007/005工作还是报告同样的错误?

+0

输出的第一行是: 'crw-rw-rw- 1 root lp 189,772 24.04.2010 15:58/dev/bus/usb/007/00' cat命令打印出一些奇怪的字符到终端。 – eyecreate 2010-04-24 20:42:09

+0

另外,以根用户身份运行输出相同的东西。 – eyecreate 2010-04-24 20:48:25

+1

然后可能是ioctl失败。我对USB设备和ioctls没有更深入的了解。 你正在尝试做的IOCTL可能是 - 错幻数 - - 只能由超级 允许只适用于文件打开R/W 对不起,我只能猜测 – plaisthos 2010-04-24 20:50:02

0

的第三个参数fcntl.ioctl,如记录here,应该是一个1024字节的字符串(不只是256),或者,更好的,一个可能甚至更大尺寸可写buffer - 底层对象可以是一个字节array.array 。不幸的是,您需要事先知道结果需要多少空间,但您可以使用几KB(即ioctl似乎是“获取设备ID”代码)来安全地播放它,但我不确定最大结果长度可能)。