Tôi đang cố tạo một tập lệnh trong python gửi dữ liệu qua cổng song song. Tôi đang tạo mô-đun của riêng mình bằng ngôn ngữ C.Phương thức không có giá trị trả về trong mô-đun mở rộng python c
Vấn đề là: khi tôi cố gắng thực thi mô-đun của mình, sự cố python. Không có lỗi, không có dữ liệu, không có gì. Nó đơn giản đóng lại.
Đây là mô-đun của tôi:
#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);
}
(Nó hoạt động mà không cần tất cả mớ hỗn độn python) tôi biên dịch nó qua distutils và sau đó, trong thiết bị đầu cuối (sử dụng Xubuntu), tôi đặt:
import paralelo
while True:
paralelo.paralelo(255)
Và ở đây, nó đi ra khỏi python, nó đặt "markmb @ ..."
Cảm ơn trước!
Tôi chưa tạo mô-đun Python của riêng mình trong C, nhưng trong hàm paralelo của bạn, nơi nó được cho là trả về PyObject *, tại sao bạn trả về 1 ở cuối? – lloydm
Nó thực sự không nên trở về không có gì, nhưng tôi để lại cho nhớ nếu tôi đã bao giờ làm một mô-đun một lần nữa – markmb
Vì vậy, làm thế nào về nếu bạn trở về NULL thay thế? Thay vì 1 là con trỏ không hợp lệ. – lloydm