Hi @All,
ich habe eine Android UART (Seriell) Anbindung und benötige jetzt den Zugriff auf die Events. Bei den bereitgestellten Java-Classen gibt es einen EventListener, ich weiß jedoch nicht, wie ich das zu Delphi umsetzen soll.
Hier der Code der Java-Klasse
Code:
JUARTEventClass = interface(JEventObjectClass)
['{8CCFB748-D20D-495F-8BFB-88939E567966}']
{class} function _GetCLEAR_TO_SEND: Integer; cdecl;
{class} function _GetDATA_AVAILABLE: Integer; cdecl;
{class} function _GetDATA_CARRIER_DETECT: Integer; cdecl;
{class} function _GetDATA_SET_READY: Integer; cdecl;
{class} function _GetINPUT_BUFFER_FULL: Integer; cdecl;
{class} function _GetN_BYTES_AVAILABLE: Integer; cdecl;
{class} function _GetOUTPUT_BUFFER_EMPTY: Integer; cdecl;
{class} function _GetRING_INDICATOR: Integer; cdecl;
{class} function init(P1: JUART; P2: Integer): JUARTEvent; cdecl;
{class} property CLEAR_TO_SEND: Integer read _GetCLEAR_TO_SEND;
{class} property DATA_AVAILABLE: Integer read _GetDATA_AVAILABLE;
{class} property DATA_CARRIER_DETECT: Integer read _GetDATA_CARRIER_DETECT;
{class} property DATA_SET_READY: Integer read _GetDATA_SET_READY;
{class} property INPUT_BUFFER_FULL: Integer read _GetINPUT_BUFFER_FULL;
{class} property N_BYTES_AVAILABLE: Integer read _GetN_BYTES_AVAILABLE;
{class} property OUTPUT_BUFFER_EMPTY: Integer read _GetOUTPUT_BUFFER_EMPTY;
{class} property RING_INDICATOR: Integer read _GetRING_INDICATOR;
end;
[JavaSignature('guf/android/hardware/uart/UARTEvent')]
JUARTEvent = interface(JEventObject)
['{CFFDE537-85A0-41E9-BEC4-FEB75219E53B}']
function getEventType: Integer; cdecl;
function toString: JString; cdecl;
end;
TJUARTEvent = class(TJavaGenericImport<JUARTEventClass, JUARTEvent>) end;
JEventListenerClass = interface(IJavaClass)
['{48BD1D07-BCE3-4F68-982B-617B523C7116}']
end;
[JavaSignature('java/util/EventListener')]
JEventListener = interface(IJavaInstance)
['{D9ADB67A-5217-4762-9961-710BF18CAD39}']
end;
TJEventListener = class(TJavaGenericImport<JEventListenerClass, JEventListener>) end;
JUARTEventListenerClass = interface(JEventListenerClass)
['{EC9DB672-36FF-40F5-8E3B-5D4C00808A91}']
{class} procedure onUARTEvent(P1: JUARTEvent); cdecl;//Deprecated
end;
[JavaSignature('guf/android/hardware/uart/UARTEventListener')]
JUARTEventListener = interface(JEventListener)
['{E5B94F01-255E-4C05-88A7-F0B0BE1C89CA}']
end;
TJUARTEventListener = class(TJavaGenericImport<JUARTEventListenerClass, JUARTEventListener>) end;
und hier der Code aus dem original Beispiel wie das benutzt wird:
Code:
uart = new UART("ttymxc2", UART.BAUD_115200, UART.DATABITS_8, UART.PARITY_NONE, UART.STOPBITS_1);
uart.openPort();
uart.writeString("port #1 opened ...\n\r");
uart.addEventListener(this, new UARTEvent(uart, UARTEvent.DATA_AVAILABLE));
Thread.sleep(10*1000);
uart.removeEventListener(this);
uart.closePort();
Code:
public void onUARTEvent(UARTEvent uartEvent) {
switch(uartEvent.getEventType()) {
case UARTEvent.DATA_AVAILABLE:
Log.d(TAG, "onUARTEvent: UARTEvent.DATA_AVAILABLE");
}
}
Ich benötige das onUARTEvent als Delphi-Event.
Kann mir jemand helfen das umzusetzen oder mir eine Info geben, wo ich dazu etwas finde wie es gemacht wird. Steh total auf dem Schlauch.
Danke