Hallo sourcecode
Bei Unklarheiten/Fragen/Problemen => melden!
mfg
Hero_123
Hallo Hero_123,
vielen Dank für die Code Schnipsel. Momentan kann ich damit noch nicht sehr viel anfangen.
Ich denke bzw. hoffe das es für meine Problemlösung etwas einfacher gehen sollte/dürfte
Werde mich die Tage nochmal damit beschäftigen.
sourcecode
Hallo sourcecode
Bei Unklarheiten/Fragen/Problemen => melden!
mfg
Hero_123
Hallo Hero_123,
mein Problem besteht natürlich nach wie vor.
Ich bin auch noch nicht wirklich firm in der C-Programmierung, weswegen wir
wohl dann auch ab und an mal Mittel und Wege zur Lösung fehlen.
Vielleicht ist meine _Denke_ in diesem Fall auch falsch :-/
Deine Lösung kommt mir im Moment noch etwas kryptisch vor weswegen
ich mich da noch nicht ran traue und ich der Meinung bin (ohne es wirklich
zu wissen) das es für meine Problematik eine _einfacherer_ Lösung geben
müßte / sollte / könnte
Nur mal so für mich zum Verständnis. Alle Werte (aller Sensoren z.B) werden
in einer Variable sicherlich _binär_ gespeichert, oder ?
Wie kriege ich die Werte dann in Hex umgewandelt. Nicht als Ausgabe mit
_printf_ sondern als Hex-Wert gespeichert in einer Variable. Diese Hex-Werte
wollte ich dann in einen Array schreiben, den ich dann später wieder auslesen
kann.
sourcecode
Genau genommen werden die Werte nicht in einer Variable gespeichert. Die Variable steht nur für eine stelle im Speicher wo die Werte binär gespeichert werden
Du musst die Werte nicht in Hex umwandeln. Einfach die Binärwerte anzeigen lassen. Terminals zeigen die Werte dann automatisch in Hexwerten an.
Du musst nur eine Umwandlung vornehmen wenn du den Wert in Dezimal angezeigt haben willst.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo sourcecode
Ich versteh' nicht ganz, was Du da machen willst - weshalb willst Du den Wert dist_val1 = nds3_get_dist() in einen Hex-Wert umwandeln und dann in ein Array speichern? Gemäß NiboLib ist "nds3_get_dist()" die aktuell gemessene Distanz oder meinst Du uint8_t nds3_distances [181] - willst Du diese Werte in einem Array speichern und dann übertragen?
Du kannst doch problemlos den Wert dist_val1 in einen String umwandeln (muss ein String sein zum Senden) und dieses zyklisch senden...
Wie schon Kampi sagt - man kann in einem Terminalprogramm (z.B. hTerm http://www.der-hammer.info/terminal/, verwende ich, läuft auch problemlos unter WIN 7) sich die per XBEE übertragenen Werte als ASCII, HEX, BIN oder DEC anzeigen lassen. Es geht nur darum - wenn Du die Werte übertragen willst auf den PC - da mußte jeden Wert umwandeln in einen String und den Zeichenweise übertragen - dazu gibt's bei meinen Codeschnipseln die Funktionen:
- umwandeln eines int8_t wertes in einen String und diesen speichern in einem Char_buffer
- Funktion, um einen String auf Terminal auszugeben => diese Fkt ruft Funktion auf, um Char auf Terminal auszugeben
- Funktion, um Char auf Terminalauszugeben
Das Terminalprogramm macht dann aus den empfangenen Werten wieder eine "brauchbare" Anzeige - ich lass mir z.B die Motordrehzahlen, Abstand, Bodensensorenwerte, Motorströme auch per XBEE an den PC senden.
mfg
Hero_123
Hallo Kampi / Hero_123,
vielen Dank für Eure Antworten.
Langsam geht mir ein Lichtlein an
Du hast das wohl richtig erkannt Hero_123. Ich möchte die ermittelten Werte aus uint8_t nds3_distance in ein Array schreiben und dann übertragen.
Ob die Werte dann wirklich in einen Array geschrieben werden müssen ist mir auch nicht ganz klar. Zumindest habe ich das bis jetzt so gelöst. Mit den
Distanzwerten habe ich das auch schon versucht, aber es kamen irgendwie nie die zeichen am Terminal an, die ankommen sollten.
Ich habe das bis jetzt so gemacht, das ich von vornherein nur Hex-Werte übertragen habe.
xbee_tx_buf[0] = 0x43;
xbee_tx_buf[1] = 0x45;
Da ich selbiges mit den ermittelten Werten von uint8_t nds3_distances gemacht habe und nie das
angekommen ist, was ankommen sollte, habe ich gedacht, ich müsse diese Werte erst in Hex
umwandeln. Leider kann ich meinen Code nicht posten, da ich momentan nicht daheim bin.
Morgen kann ich mal ein paar Schnipsel posten, wenn das vielleicht weiter hilft.
Ich versuche aber mal auf Grund der Antworten weiter zu kommen.
Vielen Dank.
sourcecode
Hallo sourcecode
Du nutzt offensichtlich die XBEE-Funktionen, die in der Lib sind - fkt die denn überhaupt korrekt? Ich hab' da auch mal mit rumprobiert, das hat aber bei mir ÜBERHAUPT nicht so geklappt, wie ich es wollte, habe mir deshalb selbst die Sende- / Empfangsroutinen für den UART1 geschrieben und verwende diese (d.h ich sende/empfange über UART1).
Jedenfalls - wenn Du uint8_t nds3_distances [181] übertragen willst, mußte Dir ein Array definieren, das diese Werte aufnehmen kann, ich denke aber nicht, dass Du alle Werte AUF EINMAL per XBEE senden kannst - irgendwo hab ich mal gelesen, dass man max 70 bytes/sendzyklus übertragen kann...
mfg
Hero_123
Geändert von Hero_123 (29.12.2011 um 22:22 Uhr)
Hallo Hero_123,
ich benutze die XBEE Funftionen der lib. Wenn die natürlich nicht richtig funktionieren, könnte
das vielleicht auch mein Problem sein. Wie gesagt. Wenn ich konstante Werte / Zeichen
die ich vorher selber in Hex definiert habe übertrage funkioniert das ganz gut soweit.
Die ermittelten Werte des Distanzscanners habe ich versucht so zu übertragen:
xbee_tx_buf[0] = dist_val1;
xbee_tx_buf[1] = dist_val2;
xbee_tx_buf[2] = dist_val3;
Es kommt zwar dann auch was am Terminalprogramm an, aber nicht das, was ich
eigentlich erwarte. Wenn natürlich vielleicht an den Funktionen der lib etwas
nicht korrekt ist, kann man da als Laie natürlich auch mal anfangen zu verzweifeln
Gruß
sourcecode
Lesezeichen