Einzelnen Beitrag anzeigen

SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Android UART EventListener

  Alt 3. Mai 2018, 08:14
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
Sven

Alle sagen, das geht nicht. Da kam einer, der wusste das nicht und hat es gemacht.
  Mit Zitat antworten Zitat