- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: rs232 Datenübertragung

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209

    rs232 Datenübertragung

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute, ich bin am verzweifeln. Ich versuche per RS232 (mal direkt an AVR mit RX/TX gekreuzt, mal üer MAX-Chip) ein paar Daten zu übertragen. Und zwar 6 Word-Zahlen so, daß der Empfänger genau sagen kann, daß es sich um Zahl 1, oder 3...5 etc handelt.

    Aber irgendwie geht es nicht, nichtmal mit der Verbindung der beiden AVR (beides mega direkt.

    ich wollte aus Ressourcen-Gründen nicht "print" benutzen, sondern mit Urxc etc arbeiten.

    ich dachte daran, die 6 zahlen (max 4stellig) in einen String zu stecken und den zu senden und beim Empfänger wieder zu zerlegen und zu konvertieren. oder hat da jemand eine bessere Idee?

    Vielen Dank

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    du gibst uns jetzt erstmal deinen programmcode, und warum nen string, wenn man auch die zahl direkt senden kann?

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    ja, aber wie kann ich denn die zahl dem empfänger kenntlich machen? also das der Empfänger weiß, welche Zahl (Nr 2oder 4 etc) angekommen ist?

    sender:

    $Regfile = "mega8.dat"
    $Crystal = 4000000
    $Baud = 9600
    Dim a As word
    Dim b as word
    Dim c as word
    Dim d as word


    Do
    If USR.RXC = 1 Then pint a
    End If
    Loop
    End

    empfänger:

    $Regfile = "mega8.dat"
    $Crystal = 4000000
    $Baud = 9600
    Dim a As word
    Dim b as word
    Dim c as word
    Dim d as word


    Do
    If USR.RXC = 1 Then usr=a
    End If
    Loop
    End


    naja und damit geht das nicht so gut...

    vielen Dank für euer bemühen

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    also: signalisieren, welches byte, mit nem vorbyte, was ne nummer enthält, und ausserdem mach das bitte erstmal mit dem print und ischarwaiting oder inkey o.ä. und dann such die passenden register und befehle raus
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    ja, wenn ich wüßte wie, dann würde ich es auch machen, aber mir fehlt dafür einfach der Einblick.
    Was meinst du mit vorbyte?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    der name war nicht wirklich perfekt gewählt ^^

    also nen byte, wo die nummer des bytes was folgt drinsteht

    und guck dich doch mal in der bascom-help durch, bei inkey, ischarwaiting und waitkey
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  7. #7
    Gast
    If USR.RXC = 1 Then pint a ------------ print a oder?

    zum empfangen:
    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud = 19200

    Dim I As Byte

    Do
    If Usr.rxc = 1 Then
    I = Udr
    Select Case I
    Case "H"
    Print "Hallo AVR"
    Case "h"
    Print "hallo avr"
    Case Else
    Print "Unbekannter Befehl"
    End Select
    End If
    Loop
    End

    mfg psf

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    danke gast für den rowalt-quelltext. aber der bringt mich, dank eigener erfahrung, absolut nicht weiter.

    ischarwaiting wird in der hilfe zwar beschrieben, aber taucht im beispiel nicht auf, somit kann ich damit nichs anfangen

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    ja brauchst doch kein beispiel, der begriff erklärt sich doch selbst, ausserdem war der gast eh nur pebisoft, musste nicht drauf achten ^^
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    also ich hab das so gelöst:

    ich hab n startbyte definiert, beispiel &H55,
    damit der empfänger weiß, hier gehts los, das ist das erste zu übertragende Byte.
    Dann nicht 4 einzelne Variablen, sondern eine Matritze mit 4 mal der gleichen
    Variable, die ich dann aber hochzählen kann.

    Mit dem Startbyte also den Matrixzähler auf 1,
    dann warten bis zeichen im Buffer (ischarwaiting=1)
    Zeichen übernehmen (inkey a(x))
    wenn Variablenwert >0 dann haste das zu empfangende Byte,
    Zähler um 1 erhöhen ( incr(x) )
    und das ganze wieder ab dem Punkt: Warten auf Zeichen, bis x>3
    (somit =4) und alle benötigten Daten drinne sind.

    Wobei man die ischarwaiting nicht unbedingt braucht, kannst auch einfach
    den inkey mamchen, wenn Zeichenbuffer leer ist gibts 0 zurück.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen