一个很好的例子是用于蟒linuxdvb和v412结合。 http://pypi.python.org/pypi/linuxdvb和http://pypi.python.org/pypi/v4l2,但这些都不是很Python的。只适用于Linux/Unix系统。
你必须将ARGS
结构翻译成Python可以理解的东西,在ctype
的帮助下。 的Operation
值是一样的一个中C
。
对应于C
呼叫
struct operation_arg {
int fields1;
int fields2;
}
struct operation_arg Args;
Args.field1 = data1;
Args.field2 = data2;
devicehandle = open("/dev/my_usb", O_RDWR);
retval = ioctl(devicehandle, Operation, &Args);
/* check retval value */
你必须在Python定义相应的CTYPE为struct operation_arg
。它会给这种代码
import ctypes
import linuxdvb
import fcntl
class operation_arg(ctypes.Structure):
_fields_ = [
('field1', ctypes.c_int),
('field2', ctypes.c_int)
]
Args = operation_args()
Args.field1 = data1;
Args.field2 = data2;
devicehandle = open('/dev/my_usb', 'rw')
# try:
fcntl.ioctl(devicehandle, operation, Args)
# exception block to check error
由设备独立,我应该说在LINUX处理器变种。 USB设备供应商是不是特别有帮助,但stracing一直在解开的情况一刀有用。不幸的是USB参数很模糊。 –