Мой проект для управления ЖК-дисплей с ST7565 контроллером на моем малина B2 Я пытаюсь использовать это C++ код, который управляет LCD: https://github.com/stephanel/ST7565-RPiс помощью C++ код из питона в общем-Lib для управления ЖК-
К сожалению, я не знаком с программированием на C, из-за этого я хочу вызвать функции C++ из python с помощью ctypes.
Я написал простой (простой для меня) C++ код для использования в качестве общей библиотеки
lcdcontrol.cpp:
#include <iostream>
#include <ctime>
#include <sstream>
#include <wiringPi.h>
#include <wiringShift.h>
#include "ST7565/ST7565.cpp"
using namespace std;
ST7565 glcd(PIN_SID, PIN_SCLK, PIN_A0, PIN_RST, PIN_CS);
void start();
void drawclock();
void setpix();
void clear();
void drawstring();
void drawbitmap();
void start(){
glcd.begin(0x18);
glcd.display();}
void setpix() {
glcd.setpixel(10, 10, BLACK);}
void clear() {
glcd.clear();}
void drawstring() {
glcd.drawstring(0, 0, "Test string");}
Мой питон код для тестирования:
#!/usr/bin/python
import os
from ctypes import *
from thread import start_new_thread
lcd_lib = cdll.LoadLibrary("lcdcontrol.so")
mylcd = lcd_lib
mylcd.start()
Теперь я должны скомпилировать мой код на C++ в общий libray. Я попробовал несколько способов. Но ничто не работает без проблем. Когда я запускаю код python, он возвращает то, что он не может найти функцию «digitalwrite», которая является частью листинга wirepi lib, или я получил ошибку, что он не может найти функцию «start».
Может ли кто-нибудь помочь мне. Я схожу с ума по этому поводу ... Возможно, существует совершенно другой способ использования кода C++ для ST7565 на python. Но это кажется мне самым простым способом ... до сих пор ...
Дайте Китону взгляд. Он немного привыкает, но он очень упрощает вызов C++ из Python. – zmbq
«Я попробовал несколько способов» и «проблемы» ничего нам не говорят. Покажите нам, как вы его скомпилировали, и расскажите, что это за проблемы. И покажите нам код Python, который действительно вызывает ошибку, и именно эта ошибка, а не просто смутное описание. – abarnert
Не можете ли вы использовать модуль Python [RPi.GPIO] (https://pypi.python.org/pypi/RPi.GPIO)? См. Например: [Python вождения ST7565 12864 LCD] (https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=25029) –