Hey Leute,
ich meld mich erst jetzt, da ich erst noch ein Problem mit meinem Cache hatte.
Also wieder zurück zu meinem Problem. Ich versuche mal mehr Code zu zeigen und mein Problem darzustellen, da ich denke das es noch nicht ganz verstanden wurde was ich meinte. Trotzdem danke für die schnellen und guten Antworten!
Hier ist die Funktion die meinen "Treiber" aufruft:
Code: Alles auswählen
void ExposDriver::RunDriver(ExposDriverModul *driver, int argc, char* argv[], Cache *cache){
Py_Initialize();
PySys_SetArgv(argc, argv);
PyRun_SimpleString(driver->getDriver());
Py_Finalize();
}
In der Cache Klasse liegen die Daten die an den Treiber übergeben werden sollen. Die Befüllung sieht wie folgt aus:
Code: Alles auswählen
void Cache::setData(unsigned char data[], unsigned int size){
newDataStruct();
if(CurrDataStruct->DataRead != NULL){
delete[] CurrDataStruct->DataRead;
}
CurrDataStruct->DataRead = new unsigned char[size];
memcpy(CurrDataStruct->DataRead, data, size);
}
Und newDataStruct():
Code: Alles auswählen
void Cache::newDataStruct(){
if(!FirstDataStruct){
FirstDataStruct = new Data;
CurrDataStruct = FirstDataStruct;
}else{
Data *next = CurrDataStruct->Next;
next = new Data;
CurrDataStruct = next;
}
CurrDataStruct->Next = nullptr;
}
An die Daten kommt man ran in dem ich mir mit dem Übergabeparameter cache die Funktion cache->FirstDataStruct() aufrufen kann.
So nun möchte ich diese Daten in eine Python Datei übergeben um dort mit den zu arbeiten.(Sind vom Typen unsigned char*) Im Prinzip egal was ich damit anstellen will, da ich nicht weiß wie diese dort ankommen.
Die anderen Sachen hatte ich ja schon oben in meinem
ersten Post gepostet. Ich hoffe ihr wisst jetzt was ich meine und habt vielleicht noch einen Tipp.
snafu hat geschrieben:
Falls du keine Instanz von Python aus übergeben möchtest, dann würde ich vorschlagen, du baust die Parameter, die zum Erstellen der Instanz benötigt werden, einfach als Argumente in `driverLoad()` ein. Intern würde aufgrund der Eingaben dann die passende Instanz mit deiner C++-Bibliothek erzeugt werden.
Das verstehe ich nicht ganz. Kannst du da noch einmal genauer was zu sagen? Meinst du argc und argv?
Vielen dank soweit.