Forum: Mikrocontroller und Digitale Elektronik Terminalprogramm


von Caesar1980 (Gast)


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

von Reiner (Gast)


Lesenswert?


von Caesar1980 (Gast)


Lesenswert?

kenne ich bereits, aber da kann man doch nur den Hex-Code bzw.
ASCII-Code in dem Log-File speichern, oder?

von ... (Gast)


Lesenswert?

...du brauchst nur Zahlen von 0 ... 255 ... dann ist der Ascii-Code doch
Deine Zahl...

von Caesar1980 (Gast)


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...

von ... (Gast)


Lesenswert?

in welchem Format sendet den µC die Zahlen BCD - also die 100 in drei
Bytes 1 0 0 ?

von Caesar1980 (Gast)


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.

von ... (Gast)


Lesenswert?

senden tust Du Seriell binär ... zwei Datenbytes .... brauchst also eine
HEXTONUM Funktion...

von Caesar1980 (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

Das kannst du über ein Script machen beim Bray Terminal

von Caesar1980 (Gast)


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?

von ... (Gast)


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...

von Caesar1980 (Gast)


Lesenswert?

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...

von Karl H. (kbuchegg)


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.

von Caesar1980 (Gast)


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...

von Karl H. (kbuchegg)


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

von Caesar1980 (Gast)


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

von franz (Gast)


Lesenswert?

Evtl. kannst du dir auch mal HTerm ansehen
-> http://www.der-hammer.info/terminal/

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
Noch kein Account? Hier anmelden.