为什么python的调用';s fcntl.ioctl提供了无效的参数错误

为什么python的调用';s fcntl.ioctl提供了无效的参数错误,python,python-2.7,fcntl,Python,Python 2.7,Fcntl,我试图以以下方式使用python中的命令fcntl.ioctl buf = array.array('h', [0]) fcntl.ioctl(file_handler, 21780) fcntl.ioctl(file_handler, 21780, buf) fcntl.ioctl(file_handler, 21780, buf, 1) i、 e.它的所有三个版本,带有文件处理程序一个使用打开创建的文件处理程序。每个都给了我相同的错误: IOError: [Errno 22] Invali

我试图以以下方式使用python中的命令
fcntl.ioctl

buf = array.array('h', [0])
fcntl.ioctl(file_handler, 21780)
fcntl.ioctl(file_handler, 21780, buf)
fcntl.ioctl(file_handler, 21780, buf, 1)
i、 e.它的所有三个版本,带有
文件处理程序
一个使用
打开
创建的文件处理程序。每个都给了我相同的错误:

IOError: [Errno 22] Invalid argument

简单问题:如何正确地调用
fcntl.ioctl
?或者改为使用
fcntl.fcntl

看起来您使用了错误的文件。您的示例C代码引用了
/dev/bus/usb/
,而不是
/dev/ttyACM0

,看起来您使用了错误的文件。您的示例C代码引用的是
/dev/bus/usb/
,而不是
/dev/ttyACM0

魔法常量应该做什么,为什么不使用
fcntl
termios
中的符号常量?首先,
文件处理程序
是一个usb设备(例如
/dev/ttyACM0
),数字应该硬重置设备(见附件),因此,我在
fcntl
termios
中找不到相应的变量名。如果您知道它们,这无疑会方便得多。总之,我想按照链接中所述,仅在python下硬重设连接到给定端口的设备。我猜这些设备不是由python标准libr导出的ary.如果第一个
ioctl
失败,那么显然21780不是一个有效的操作。您可能缺少一个驱动程序。@larsmans:相应的C代码似乎正常工作,最后没有错误消息,幻数是21780,在大多数(?)案例21780操作的重置似乎有效。魔法常量应该做什么,为什么不在
fcntl
termios
中使用符号常量?首先,
file\u handler
是一个usb设备(例如
/dev/ttyACM0
),数字应该硬重置设备(请参阅),因此,我在
fcntl
termios
中找不到相应的变量名。如果您知道它们,这无疑会方便得多。总之,我想按照链接中所述,仅在python下硬重设连接到给定端口的设备。我猜这些设备不是由python标准libr导出的ary.如果第一个
ioctl
失败,那么显然21780不是一个有效的操作。您可能缺少一个驱动程序。@larsmans:相应的C代码似乎工作了,最后没有错误消息,幻数是21780,在大多数情况下,用21780操作进行重置似乎工作正常。