4D System Display Kommunikation verstehen

Hallo Leute,

ich arbeite gerade an einem Projekt mit einem 4D System Touchdisplay. Dies ist jedoch mein erstes Projekt mit einem Touchscreen weswegen ich noch ein wenig Hilfe benötige.
Im Grunde wäre es schön wenn mir jemand der vielleicht schon mit diesem Display gearbeitet hat die Struktur der Kommunikation zwischen Display und Arduino näher bringen könnte.
Die Doku von 4D ist zwar nicht schlecht, jedoch werde ich aus manchen Punkten nicht schlau.

Das beschreiben von Objekten mit " genie.WriteObject(GENIE_OBJ_DIPSW, 0x00, 0); " funktoniert schon, jedoch liegt mein Hauptproblem im Rücklesen von Eingaben aus dem Display in den Controller.
Ich habe z.B. ein Keyboard welches mir nur Zahlen darstellt, diese würde ich gern einlesen und als String ausgeben.

Ich habe mal meinem Code angehängt welchen ich mir aus dem Beispiel des Calculators und dem Beispiel des Voltmeters zusammengestückelt habe.
Vielleicht kann mir jemand daran erklären wie das ganze genau funktoniert und was meine Fehler sind.
Der Sketch funktoniert nicht richtig, ich kann zwar ein paar Werte auslesen doch nach kurzer Zeit startet das Display dann neu.

Vielleicht hat auch jemand zum besseren Verständniss einen kleinen Beispielcode welcher leichter zu verstehen ist als mein Gemurks :smiley:

#include <genieArduino.h>                                                // Genie Library 
Genie genie;                                                             //??

void setup()
{
  Serial.begin(9600);                                                    // Serial0 @ 9600 Baud
  genie.Begin(Serial);                                                   // Initalisiert die Schnittstelle
  genie.AttachEventHandler(myGenieEventHandler);                         // Ruft myGenieEventHandler auf ??

  //Display Reset
  pinMode(4, OUTPUT);
  digitalWrite(4, 1);
  delay(100);
  digitalWrite(4, 0);

  //Display Boot Zeit
  delay (3500);
}


void loop()
{
  genie.DoEvents();                                                      //??
  genie.ReadObject(GENIE_OBJ_KEYBOARD, 0x00);                            // Liest den Wert vom Keyboard ??
}
void myGenieEventHandler(void)
{
  int keyboard_val;                                                       // Speichert den Wert vom Keyboard
  genieFrame Event;                                                       //??
  genie.DequeueEvent(&Event);                                             //??
  (genie.EventIs(&Event, GENIE_REPORT_OBJ, GENIE_OBJ_KEYBOARD, 0x00));    //??
  keyboard_val = genie.GetEventData(&Event);                              // Schreibt Eingabe vom Keyboard in keyboard_val
  Serial.println(keyboard_val);                                           // Zur Ausgabe des Seriellen Monitors
}

Da mußt Du entweder die Bibliothek analysieren oder das Datenblatt der verwendeten Kontroller studieren.
Welchen Arduino verwendest Du und welches Modell von Display?
Grüße Uwe

Hallo Uwe,
ich habe einen Arduino Mega 2560 welcher mit dem 4D System 32PTU Display verbunden ist.
Hier die Website des Displays: http://www.4dsystems.com.au/product/uLCD_32PTU/

Meinst du mit Bibliothek analysieren das ich mir den Inhalt von <genieArduino.h> genauer ansehen soll ?
Aus dem Datenblatt, bzw. der Bedienungsanleitung werde ich nicht ganz schlau da sich manche Befehle zwischen der Doku und den Beispielprogrammen unterscheiden.

Zur Orientierung habe ich folgendes benutzt:
http://www.4dsystems.com.au/productpages/ViSi-Genie/downloads/Visi-Genie_refmanual_R_1_8.pdf — Reference Manual

http://www.4dsystems.com.au/productpages/ViSi-Genie/downloads/Visi-Genie_userguide_R_1_3.pdf — User Guide

http://www.4dsystems.com.au/downloads/Application-Notes/4D-AN-00017_R_1_0.pdf — Beispiel Verbindung Display und Arduino

Im Grunde tue ich mir einfach mit den unterschiedlichen Befehlen zum lesen und beschreiben des Displays schwer. Es wird nirgends erklärt was z.B. dieser Programmteil genau bewirkt oder wie er arbeitet:

genieFrame Event;
  genie.DequeueEvent(&Event);
  (genie.EventIs(&Event, GENIE_REPORT_OBJ, GENIE_OBJ_KEYBOARD, 0x00));  
  keyboard_val = genie.GetEventData(&Event);

Ist auch mein erstes Display weswegen vielleicht manches noch neu für mich ist. Aber Vielen Dank schonmal für die Hilfe :slight_smile:

Hat noch keiner mit dem Display gearbeitet und kann mir eventuell helfen ? :frowning: