Python Scripts in C++



  • Hallo mal wieder !

    VOr kurzem hatte ich erste begegnungen mit der Programmiersprache Python und war begeistert, wieviel einfacher sich manche Aufgaben mit Python und den entsprechenden Modulen lösen lassen. Da ich aber weiterhin C++ als Hauptsprache beibehalten will wollte ich mal fragen inwiefern es Möglich ist von einem C++ Programm ein Python Script ausführen zus lassen. Mein Beispielprogramm soll auf die serielle Schnittstelle zugreifen - in Python lässt sich dies mit dem Modul serial problemlos mit wenigen Codezeilen regeln. Einfachstes Beispiel hierfür wäre folgendes:

    import serial
    ser = serial.Serial(0)
    text = ser.readline()
    ser.close()
    

    Liesse sich ein solches Script in ein C++ Programm integrieren, sodass ich die von der Seriellen Schnittstelle empfangen Daten im C++ Programm weiterverwenden kann? Könnte das C++ Programm auch Daten an das Script übergeben? Kurz: C++ übernimmt die Auswertung und Python die Kommunikation mit der Schnittstelle.
    Wenn ja wie? Bisher konnte ich nur heausfinden, dass man ein Script integrieren kann, nicht aber, wie man Daten mit dem Script austauscht. Vielen dank schonmal



  • Boost.Python hilft dabei extrem.



  • Lol, eigentlich macht man es umgekehrt: C++ für die systemnahen Sachen und eine höhere Sprache (Python) für die Verarbeitung 😃

    Warum schreibst du die Anwendung nicht gleich ganz in Python? In C++ ist es auch nicht schwer diese Ports anzusprechen.



  • Ja Spinn ich denn?? schrieb:

    Lol, eigentlich macht man es umgekehrt: C++ für die systemnahen Sachen und eine höhere Sprache (Python) für die Verarbeitung 😃

    Warum schreibst du die Anwendung nicht gleich ganz in Python? In C++ ist es auch nicht schwer diese Ports anzusprechen.

    Ja, das ist mal geil. Naja man wird den Thread wohl bald in TGGCs Netzkultur ziemlich weit oben finden 😃



  • Dafür, dass es ja in C++ ach so einfach sein soll, die Schnittstelle anzusprechen gibt es hier im Forum aber recht wenige Hits, wenn man nach serielle Schnittstelle oder RS232, etc. sucht. Außerdem möchte ich die Winapi meiden, denn man muss sehr viel Code schreiben, um verhältnismäßig wenig zu bewirken.

    Warum ich nicht gleich in Python schreibe? Weil ich C++ Programme kompilieren kann und nicht allen Leuten erklären muss, wie man Python installiert.



  • Weil ich C++ Programme kompilieren kann und nicht allen Leuten erklären muss, wie man Python installiert.

    Aber Leute, die nicht fähig sind ein einfaches Programm zu laden und zu installieren, traust du im ernst zu, dass sie in Python programmieren können?!



  • Ich habe mich villeicht falsch ausgedrückt. Wenn ich ein Programm veröffentlichen möchte und es sich bei den Nutzern nicht um (Hobby-)programmierer handelt, so ist der Aufwand für sie doch am geringsten, wenn ich ihnen einfach eine fertige .exe anbieten kann. Dadurch ersparen sie sich das runterladen und installieren von Python, oder?

    Ich selbst bin ein relativ unerfahrener Programmierer, wie ich leider all zu oft feststellen muss. Ich weiss zwar was Vererbung und Polymorphie sind, aber ich scheitere schon, wenn es um die Erstellung eines Makefiles oder um das Einbinden einer Bibliothek in mein Programm geht. Python gefällt mir, weil ich nicht lange dem Kompiler&Linker erzählen muss, was ich von ihnen will. Ich gebe einfach import xxx ein und schwupp - habe ich die gewünschte Funktionalität integriert.



  • Das ist jetzt aber auch kein guter Grund. Wie wäre es, wenn du einfach anstatt deiner exe dann den Interpreter ebenso mitlieferts?
    Und für die, die ihn schon haben die seperaten Dateien.

    EDIT:
    Dein zweites Argument ist gut, aber das bekrätigt ja die Aussage, dass du lieber gleich alles in Python machen kannst.



  • Das wäre eine Möglichkeit. Villeicht sollte ich mich wirklich weiter in Richtung Python orientieren, wenn ich mit meinem derzeitigen Projekt fertig bin. Es ist mit seinen um die 2000 Codezeilen zwar nicht sehr groß, aber irgendwie wirt es auf mich langsam doch gigantisch ^^ Qt lässt sich ja zum Glück mit pyqt auch von Python aus nutzen.

    Edit: Ein weiteres Argument pro python: Ich kann mir die erneute Kompilierung der unter Linux geschriebenen Sources sparen.



  • Hier noch eine sehr gute und bequeme Klasse, um mit C++ unter Windows die serielle Schnittstelle zu benutzen:
    http://www.codeproject.com/KB/system/serial.aspx

    Simon



  • Folgendes ist auch sehr nützlich, wenn man Python-Scripts an DAUs weitergeben möchte: http://www.py2exe.org/


Anmelden zum Antworten