|
|
T240mode.cpp |
|
|
|
|
|
|
|
|
|
|
|
|
Das Programm geht davon aus, dass der IPC@CHIP Webserver wie üblich über seine serielle Schnittstelle COM mit einem PC und dem dort arbeitenden Terminalprogramm verbunden ist. Das Touchdisplay muss dem entsprechend, bei Verwendung einer seriellen Schnittstelle oder des SPI-Busses, an EXT betrieben werden. Ansonsten ist es am I2C-Bus anzuschliessen. Wie die Jumper des Touchdisplays bei der Verwendung einer dieser Schnittstellen zu setzen sind, muss der Beschreibung des Anzeige-Modells entnommen werden.
Spannungsversorgung des Modells Wird die 5V Versorgungsgleichspannung über den jeweiligen Schnittstellenanschluss übertragen, kann das Display ohne Benutzung der 2,1mm Klinkenbuchse betrieben werden. (Hierzu ist bei der seriellen Verbindung der Pin RI hierfür vorgesehen, es muss im Display der Drahtschalter geschlossen sein). Es ist zwingend darauf zu achten, dass nur eine Spannungsversorgung aktiv ist.
Einzubindende Includedateien Bei Verwendung der seriellen Schnittstelle geht das Programm weiterhin davon aus, das die Schnittstelle EXT und das Display mit einer Baudrate von 115200 Baud miteinander kommunizieren. Dieser Parameter kann in der Includedatei dip240s.h geändert werden. Die seriellen Schnittstellentreiber aus serial.h werden ebenfalls in der Includedatei dip240s.h geladen, so wie dip240i.h die Headerdatei i2c.h einbindet. Bei der Benutzung von dip240p.h ist es die zusätzliche Headerdatei spi.h. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. serielle RS 232 Schnittstelle |
|
|
|
Protokoll- und Schnittstellentreiber für RS232 Schnittstelle des Touchdisplay. Diese Datei lädt die serial.h Includedatei. |
|
|
|
|
|
serial.h Treiber für die RS232-Schnittstellen am IPC@CHIP Webserver |
|
|
|
|
.. I2C-Bus |
|
|
|
Protokoll- und Schnittstellentreiber für die I2C-Bus Schnittstelle des Touchdisplay. Diese Datei lädt die i2c.h Includedatei. |
|
|
|
|
|
i2c.h Treiber für den I2C-Bus am IPC@CHIP Webserver |
|
|
|
|
.. SPI-Bus |
|
|
|
Protokoll- und Schnittstellentreiber für die SPI-Bus Schnittstelle des Touchdisplay. Diese Datei lädt die spi.h Includedatei. |
|
|
|
|
spi.h Treiber für den SPI-Bus am IPC@CHIP Webserver |
|
|
|
|
|
|
|
|
|
|
.. Massenspeicher (nicht zwingend) |
|
|
|
Funktionen zum Zugriff auf einen Massenspeicher. Ist nur für die Funktion T240file() des Hauptprogramms notwendig und kann weggelassen werden, wenn diese Funktion nicht benötigt wird. |
|
|
|
|
|
|
|
|
|
|
|
|
// t240mode.cpp
// ------------ Version 21.03.2007
// Borland IDE C++ 3.1 oder 5.02
// Model: SMALL
// Char: unsigned
// bearbeitet: www.GoBlack.de, D.Schwarzer
// ----------------------------------------------------------------
// Testprogramm für das TouchDisplay EA eDIP240-7 im Terminal-Modus
// .. an einer der Schnittstellen: I2C-Bus| serielle Schnittstelle|
// SPI-Bus
// Die Treiberprogramme für das TouchDisplay befinden sich in der
// Datei 'dip240x.h'. Dort werden alle Eigenschaften der jeweils
// benutzten Schnittstelle gesetzt.
// Die Headerdatei 'file.h' ist nur für den Programmteil notwendig,
// der eine Datei vom Massenspeicher liest und zum Display ausgibt.
#include <stdio.h> // für printf()
#include <string.h> // für strlen()
// Treiber für Anzeige EA eDIP240-7
// Header für benutzten Bus aktivieren
// -----------------------------------
#include "dip240s.h" // RS232-Schnittst, (benöt serial.h)
//#include "dip240i.h" // I2C-Bus, (benötigt i2c.h)
//#include "dip240p.h" // SPI-Bus, (benötigt spi.h)
#include "file.h" // nur für Funktion T240file()
// G240terminal()
// Grafikanzeige am TouchDisplay ein-(1) oder ausschalten(0)
// Rückgabe: 0 -es trat ein Fehler auf 1 -alles gesendet
// Wenn bereits ein Grafikmakro auf dem Display arbeitet kann es
// hiermit ausgeblendet werden.
int G240terminal (char on)
{
char cmd[]="\x1B""DE"; // ESC D E off
if(!on)cmd[2]='A'; // ESC D A on
return(dip240out(cmd,3));
}
// G240beep()
// Schaltet den Beeper mit on=0-aus, on=1-ein, on=2..255 für on
// Zehntelsekunden ein.
int G240beep(char on)
{
char cmd[]="\x1B""YS""\x00"; // ESC Y S beep
cmd[3]=on; // 0-aus, 1 ein
return(dip240out(cmd,4)); // 2-255 Zehntelsek
}
// T240terminal()
// Terminalanzeige am TouchDisplay ein-(1) oder ausschalten(0)
// Rückgabe: 0 -es trat ein Fehler auf 1 -alles gesendet
int T240terminal (char on)
{
char cmd[]="\x1BTE"; // ESC T E off
if(!on)cmd[2]='A'; // ESC T A on
return(dip240out(cmd,3));
}
// T240cursor()
// Cursor des Terminalmodus am TouchDisplay ein-oder ausschalten.
// Rückgabe: 0 -es trat ein Fehler auf 1 -alles gesendet
int T240cursor (char on)
{
char cmd[]="\x1BTC\x01"; // ESC T C 1
if(!on)cmd[3]=0; // ESC T C 0
return(dip240out(cmd,4));
}
// T240gotoxy()
// Setze Cursor im Terminalmodus auf die Position(x,y)
// Im Terminalmodus ist nur der Zeichensatz 0 verfügbar.
// Entsprechend gibt es x=30 Spalten und y=16 Zeilen.
// Rückgabe: 0 -es trat ein Fehler auf 1 -alles gesendet
int T240gotoxy( char x, char y)
{
char cmd[]="\x1BTP\x01\x01"; // ESC T P x y
if(x<1||x>30||y<1||y>16){x=1;y=1;}
cmd[3]=x; cmd[4]=y;
return(dip240out(cmd,5));
}
// T240cpos()
// Sichert im Terminalmodus die aktuelle Cursorposition
// Anzeigenintern, oder setzt die letzt gemerkte Position
// wieder ein.
// save= 0 gemerkte Position zurückspeichern
// save= 1 momentane Position merken
// Rückgabe: 0 -es trat ein Fehler auf 1 -alles gesendet
int T240cpos(char save)
{
char cmd[]="\x1BTS"; // ESC T S
if(!save)cmd[2]='R'; // ESC T R
return(dip240out(cmd,3));
}
// T240version()
// Gibt die Version der Anzeige als String auf dem
// Terminalbildschirm der Anzeige aus.
// Rückgabe: 0 -es trat ein Fehler auf 1 -alles gesendet
int T240version(void)
{
return(dip240out("\x1BTV",3));
}
// T240file()
// öffnet die Datei 'dateiname' auf dem genannten Massenspeicher
// und sendet deren Inhalt zur EA eDIP240-7 Anzeige.
// Diese Funktion benötigt die Headerdatei 'file.h'
// Rückgabe 0 -Es trat ein Fehler auf 1 -alles gesendet
int T240file (char* dateiname)
{
#define BUFLEN 64
int handle =0;
char buffer[BUFLEN];
unsigned long filelen =0L;
unsigned long fileptr =0L;
unsigned long toRead =0L;
// Datei zum Lesen öffnen, handle merken
handle = openFile(dateiname, 0); if(errOut()) goto end;
// holt die Länge der Datei.
filelen =getFileLen(handle); if(errOut()) goto end;
//fileptr auf Anfang der Datei setzen
fileptr =setFilePtr(handle, 0, 0); if(errOut()) goto end;
while(fileptr<filelen){
// momentanen Fileptr holen und Blöcke von BUFLEN Bytes
// festlegen
fileptr= getFilePtr(handle); if(errOut()) goto end;
toRead=filelen-fileptr;
if(toRead>BUFLEN) toRead=BUFLEN;
// lese BUFLEN Bytes der Datei
readFile(handle, buffer, (unsigned)toRead);
if(errOut()) goto end;
// zur Anzeige senden
if(!dip240out(buffer, (unsigned)toRead))
goto end;
}
// Datei schliessen
closeFile(handle); if(errOut()) goto end;
return(1);
end:
closeFile(handle);
return(0);
}
// main()
// Dieses Testprogramm initialisiert die benutzte Schnittstelle,
// (seriell, I2C-Bus oder SPI-Bus) und nimmt lesenden sowie
// schreibenden Kontakt zu einer EA eDIP240-7 Anzeige auf.
// Die Anzeige wird im Terminal-Modus betrieben, das TouchDisplay
// wird von diesem Programm nicht angesprochen, dennoch kann
// kontrolliert werden, ob ein Empfang von der Anzeige möglich ist.
// Die benötigten Treiber für die diversen Schnittstellen befinden
// sich jeweils in der Headerdatei dip240x.h, x=s,i,p
// Das Programm gibt seine durchgeführten Aktivitäten zum
// Bildschirm eines auf dem PC arbeitenden Terminalprogramms aus,
// auf der Anzeige sollten diese Aktivitäten beobachtbar sein.
void main(void)
{
// Text der folgend zur Anzeige ausgegeben werden soll
char txt[]= "\fText aus laufendem Programm"
"\r\n-----------------------------"
"\r\n"
"\r\nDieser Text ist im laufenden"
"\r\nProgramm enthalten. Er be-"
"\r\nsteht aus mehr als 64 Zeichen"
"\r\nso dass er in mehrere Frames"
"\r\nzerlegt, gesendet werden muss"
"\r\n............................."
"\r\n Spalten: 30"
"\r\n Zeilen: 16"
"\r\n............................."
"\r\n"
"\r\nDer nun folgende Text wird"
"\r\nvon dem Laufwerk A:\\ gelesen";
// Medungen die zum Terminalbildschirm gesendet werden
printf("\r\n [Start] .. EAeDIP240 TerminalModus");
printf("\r\n ----------------------------------\r\n");
setStdio(2);
// EAeDIP240-Display bezüglich der verwendeten Schnittstelle
// initialisieren (in dip240x.h)
if(!dip240init()){
printf("\r\n .. Anzeige nicht erreicht"); goto ende;
}
// Lesen von der Anzeige, testet dip240rec()
dip240vers();
printf("\r\n ~Version: %s",version);
dip240getbuf();
printf("\r\n ~belegt im Sendebuffer= %d",sbuf);
printf("\r\n ~frei im Empfangsbuffer= %d",rbuf);
// nur bei Versionen der Anzeige-Firmware >1.2 möglich
dip240getprot();
printf("\r\n ~maximale Paketgroesse = %d",mps);
printf("\r\n ~aktuelle Paketgroesse = %d",aps);
printf("\r\n ~aktuelle Timeoutzeit = %d",ato);
printf("\r\n -2/10 Sekunde Pieper ein");
printf("\r\n");
// Schreiben zur Anzeige, testet dip240cmd()
G240terminal(0); // Grafik aus
G240beep(2); // Pieper 2/10s ein
T240terminal(1); // Terminal ein
T240cursor(1); // Cursor ein
dip240out("\f",1); // Display löschen
printf("\r\n -Grafik ausgeschaltet"
"\r\n -Terminal eingeschaltet"
"\r\n -Cursor eingeschaltet"
"\r\n -Terminalanzeige geloescht");
waitKey();
T240gotoxy(2,5); // Cursor auf Pos. x,y
printf("\r\n +Cursor auf Position 2,5");
waitKey();
T240version(); // Versionstring ausgeben
printf("\r\n -Version der Anzeige ausgegeben");
waitKey();
T240gotoxy(1,4); // Curs auf x,y
T240cpos(1); // Pos. merken
T240cursor(0); // Cursor aus
printf("\r\n +Cursor auf Position 1,4"
"\r\n +Cursorposition gemerkt"
"\r\n +Cursor ausgeschaltet");
waitKey();
// Text aus Programm ausgeben
dip240out(txt,strlen(txt));
printf("\r\n -Text aus dem Programmcode ausgegeben");
waitKey();
// Text ausgeben
dip240out("\fautoexec.bat von Laufw. A:\\",28);
T240cursor(1); // Cursor ein
T240cpos(0); // gemerkte Curs.Position
// Text aus autoexec.bat von A:\ holen und ausgeben
// Nur dieser Programmteil benötigt die Headerdatei file.h
T240file("a:\\autoexec.bat");
printf ("\r\n +Cursor einschalten"
"\r\n +gemerkte Cursorposition setzen"
"\r\n +Text von Laufwerk A:\\ ausgegeben"
"\r\n");
waitKey();
// ---------------------------------------------------------------
ende:
printf ("\r\n -Terminalanzeige loeschen"
"\r\n -Cursor ausschalten"
"\r\n -Grafikanzeige einschalten"
"\r\n");
dip240out("\f",1); // TerminalDisplay löschen
T240cursor(0); // TerminalCursor aus
G240terminal(1); // Grafikanzeige ein
dip240release();
printf("\r\n [Ende] .. EAeDIP240 TerminalModus"
"\r\n");
setStdio(3);
}
|
|
.de