我試圖在通過並行端口發送數據的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