Forum: Mikrocontroller und Digitale Elektronik Folien-Tastatur Anschluss


von TheFallen (Gast)


Lesenswert?

Hallo!
Ich bin gerade dabei mir ein Contol-Pannel für mein 19" Server-Rack zu
bauen. Ich habe vor 4 Displays und zu jedem dieser Displays jeweis eine
3x3Folientastatur(y/x) und 2 Statusleuchten für den Alarmzustand des
über das Display Überwachte system.
Gesteuert wird das ganze von einer selbstgeschriebenen software die die
sytemdaten der anderen server über das netztwerk erhält.
Die LCD Displays habe ich bereits erfolgreich über den LPT Port
angeschlossen. Sie verwenden jeweils 2 SED 1520 controler.
Mein Prolem ist nun, ich möchte eine platine bauen, um die 4 3x3
Tastenfelder und die 8 Kontroll-LED's über meine RS232 Schnittstelle
(9-pol subD) an den pc anzuschließen.
Habe leider Absolut keine ahnung wie is das anstellen soll. Habe schon
bei google nach bauanleitungen für soetwas gesucht, aber nichts
gefunden.
Kann mir jemand helfen und sagen, was ich dazu benötige?
Wenn jmd Hilfe mit C/C++ programmierung benötigt bin ich gern dazu
bereit zu helfen ...

Vielen Dank!!

von Tobi (Gast)


Lesenswert?

lies dir das tutorial hier auf der seite durch, da ist fast alles drin
was du brauchst: led's ansteuern, schalter auslesen und die serielle
schnittstelle. als 'anfang' sollte das ganz gut sein

von TheFallen (Gast)


Lesenswert?

Ja, Danke ... So weit hatte ich net nach unten gelesen, um die links zu
finden ... danke!!

Mein Fehler, sorry ...

Wenn jmd wissen möche, wie man unter windows in C++ einen MFC Device
Context in einen für LCD-Grafik-Displays verständlichen ASCII Code
umwandelt, einfach ne Mail an TheFallen@f2s.com schreiben ...

Un danke nochma ...

Greetz.

von Benjamin Schmidt (Gast)


Lesenswert?

hi

Würd mich mal interessieren, wie du das Problem hdc to lcd gelöst
hast...

Ich hab das damals mittels eines HBITMAP gemacht und das dann per
GetDIBits in ein grosses Array gelesen

Oder geht das vielleicht noch eleganter?

Gruss
Benjamin

von TheFallen (Gast)


Angehängte Dateien:

Lesenswert?

klar ...
Der DC muss folgede vorraussetzungen haben:
a) er muss kopatibel zu einem ClientDC erzeugt werden und dann muss als
erstes ein Monochom Bitmap in der Größe des LCDs geladen werden.
so:

CDC local;
CClientDC dc(this);
CBitmap temp;

temp.CreateBitmap(122,32,1,1,NULL);
local.CreateCompatibleDC( &dc );
local.SelectObject( &temp );

Nun kann local alles aufnehmen, was gezeichnet werden soll. Sogar ganze
bitmaps können per BitBlt oder StechBlt hineintransferiert werden.

Die Converter-funktion wird dann so aufgerufen:

bmp2fb(&local);

Die eigentliche funktion ist in der datei im anhang. Sie ist hier für
ein display mit 122x32 pixeln mit SED1520 controllern ausgelegt. immer
8 Pixel übereinander ergeben ein Byte.
Also besteht mein framebuffer aus 4 Zeilen a 122 bytes. Also:

char framebuf[488];

Der Framebuffer wird dann einfach der reihe nach an den Controller
gesendet, da dieser nach einem Byte automatisch den Pointer in die
nächste Spalte setzt. Die neue Page wird auch automatisch angewählt.
Bitta darauf achten, dass ein display evtl von 2 oder mehr controllern
gesteuert wird, und der Framebuffer entspechend beim senden aufgeteilt
werden muss.

Ich hoffe, das ist was du brauchst.


Gruß, TF

von Benjamin Schmidt (Gast)


Lesenswert?

Hallo


Ich würde nur mit der GetPixel Funktion aufpassen, die ist nämlich
erbärmlich langsam
Meine erste Variante arbeitete auch mit der Funktion, doch der Rechner
war richtig ausgelastet und das Display (640x480) brauchte knapp 2
Sekunden bis es aufgebaut war

Dann hab ich das ganze auf GetDIBBits umgebaut und ab dann war nur noch
die serielle Schnittstelle der limitierende Faktor

ich muss mal suchen, vielleicht hab ich den Source davon noch


Benjamin

von TheFallen (Gast)


Lesenswert?

Ja, danke für den Tipp.
Für mich spielte das keine rolle, da ich nur diese 122x32 displays
betreiben will. der server der das ganze trägt is lediglich mein
datenserver mit einem alten Athlon XP 1700+ 1024MB DDR ...
Da werden sich für mich keine probleme auftuen ...

Was jedoch wesentlich schneller ist, wenn nur eine textausgabe benötigt
wird, ist mit fontmaps zu arbeiten ... da kann der Framebuffer dann mit
Bitwise Operatoren erstellt werden ..


//TF

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.