mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Terminalprogramm


Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Caesar1980 (Gast)
Datum:

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

Autor: ... (Gast)
Datum:

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

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: ... (Gast)
Datum:

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

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
senden tust Du Seriell binär ... zwei Datenbytes .... brauchst also eine
HEXTONUM Funktion...

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kannst du über ein Script machen beim Bray Terminal

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Caesar1980 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: franz (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.