Hallo, ich suche ein Terminalprogramm, welches mir die gesendeten Zeichen vom µC über die RS232 nicht als ASCII-Code oder Hex-Code interpretiert, sondern als Dezimalzahl! Dabei sollte ein Live-Mitschnitt in einem Log-File (.txt) möglich sein. Ähnlich wie bei Hyperterminal bei Windows. Dieses interpretiert jedoch alle empfangenen Zeichen als ASCII-Zeichen. Über Hinweise für ein solches Programm wäre ich dankbar! MfG Sven
kenne ich bereits, aber da kann man doch nur den Hex-Code bzw. ASCII-Code in dem Log-File speichern, oder?
...du brauchst nur Zahlen von 0 ... 255 ... dann ist der Ascii-Code doch Deine Zahl...
Ich brauche Zahlen von 0 bis 100. Das ganze soll eine Wetterstation geben mit Luftdruck, Temperatur und Luftfeuchtigkeit. Ich möchte das txt-File dann am PC in ne Access-Datenbank importieren. Daher benötige ich auch die Dezimalzahlen und nicht den ASCII-Code. Wenn mich nicht alles täuscht, dann kann Access beim Import das nicht zurückwandeln...
in welchem Format sendet den µC die Zahlen BCD - also die 100 in drei Bytes 1 0 0 ?
Nein, ich wandel mit nem internen AD-Wandler das Messergebnis in nen Binärcode, diesen rechne ich dann um in mein gewünschtes Ergebnis, welches ich dann 1:1 nach aussen gebe. Also schickt mit der µC z.B. 100 nach aussen, das dürfte dann der Hex-Code sein.
senden tust Du Seriell binär ... zwei Datenbytes .... brauchst also eine HEXTONUM Funktion...
Hmmh...ist so etwas schwer selbst zu schreiben? Ne einfachere Lösung gibt es nicht, dass man das in nem Terminalprogramm oder so einstellen kann? Das wäre mir ehrlich gesagt lieber ;-)
Gibt es so ein Script schon vorgefertigt? Ich bin nämlich nicht gerade der Meister in der C-Programmierung. Bin gerade dabei es zu lernen. Und mit dem Script werden dann die Daten numerisch an den PC gesendet und nicht mehr in den verflixten Ascii-Code gewandelt?
...dur sendest einfach byteweise Daten vom µC zum PC .....der muss nun aus den Datagrammen irgendwas bauen ..... sondern ein Byte kann werte zwischen 0 ... 255 darstenn 00 - FF - das sind nur verschiedenen Notationen .... schaue Dir das mal via CALC.EXE an wie eine Bytefolge je nach Anzeigesyetm zu interpretieren ist...
Daran hab ich auch schon gedacht. Aber ich habs nicht mehr ganz kapiert, wie man z.B. 51 als eine 5 und eine 1 schicken soll. Die Aufsplittung bereitet mir noch Probleme...
Wo ist das Problem 51 / 10 -> 5 also ist die erste Ziffer eine 5. Zu der Zahl 5 addierst Du noch den ASCII Code for '0' und schon erhaelts Du das Zeichen '5' 51 % 10 -> 1 die zweite Ziffer ist also eine 1 Wieder: den Code fuer '0' addieren und du erhaelts das Zeichen '1' Wenn Du nun '5' und '1' ueber die serielle uebertraegst, dann wird Dir jedes Terminalprogramm der Welt (sofern es ASCII versteht) eine wunderschoene 51 anzeigen. Anstatt der Divisionen kann man auch ganz einfach in einer Schleife immer wieder 10 subtrahieren, bis die Zahl kleiner als 10 geworden ist. Man zaehlt dann ganz einfach die Anzahl der Schleifendurchlauefe mit und erhaelt so die Zehner. Der Rest sind dann die Einer. Wenn Deine Zahlen ueber 100 sind, dann wird eine weitere Schleife vorgeschaltet, die 100 subtrahiert und deren Anzahl mitzaehlt. Fuer kleine Zahlen ist dass gar kein schlechter Ersatz fuer eine Division.
Ok, das mit den Zehner ist mir klar, aber das mit den Einsern noch nicht so ganz. Wie meintest du das mit den 51 % 10? Ich glaube mir steht gerade nur einer auf dem Schlauch... Aaah, dass ich die Null im Ascii-Code hinzuaddieren muss, das lag dann das Problem bei den Zehnern bei mir...
Sorry. % ist die C-Schreibweise fuer 'modulo'. Also der Rest der bei einer Division uebrig bleibt. (So wie in der Grundschule, 2. Klasse: Eine Frau hat 7 Äpfel und 3 Kinder. Wieviele Äpfel bekommt jedes Kind und wieviele Äpfel bleiben übrig.) Wenn Du die fortgesetzte Subtraktion verwendest brauchst Dau modulo auch nicht. Der Rest belibt Dir dann sowieso uebrig bsp. 68 Zahl Zaehler 68 0 ; 68 > 9 ? Ja: Zahl = Zahl - 10; inc( Zaehler) 58 1 ; 58 > 9 ? - " - 48 2 38 3 28 4 18 5 8 6 ; 8 > 9 ? Nein: fertig, die einzelnen Ziffern der 2 stelligen Zahl sind 6 und 8 oder anders ausgedrueckt 68 / 10 -> 6 68 % 10 -> 8
Ah, ok...nun hats Klick gemacht ;-) Da ich sowieso Zahlen benötige von 0 bis 100, genauer -40 bis 100, werd ich wohl die Subtraktionsmethode verwenden, da ich ja sonst nur bis 99 kommen kann. Ein dickes Dankeschön für die Hilfe!! Hoffe, ich bekomme es nun auf die Reihe ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.