-         

Ergebnis 1 bis 9 von 9

Thema: Hex Code an RS232 senden

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2008
    Ort
    Wetzlar
    Alter
    45
    Beiträge
    16

    Hex Code an RS232 senden

    Anzeige

    Hallo Leute,

    ich habe wieder mal ein kleines Problem.

    Ich möchte einen Hex Code an die RS232 meines Mikrocontrollers senden.

    Habe einen Atmega 2561. Wie die RS232 funktioniert weiß ich ja, so sende ich schon Steuerbefehle weiter.

    Die Frage für mich ist es ob ich ein Hex Protokoll in dieser Form senden kann und wie ich es dafür aufbauen muß. Ich möchte das Protokoll im EEprom speichern (am liebsten in einem externen 24c512) und zu bestimmten Zeiten aus dem EEProm auslesen und an die RS232 senden.

    Ein Beispiel des Hex-Protokoll was ich versenden möchte:

    05 8D 80 00 04 32 09 05

    Über jede Hilfe bin ich sehr dankbar.

    mfg Jörg
    Ich kann jede Hilfe gebrauchen

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.08.2005
    Beiträge
    178
    hallo

    vorweg, ich war im deutschunterricht sehr schlecht im interpretieren (abgesehen von 'warten auf godot'), und bin daher zu anderen sprachen gewechselt, für welche die interpretation falls nötig automatisiert geschieht

    du empfängst am mikrocontroller bereits steuerbefehle, und willst jetzt daten vom mikrocontroller versenden?
    bei einem protokoll im IT bereich handelt es sich um die definition von ablauf und struktur von kommunikation. ein solches zu versenden macht daher selten sinn. ein protokoll kann aber auch eine aufzeichnung von daten sein. um missverständnissen vorzubeugen sollte man aber besser die bezeichnung 'log' verwenden. nehme ich richtig an dass du letztere definition von protokoll meinst?

    falls beide fragen mit ja beantwortet werden können, nehme ich als basic verweigerer an, dass die gesuchte funktion in der Bascom dokumentation zu finden ist, in der nähe des befehls den du zum empfangen verwendest.
    ob ein datensatz wie der von dir als beispiel angeführte geeignet ist, hängt davon ab, ob die gegenstelle etwas damit anfangen kann, wo wir wieder beim interpretieren wären denn es muss ja unterumständen anfang und ende gekennzeichnet sein. in einem sehr einfachen fall könnte das dadurch geschehen, dass der anfang durch eine längere vorangegangene (sende)pause erkannt wird, und das ende durch eine bekannte länge des datensatzes gegeben ist.
    befehle bzgl EEPROM zugriff sollten auch in der Bascom doku stehen, aber das war glaub ich eh nicht gefragt.

    lg
    "A robot with guns for arms shooting a plane made out of guns that fires guns" - Nelson Muntz

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2008
    Ort
    Wetzlar
    Alter
    45
    Beiträge
    16

    Hex Code an RS 232 senden

    Hallo Johns,

    ja du hast recht, ich habe mich wohl ein bischen unklar ausgedrückt.

    Also das ganze nochmal in einer geordneten Struktur.

    - ich möchte mehrere Hex Code´s (so 30 Stück) am PC eingeben und in den EEprom des Atmel 2561 speichern.

    - zu bestimmten Zeiten (über eine Interne Uhr im 2561) möchte ich die im EEprom gespeicherten Hex Code´s wieder auslesen und über die RS232 des Mikrocontrollers an ein Gerät senden.

    - so weit ist das für mich auch kein Problem, ich versende ja im Moment schon per Print Befehl verschiedene Zeichen über die RS232

    Jetzt meine Frage:

    Wie muß ich die Ausgabe über Print machen für diesen Hex Code ???

    Ich hoffe das es jetzt verständlich ist.

    Gruß Jörg
    Ich kann jede Hilfe gebrauchen

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Print Chr(Zeichen) z.B. sendet Hex

    Gento

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2008
    Ort
    Wetzlar
    Alter
    45
    Beiträge
    16

    Hex Code an RS232 senden

    Hallo Gento,

    danke für deine antwort.

    Sende ich meinen Code 05 8D 80 00 04 32 09 05 dann so:

    Print Chr (05)
    Print Chr (8D)
    Print Chr (80)
    Print Chr (00)
    Print Chr (04)
    Print Chr (32)
    Print Chr (09)
    Print Chr (05)

    oder geht das auch auf einmal ???

    Gruß Jörg
    Ich kann jede Hilfe gebrauchen

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo jojo150272-A,

    das Problem ist, dass du ganze Bytes (Werte: 0..255) über RS232 übertragen willst.
    Das klappt aber standardmäßig ohne einen Binärmodus mit normalen Terminals nur mit ASCII-Werten. Dabei sind z.B. die Werte unter 32 mit Steuerzeichen belegt und werden nicht 1:1 übertragen.

    Was man machen kann ist (wird z.B. bei RS232-Bootloadern gemacht), dass man jedes Byte, das man senden will, in 2 ASCII-Zeichen packt.
    Gut klappt das z.B. mit dem Hex-Wert, also mit $00..$FF (0..255).
    Hex $00 würde man dann mit:
    Print Chr('0')
    Print Chr('0')
    ... übertragen und Hex $3F (63) mit:
    Print Chr('3')
    Print Chr('F')

    Im Empfänger muss man dann aus den 2 ASCII-Werten wieder das Byte zusammensetzen.
    Umständlich,- aber geht.

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von marvin42x
    Registriert seit
    02.08.2005
    Ort
    Berlin
    Alter
    68
    Beiträge
    703
    Wenn du ein volltransparente Übertragung brauchst findest Du hier eine Beschreibung:
    http://www.roboternetz.de/wissen/ind...com_UART_Input
    Das ist mit Byte Stuffing und Fehlerkontrolle. Das ist dann schon was feines.
    Die Anwendung eines solchen Protokolls findest du in dieses Projekt eingebettet:
    http://www.marvins-lab.roboterbastler.de/index.html
    dort kommuniziert ein Mega32 per ByteStuffing mit einem PC. Vielleicht kannst Du dir da was von raussägen falls es für dich in Frage kommt.

    Netter Gruß
    Die ersten zehn Millionen Jahre waren die schlimmsten. Und die zweiten Zehn Millionen Jahre, die waren auch die schlimmsten.url

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Tach,
    ansonsten geht es auch so:

    Print Chr (&H05); Chr (&H8D); Chr (&H80);........... Chr (&H05);

    Das ";" am Ende ist notwendig damit kein CR mitgeschickt wird.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2008
    Ort
    Wetzlar
    Alter
    45
    Beiträge
    16

    Hex Code an RS232 senden

    Hallo Repi,

    danke für deine Information . Genau das habe ich gesucht.

    Das mit dem CR ist für mich sehr wichtig. Nochmals vielen dank.

    Gruß Jörg
    Ich kann jede Hilfe gebrauchen

Berechtigungen

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