python呼叫C語言裡面的函式

2021-08-13 11:21:01 字數 1178 閱讀 6325

在arm做接收dtu引數的時候,始終無法獲取到dtu對映檔案(/dev/dtu)裡面的資料(可能沒找到方法

剛開始用os去開啟

#!/usr/bin/python

# -*- coding: utf-8 -*-

import os

fd = os.open('/dev/dtu',os.o_rdwr)

ret = os.read(fd,10)

print ret

得到的始終為空,後來發現用c語言裡面的函式可以得到資料,寫了乙個check.c檔案:

#include #include #include #include #include #include #include #include #include #include #include #define  mcu_dido_ioc_magic    'd'

#define io_gpio_set_output _io(mcu_dido_ioc_magic,0)

#define io_gpio_reset_output _io(mcu_dido_ioc_magic,1)

#define io_gpio_get_input _ior(mcu_dido_ioc_magic,2,int)

int testdi()

ret = ioctl(dtu_fd,io_gpio_get_input,&input_value);

close(dtu_fd);

if(ret == 0)

return input_value;

else

return -1

}

用arm-linux-gcc -o check.so -shared -fpic check.c生成check.so檔案(每個人的交叉編譯鏈不一樣)

寫乙個get_value.py:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import ctypes

ll = ctypes.cdll.loadlibrary

lib = ll("/check.so")

print lib.testdi()

執行後得到自己想要的數

C語言 C語言裡面的冒號

原博 看下面一段 cpp view plain copy struct test 這裡提出的問題是,結構體裡面的冒號的作用是什麼。這種冒號的用法不是我隨便杜撰的,而是在實際的 裡面看到的。在c 的函式定義時,引數列表之後可以使用冒號來給變數賦值,這裡的冒號是不是也起著給結構體成員賦預設值的作用呢?是...

C語言裡面的指標問題

一 變數與指標 1.變數 c語言中每次宣告乙個變數,則內存在會申請乙個該變數型別應該佔據的空間.假設int 型別佔四個位元組 不同系統的位元組數不同 那麼語句 int a a 10 即在記憶體中申請了四個位元組的空間,並將其命名為 a,其值為 10.2.變數位址 int型變數 a在記憶體有乙個具體的...

C呼叫lua的table裡面的函式

網上搜尋c c 呼叫lua函式,有一大堆複製貼上的。但是搜尋 c呼叫lua的table裡面的函式 怎麼就沒幾個呢?經過探索,發現其實邏輯是這樣的 1.根據name獲取table 並判斷是否為table 2.根據 name2 獲取table的成員變數或方法,並判斷棧頂的是否為函式 3.將函式的引數壓棧...