Terminalprogramm

Gast #273933
Lesenswert?

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
Gast #273937
Lesenswert?

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...
Gast #273939
Lesenswert?

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.
Gast #273943
Lesenswert?

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?
Gast #273944
Lesenswert?

...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...
#273946
Lesenswert?

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.
Gast #273947
Lesenswert?

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...
#273948
Lesenswert?

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
Gast #273949
Lesenswert?

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 ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren