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


von Guenter B. (gbl)


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

von Paul Baumann (Gast)


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

von rsz (Gast)


Lesenswert?

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

von Marko (Gast)


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

von Guenter B. (gbl)


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

von Marko (Gast)


Lesenswert?

wie gesagt, anstatt INKEY einfach direkt das
UDR Register auslesen, also dann:

xybyte = UDR

von Guenter B. (gbl)


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

von Hannes L. (hannes)


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.

...

von Guenter B. (gbl)


Lesenswert?

Vielen Dank

Es funktioniert :-)))


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


Gruß

Günter


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.