Habe schon paar mal zu einem ähnlich Thema gefragt.
Es geht darum das ich einen Hexapod mittels einem seriellen Interface (genannt HexaComm) ansteuere.
Denn Source Code gibt es bereits in C++.
Meine Aufgabe ist es den bestehenden Source Code in eine dll zu packen und mit Python ein testprogramm zu schreiben.
Zum wrapper der einzelnen Funktionen hab ich SWIG verwendet und danach eine DLL erstellt. Bis hier her hat alles gut funktioniert.
Beim testprogramm erstellen kommt dann allerdings dieser Fehler:
Bei OpenSerialPort entsteht der Fehler:
Code: Alles auswählen
pSerial = 0
pSerial = Hexapod.SerialCommunication()
pSerial.OpenSerialport("Computer")
Traceback (most recent call last):
File "E:\Mulek\Dokumente\Eclipse\Hexapod\src\main.py", line 19, in <module>
pSerial.OpenSerialport("Computer")
File "E:\Mulek\Dokumente\Eclipse\Hexapod\src\Hexapod.py", line 315, in OpenSerialport
def OpenSerialport(*args): return _Hexapod.SerialCommunication_OpenSerialport(*args)
RuntimeError: Unknown Error.
C++ Implementierung dafür:
Code: Alles auswählen
void SerialCommunication::OpenSerialport(std::string const & CommPort) {
mhCom = CreateFile( CommPort.c_str(), // port number, eg. "COM2"
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened with exclusive access
0, // no security attributes
OPEN_EXISTING, // comm devices must already exist
0, // not overlapped I/O
0 // hTemplate must be NULL for comm devices
);
if (mhCom == INVALID_HANDLE_VALUE) {
throw (GetError());
}
}
Meine Vermutung ist das das Tool SWIG diesen API aufruf CreateFile(...) nicht unterstüzt, da ich die selbe funktion nur ohne dem API Call (ist zwar dann nutzlos) problemlos verwenden kann.
Hat jemand Erfahrung mit einem ähnlichen Problem?