1. Współdzielenie danych między Javą a Qt5 chyba mam opanowane:
public ByteBuffer bbuf = ByteBuffer.allocateDirect(10); public byte b[] = new byte [] {1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; public static native void sendBufAddr(ByteBuffer buf); // natywna funkcja w C++ do której przekazujemy adres bufora // dane z bufora pakujemy do ByteBuffera w ten sposób: bbuf.put(b); // i wysyłamy adres do funkcji w C++ sendBufAddr(bbuf);
A funkcja w C++ w wersji minimalistycznej w QT5 wygląda tak:
extern "C" { JNIEXPORT void JNICALL Java_net_greblus_MyActivity_sendBufAddr(JNIEnv *env, jobject, jobject buf) { jbyte *bbuf = (jbyte *)env->GetDirectBufferAddress(buf); // i możemy robić z danymi w bbuf[] co chcemy } }
2. Pakiet jar ze sterownikiem do FTDI działa w Qt5 w MainActivity, więc wszystkie elementy układanki zaczynają do siebie pasować ;).