www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik inkey() -> Compilerfehler


Autor: Guenter B. (gbl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich versuche mit inkey() (Bascom) Zeichen aus dem Buffer zu lesen.


dim Name as byte (string habe ich auch schon versucht)
Do
   Name = Inkey()
   If Err = 0 Then
      Print Name
   End If
   Wait 1
Loop

Beim Compilieren meldet der Compiler Fehler 338 as erwartet
in der Zeile -> Name= inkey()

Weiß jemand warum bzw was ich falsch mache.

Gruß

Günter

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuche mal: If Name > 0 then print Name. Nur dann, wenn im Puffer ein
Zeichen liegt, dann gib auch das Zeichen aus.


MfG Paul

Autor: rsz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
benenn die variable um. "name" als variablen-name ist nicht zulaessig
gß rsz

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
korrekt, name darf nicht sein, desweiteren ist der
Wert als Byte zu dimensionieren also dim xbyte as byte.
ausserdem ist inkey ne dumme funktion, kannste auch
gleich das UDR-Register auslesen, also
xbyte=udr

Autor: Guenter B. (gbl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marko wrote:
>

> ausserdem ist inkey ne dumme funktion, kannste auch
> gleich das UDR-Register auslesen, also
> xbyte=udr

Welche Funktion wäre besser ?

Im Moment probiere ich gerade mit GET herum, was auch ganz gut 
funktioniert, solange es etwas zu "getten" gibt. Wenn aber keine Datem 
kommen, wartet der Mega8 bis er schwarz ist (ist er zwar sowieso schon 
;-)) und ist für nichts anderes mehr zu gebrauchen.

Hintergrund: Ich möchte mit dem AVR SMS aus einem Nokia 6210 auslesen, 
um daraufhin Schaltfunktionen auszulösen. Allerdings soll der AVR auch 
seine Eingänge abfragen, um im Fall des Falles eine Meldung über das 
Handy absetzten zu können.

Gruß

Günter

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie gesagt, anstatt INKEY einfach direkt das
UDR Register auslesen, also dann:

xybyte = UDR

Autor: Guenter B. (gbl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe das mit dem UDR einlesen mal probiert. Funktioniert in der 
Simulation auch ganz gut. In der Realität liest mir das Programm immer 
das letzte Zeichen erneut ein, selbst wenn ich das serielle Kabel 
abziehe. Muss ich da irgendeinen Puffer löschen ?

a = udr
B = chr(a)

Gruß

Günter

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART verfügt über ein Register, in dem ein Bit gesetzt wird, wenn ein 
neues Zeichen eingetroffen ist. Dies kann man prüfen. Oder man nimmt 
gleich den Interrupt, der für RX vorhanden istl. Nähere Informationen 
findet man im Datenblatt.

...

Autor: Guenter B. (gbl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank

Es funktioniert :-)))


If usr.rcx = 1 then
    a=udr
else
    was anderes
end if


Gruß

Günter


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.