www.mikrocontroller.net

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


Autor: Axel Krüger (eisman)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Axel Krüger (eisman)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HebAufHat (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

...

...

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.