PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD-Touchpanel programmieren


x-dragon
2003-05-07, 15:39:13
Genau damit beschäftige ich mich gerade, ich kann auch schon Text in beliebiger Größe und Form ausgeben und Buttons mit unterschiedlicher Größe, Form und Inhalt anzeigen, aber wie zum Geier kann ich die Rückgabewerte abfragen, wenn ein Button gedrückt wurde?

Programmieren tu ich das ganze in Delphi, mit einer Komponente namens QCCom32 mit der ich Informationen über die serielle Schnittstelle austauschen kann. Die Kommunikation erfolgt über einen "Write" und einen "Read"-Befehl bei dem jeweils nur ein String mitgegeben bzw abgefragt werden kann. Und die Komponente unterstützt leider kein Ereignis namens OnData oder ähnliches.

Achja das Datenblatt (http://www.electronic-assembly.de/deu/pdf/grafik/kit120-5.pdf) zu dem Display(EA KIT 120-5) hab ich vor mir liegen, aber mal abgesehen davon das die Beispiel-Befehle netterweise alle in Hex-Code geschrieben sind, blick ich immer noch nicht durch wie bzw wo ich die Daten auslesen kann.

Hat jemand von euch sowas vielleicht schon mal gemacht, oder sonst eine Idee wie das funktionieren könnte?

hier ist noch ein kleiner Ausschnitt wie das in Delphi aussieht:

with qccom32 do
if Open then
begin
Write(#27+'DL'); // Display löschen
Write(#27+'QC'+#0); // Cursor ausblenden
Write(#27+'F'+#1+#1#1); // Schrift einstellen
Write(#27+'TH'+#1+#5+'A'+#2+'TEST'+#0); // Test-Button anzeigen
Write(#27+'YL'+#1); // Display beleuchten
end
else
ShowMessage('Fehler bei Verbindungsaufbau!');

Demirug
2003-05-07, 15:58:46
Also ich habe das Datenblatt mal kurz überfolgen.

Wenn ich das richtig verstehe musst du mit "ESC T A 1(hex)" das Touch Panel aktivieren. In einer Zyklischen Funktion müsste man dann mit Read prüfen ob eine Taste gedrückt wurde.

x-dragon
2003-05-07, 17:02:37
Originally posted by Demirug
Also ich habe das Datenblatt mal kurz überfolgen.

Wenn ich das richtig verstehe musst du mit "ESC T A 1(hex)" das Touch Panel aktivieren. In einer Zyklischen Funktion müsste man dann mit Read prüfen ob eine Taste gedrückt wurde. Ja danke, ich hab das jetzt mal mit einem Timer probiert aber beim Read-Befehl kommt absolut nichts an Daten an.

Also wenn ich normal "TA" auf 1 setze ist ja die Tastenabfrage aktiviert, aber dann müsste man doch irgendein Ereigniss abfragen können, denn sonst kann man ja gleich eine manuelle Abfrage(TA = 2) über einen Timer machen (was bei mir ebenso nicht funktioniert).

Ich hab aber noch eine Hilfedatei dazu aufgetrieben, aber da blick ich aktuell irgenwie auch nicht richtig durch:
Declaration
function Read: string;

Description
Reads any pending input from the serial port and returns a string.

If the EndOfResponse property is not an empty string, then Read will wait for a period of time (see the ResponseTime property) until the specified characters are returned. If the expected characters do not arrive within the specified time, then the TimedOut property is set to True, and the OnTimeout event is triggered.

If the EndOfResponse property is an empty string, then Read will return right away with whatever characters have been received since the last time Read was called.
------------------------------------------------------------------------------------
Declaration
property EndOfResponse: string;

Description
String or characters used to signal the end of the response when using Read. The Read method will wait for the specified ResponseTime for the specified characters. Set to a null string ('') if you don't want to wait for a particular character or string.

You can enter literal characters, such as a carriage return or line feed by using the format '#NNN', where NNN is a decimal number between 0 and 255, or '#$NN', where NN is a hexadecimal number between 00 and FF.
------------------------------------------------------------------------------------
Declaration
property ResponseTime: DWORD;

Description
Time to wait (in milliseconds) for a response when using the Read method and EndOfResponse is not empty. 1 second = 1000 milliseconds.
------------------------------------------------------------------------------------
Declaration
property OnTimeout: TNotifyEvent;

Description
Event that signals a Read method did not recieve all the expected characters within the alloted time, as specified by the EndOfResponse property and the ResponseTime property respectively.
Ich mach jetzt auf jeden Fall erstmal Feierabend, werd aber nachher nochmal hier reinschauen, vielleicht lichtet sich das Problem ja für mich, wenn ich erstmal mein Mittagessen nachgeholt habe :).

x-dragon
2003-05-08, 09:56:50
Originally posted by X-Dragon
...
Ich mach jetzt auf jeden Fall erstmal Feierabend, werd aber nachher nochmal hier reinschauen, vielleicht lichtet sich das Problem ja für mich, wenn ich erstmal mein Mittagessen nachgeholt habe :). Naja viel hat es noch nicht gebracht ausser das ich inzwischen weiß das man sowas "am besten" mit einem Touch-Makro machen kann. Ich hab auch einen DOS-Compiler dafür der aber natürlich nicht unter XP läuft, aber das bekomme ich noch hin (hab hier noch Win98 liegen).

Wieso muss man heutzutage eigentlich ein LCD-Display noch unter DOS programmieren (bzw Makros compilieren und ins EEPROM schieben)?