ctypes是python下的一个可以链接c/c++的一个库。
可以将C函数编译成动态链接库, 即window下的.dll文件或者是linux下的.so文件.
可以调用c/c++,做一些python不能做的事情。例如对硬件操作,快速计算,操作内存。
对串口操作:
import platform
from ctypes import *
if platform.system() == 'Windows':
libc = cdll.LoadLibrary('uart.dll')
elif platform.system() =='Linux':
libc = cdll.LoadLibrary('uart.so')
libc.printf('简单!\n')
调用c语言操作设备:
定义c库
#include <stdio.h>
#include "device_deader.h"
int i2c_init(void)
{
return true;
}
int i2c_read(char addr, char length)
{
}
int i2c_write(char addr, char length)
{
}
在linux环境下编译为动态链接库:gcc i2c.c -fPIC -shared -o i2c.so
现在就可以通过ctypes调用
from ctypes import *
#i2c_device = CDLL("./i2c.so")
i2c_device = ctypes.cdll.LoadLibrary("./i2c.so")
result = i2c_device.i2c_init()
read = i2c_device.i2c_read(0x10,1)
result = i2c_device.i2c_write(0x10,1)