Forum: Mikrocontroller und Digitale Elektronik Übermitteln eines Strings an 2.Atmel / Bascom


von Axel K. (eisman)


Lesenswert?

Hallo!


Ich benoetige einen Code.
Ich sitze nun schon eine Woche an einem Problem und bekomme es nicht 
gelöst.

Codeteil vom Sender:

....

Config Print0 = Portd.1 , Mode = Set

Config Pind.1 = Output                                      'set the 
direction yourself

Do

  Print "1234"


Codeteil vom Empfänger:


...

I1 = Inkey()
 If I1 <> 0 Then

var = Waitkey()

...

Ich habe auch schon diverse ander Varianten ausprobiert, leider ohne 
Erfolg : (
Es kommt auch was an, aber eben nicht das, was als string über Print 
Befel gesendet wird.

Kann mir jemend sagen wie ich einfach eine 4 - stellige Zahl an einem 2. 
Atmel übermitteln kann?

Thx schonmal!

von Axel K. (eisman)


Lesenswert?

Guten Morgen)

Mir ist noch etwas eingefallen)))

ueberall steht, das usc irgendwas auf 1 beim empfaenger gesetzt wird, 
wenn ein byte vollstaendig empfangen wurde. Mein 4-stellige Zahl wird 
doch aber sicher groesser als ein byte sein. D.h. wenn ich mit "if i 
groesser kleiner 0 then...." abfrage und dann auslese, werde ich nur 
bruchstuecke von der zahl haben !? Allerdings versteh ich nicht, wie ich 
dann zb nen ganzen text ans hyper terminal senden kann

von Peter D. (peda)


Lesenswert?

Das Problem ist sehr komplex.

Du brauchst erstmal ein Protokoll, an dem der Empfänger eindeutig 
erkennen kann, wann die Zahl anfängt und wann aufhört, z.B. durch ein 
vereinbartes Start- und ein Endezeichen.

In einem Datenstrom "...123412341234123412..." ist das nicht möglich.

Dann braucht der Empfänger einen Puffer, in dem er die Bytes von 
Startzeichen bis zum Endezeichen sammelt.
Und sobald er das Endezeichen erkennt, übergibt er den Puffer an eine 
Funktion, die den String zurück in eine Zahl verwandelt.


Peter

von HebAufHat (Gast)


Lesenswert?

Na dann empfange einfach 4 Ziffern. Du mußt halt warten, bis eine Ziffer 
fertig empfangen ist. Beim experimentieren mit diesem Codeschnipsel wird 
es Dir klar werden. Später kannst Du den Code ändern (Array statt 
einzel-Bytes, Schleife ..)

Dim Z1 as Byte
Dim Z2 as Byte
Dim Z3 as Byte
Dim Z4 as Byte


do:loop until UCSRA.RXC=1 'warten bis ein Zeichen da ist
Z1 = UDR 'Daten lesen, in Z1 ist jetzt der Code für die erste Ziffer

do:loop until UCSRA.RXC=1 'warten bis ein Zeichen da ist
Z2 = UDR 'Daten lesen, in Z2 ist jetzt der Code für die zweite Ziffer

...

...

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.