mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tastatur an serielle Schnittstelle mit Puffer?


Autor: Henning Kopp (super-pooh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte eine normale Tastatur, ein Nummernblock würde ausreichen, an
der RS232 anschliessen. Das ist gar nicht das grosse Problem, aber ich
möchte, dass die Tastatureingaben gepuffert werden bis die Entertaste
gedrückt wird und dann erst der String an die serielle Schnittstelle
geschickt wird. Wie mache ich das am einfachsten?

Autor: Jörn G. aus H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehr ungenaue Frage!
Welcher Controller, welche Programmiersprache, was ist genau dein
Problem?

Meine Warsagekugel rät mir, mal für AVR und GCC zu antworten:

Du definierst dir einfach ein array:

char buffer[1000];

In dieses schreibst du die daten und erhöhst bei jedem zeichen den
zeichenzähler:

buffer[i++] = tastencode;

Bei enter sendest du einfach den buffer und setzt den counter dann
wieder auf 0:

if( tastencode == '\n' ) //linefeed als beispiel für enter
{
RSputs( buffer ); //zeichen senden
i=0;
}

Ganz einfach. Die Codeschnippsel sind natürlich nur ein
Beispiel-frei-Schnauze.

Die Sendefunktion kann dann so aussehen:
static void RSputs(const char *s) //fuer : "mit Inverter" (MAX)
{
    register char c;

    while( (c = *s++) )
    {
    loop_until_bit_is_set(UCSR1A, UDRE1);  //warten auf UART frei
    UDR1 = c;
    }

}//RSputs()

Jörn

Autor: Jörn G. aus H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du geschrieben hast, dass das "Anschliessen kein Problem" sei -
ging ich einfach mal davon aus, dass weist, dass man "normale" (USB
oder PS2) Tastaturen nicht "einfach" an die Serielle anschliessen
kann... oder?
Dass du also einen Controller dazwischenschalten mußt und willst...

Nur nochmal sicherheitshalber...

jörn

Autor: Henning Kopp (super-pooh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörn!

Ich bin einige Jahre raus aus der Controllerbastelei und in den letzten
5-7 Jahren gibt es doch einige "Neuheiten" die ich noch nicht kenne.
Ich weiss zwar theroretisch wie es zu machen ist, aber praktisch geht
es mit aktuellem Wissen besser. Daher habe ich erstmal ganz neutral
gefragt.
Ich möchte einen seriellen Barcodescanner durch eine Tastatur
(Ziffernblock) ersetzen. Die Zahlen (3-7 Stellen) müssen über den
seriellen Port in den Rechner, aber in einem Stück. An dem Rechner sind
mehrere Barcodescanner angeschlossen und wenn ich keinen Puffer benutze,
kann es passieren, dass die Software die beiden Eingaben durcheinander
wirft. Wenn an der Tastatur 1234 eingegeben wird, und gleichzeitig
würde ein Scanner mit Barcode 5678 benutzt, hätte die Software im
Eingabfeld 125678 und es käme zu einer Fehlermeldung. An der Software
kann ich nichts ändern (ist nicht von mir und ich habe auch kein
Quellcode). Bei www.tastaturen.com gibts die KSQ-22, aber die hat
keinen Puffer und ich weiss auch nicht was für ein Controller drin ist
und ob man da was dran umbauen kann.
Welcher Controller ist am besten geeignet? Ein max232 werde ich
wahrscheinlich auch noch brauchen. Auch die Möglichkeit ein Display
anzuschliessen wäre schön.

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe ich dich jetzt richtig:
Du moechtest einen fertigen Tastaturblock einsetzen, der bereits
ueber eine serielle als Ausgang verfuegt?

Wenn ja: Du kannst jeden AVR nehmen, der ueber 2 UARTS
verfuegt. Theoretisch kuennte man die Hardware UART auch
durch Software UART ersetzen. Allerdings ist der Preisunterschied
von ATTiny's zu ATMega's nun auch nicht sooo gealtig. Und wenn
Du sowieso eine LCD anhaengen moechtest :-)

Schau doch mal bei Atmel vorbei, dort gibt es irgendwo eine
Tabelle mit allen AVR's und was die koennen. Wenn das LCD nicht
waere, dann koenntest Du Dein Problem auch mit dem Allerkleinsten
von denen loesen (Software UART), einem AtTiny 12.
Such einfach mal welcher AVR ueber 2 UART's verfuegt. Dann schau
nach ob der bei Reichelt (oder Conrad) lieferbar ist. Schau
Dir die Tutorials auf dieser Seite durch, was Du sonst noch
brauchst (Stromversorgung, Schaltung zum flashen, LCD) und dann
kanns auch schon losgehen. Softwaremaessig ist Dein Problem
nicht so schwer.

Autor: Olaf K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls nicht bekannt: Es gibt eine Application Note zum Anschluß von
normalen PC-Tastaturen (PS/2 oder DIN, dazu zählen auch
PS/2-Ziffernblöcke) an AVR-Controller: Siehe AVR313. Dort ist schon ein
Beispiel für ein Tastatur-nach-RS232-Interface, das paßt ja schon fast.
Tastaturseitig wird übrigens kein UART benötigt.

Die Tastatureingaben braucht man dann nur zu puffern (Ringpuffer), und
wenn "Enter" als Scancode dabei ist, alles zum UART rausschieben.
Will man die Eingaben auf einem Display anzeigen, muß man die Scancodes
erst nach ASCII wandeln.
Als Controller dürfte z.B. ein 90s2313 bzw. der neuere tiny2313 locker
reichen, um das über den UART per RS232 an den PC zu senden, noch einen
MAX232 dazwischen.

Sehe ich das richtig, daß Scanner und Tastatur an verschiedenen
COM-Ports am PC hängen?
Verlangt die PC-Software eigentlich irgendeine Art Flußsteuerung (z.B.
RTS/CTS) oder/und ein Fehlerprotokoll? Falls ja, und das nicht
abstellbar ist, könnte die Sache etwas schwieriger werden.

MfG Olaf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.