Hi
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 Java 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: (Java)
Fehler:
Exception in thread "main" java.lang.RuntimeException: Unknown Error.
at HxpdJNI.SerialCommunication_OpenSerialport(Native Method)
at SerialCommunication.OpenSerialport(SerialCommunication.java:40)
at Testmain.main(Testmain.java:11)
C++ Implementierung dafür:
Code: (C)
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?
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 Java 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: (Java)
Code:
serial.OpenSerialport(CommPort);
serial.InitSerialport(SerialCommunication.Baudrate.BAUD_RATE_38400,
SerialCommunication.DataBits.DATA_BITS_8,
SerialCommunication.Parity.NO_PARITY,
SerialCommunication.StopBits.ONE_STOP_BIT);
Fehler:
Exception in thread "main" java.lang.RuntimeException: Unknown Error.
at HxpdJNI.SerialCommunication_OpenSerialport(Native Method)
at SerialCommunication.OpenSerialport(SerialCommunication.java:40)
at Testmain.main(Testmain.java:11)
C++ Implementierung dafür:
Code: (C)
Code:
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?