Übermitteln eines Strings an 2.Atmel / Bascom

OP #987461
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!
OP #987714
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
#987756
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
Gast #987778
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

...

...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.