我试图在通过并行端口发送数据的python中创建一个脚本。我正在用C语言创建我自己的模块。python c扩展模块中没有返回值的方法
问题是:当我尝试执行我的模块时,python崩溃。没有错误,没有数据,什么都没有。它只是关闭。
这是我的模块:
#include <Python.h>
#include <sys/io.h>
#define BaseAddr 0x378
/*----------------------------------------------------------------------------------
Este es un módulo destinado a controlar el puerto paralelo.
Probablemente tenga que ser ejecutado como administrador.
Created by markmb
------------------------------------------------------------------------------------*/
static PyObject *
paralelo(PyObject *self, PyObject *args){
int pin;
ioperm(BaseAddr,3,1);
if (!PyArg_ParseTuple(args, "i", &pin))
return NULL;
outb(pin,BaseAddr);
ioperm(BaseAddr,3,0);
return 1
}
PyMethodDef methods[] = {
{"paralelo", paralelo, METH_VARARGS, "Sends data through a parallel port"},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC
initparalelo(void){
(void) Py_InitModule("paralelo", methods);
}
(它的工作原理没有所有蟒蛇一塌糊涂) 我编译通过的distutils,然后在终端(使用Xubuntu上),我把:
import paralelo
while True:
paralelo.paralelo(255)
在这里,它走出蟒蛇,它把“markmb @ ...”
在此先感谢!
我还没有在C中创建自己的Python模块,但是在函数paralelo中,它应该返回PyObject *,为什么你在最后返回1? – lloydm
它真的不应该不会返回任何东西,但是如果我再次执行另一个模块,我留下了回忆。 – markmb
那么如果您返回NULL,那么该怎么办?而不是1,这是一个无效的指针。 – lloydm