mikrocontroller.net

Forum: PC Hard- und Software HTerm "save output" konfigurieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Aniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Forengemeinde.
Ich habe mal eine frage bezüglich HTerm.
Ich empfange über einen COM Port Daten von einem Mikroprozessor,  die 
Daten sind aufgeteilt in ein Highbyte und einem Lowbyte.
Diese werden alle nacheinander ohne Trennzeichen oder ähnliches gesendet 
und auch empfangen.
Das sieht ungefähr so aus: 010401ff01450167 usw...
Die ersten beiden zahlen ist das Highbyte, die zwei folgenden Lowbyte, 
und so weiter.
Diese Daten möchte ich mit der Taste "save output" speichern und in 
Excel bearbeiten, einen Grapfen bilden.
Nun möchte ich High und Lowbyte zusammen in einer Zeile stehen haben, 
und das alles untereinander.
Also so:
0104
01ff
0145
0167, usw.
Neben der Taste kann man noch einige save output Optionen vornehmen, 
ebensp etwas von mfsting.
Was muss ich dort eingeben, damit mir die Daten in meinem gewünschten 
Format gespeichert werden?
Vielen Dank schonmal,  würdet mir echt helfen.

Liebe grüße,  Daniel

Autor: Icke ®. (49636b65)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Setz einfach "New line every .. characters" auf zwei.

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Icke ®. schrieb:

> Setz einfach "New line every .. characters" auf zwei.

Funktioniert nur auf dem Bildschirm.

Autor: Aniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harald schrieb:
> Funktioniert nur auf dem Bildschirm.

Richtig. Das ist ja mein Problem.  Das was ich auf dem Bildschirm sehe, 
wenn ich newline every x character mache, hatte ich  gerne in der 
erstellten Datei.

Autor: Kaj G. (Firma: RUB) (bloody)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht ein z.B. Pythonscript schreiben was dir die Daten in dein 
gewuenschtes Format konvertiert?

Autor: Peter M. (r2d3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Aniel,

Aniel schrieb:
> Diese Daten möchte ich mit der Taste "save output" speichern und in
> Excel bearbeiten, einen Grapfen bilden.

wenn Du Deine Daten sowieso in Excel zum Karpfen aufbereiten willst, 
wieso liest Du die Quelldatei nicht gleich mit VBA ein?

Das ist gerade mal eine Schleife mit byteweisem Einlesen + Dateihandling 
(Aufmachen und Schließen).

Autor: Aniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo. Vielen Dank für eure Antworten.
Hab mal nach VBA gesucht und auch einiges gefunden.  Nur steige ich da 
irgendwie nicht so recht durch.
Hätte evtl. Jemand einen Beispielcode, der soetwas kann?
Bin mir c und konsorten nicht vertraut... Bin ein mittelmäßiger 
Avr-Assembler programmierer :-D

Ich mag es einfach zu wissen, was mein kleiner Chip macht, deswegen hab 
ich noch scheu vor C und C++, ebenso Basic.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Aniel schrieb:
> Ich mag es einfach zu wissen, was mein kleiner Chip macht, deswegen hab
> ich noch scheu vor C und C++, ebenso Basic.

dann laß doch Deinen kleinen Chip gleich selber das NewLine mitschicken 
bzw \r\n wenn es sowieso für Windows ist.

Gruß aus Berlin
Michael

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aniel schrieb:
> Bin mir c und konsorten nicht vertraut...

Dann mach's in C, ist auch kein Problem ;-)

- Zwei Zeichen einlesen
- Zwei Zeichen rausschreiben
- \r\n rausschreiben
- wieder von vorne bis eof

Autor: Peter M. (r2d3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Aniel,

Aniel schrieb:
> Ich mag es einfach zu wissen, was mein kleiner Chip macht, deswegen hab
> ich noch scheu vor C und C++, ebenso Basic.

Das ist eine durchsichtige Schutzbehauptung aus dem Paket 
Arbeitsvermeidungsstrategie.

Anbei erhältst Du ein lauffähiges, aber unfertiges Stück Code zum 
Spielen.
In Excel machst Du folgendes:
=> Taste ALT F11 Einfügen Neues Modul

Den Rest kannst Du Dir anhand der Hilfe in VBA erarbeiten.
Das ist nur noch Umsetzen von ein bisschen Logik, die Du ja als 
AVR-Programmierer beherrschst.
Alles wesentliche, also Dateihandling und Zellzugriff ist schon drin.

Achtung: Die VBA-Hilfe im VBA-Editor ist nicht mit der Excel-Hilfe 
identisch!
Sub log_lesen()
    Dim y As Long 'Zeilenzähler in Excel-Tabelle
    Dim beit As Byte 'Puffer für gelesenes Byte der Eingabedatei
    Dim ffile As Long 'Handle für den Dateizugriff
    Dim hier As Object 'Object, um Zellwerte beschreiben zu können
    
    Set hier = ThisWorkbook.Sheets("Tabelle1") 'hier ist eine Objectvariable
    
    ffile = FreeFile() 'Handle holen
    Open "E:\hilfe\transfer.txt" For Binary Access Read Lock Read As ffile
    
    y = 1
    Do Until EOF(ffile)
        Get ffile, , beit
        'Das gelesene Byte als Attribut "Value" in die mit der Cells-Methode spezifizierte Zelle schreiben
        hier.Cells(y, 1).Value = beit
        y = y + 1
    Loop
    
    Close ffile
    
End Sub

: Bearbeitet durch User
Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen lieben Dank für deine Antwort :-)

Ich probiere es demnächst mal aus.
Bis dahin habe ich das Problem auf andere Art ersteinmal umschifft...

Ich wandele die Werte in den Registern in Ascii-Zahlen um und schicke 
die über UART an den PC. Hinter jedem Wert hänge ich CR+LF an.
Nur ist jetzt mein Baudrate nicht mehr ausreichend. 115200 Baud ist nun 
zu langsam. Hoffe, das sich das mit einem Bluetooth Modul und einer 
Baudrate annähernd 1000000 lösen lässt.
Mal schauen, sonst habt ihr mir schon gute Ideen gegeben, z.b. wusste 
ich bislang nichts von VBA :-)

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Daniel schrieb:
> Ich wandele die Werte in den Registern in Ascii-Zahlen um und schicke
> die über UART an den PC. Hinter jedem Wert hänge ich CR+LF an.
> Nur ist jetzt mein Baudrate nicht mehr ausreichend. 115200 Baud ist nun
> zu langsam. Hoffe, das sich das mit einem Bluetooth Modul und einer
> Baudrate annähernd 1000000 lösen lässt.

UART über USB-RS232/TTL-Adapter?
FTDI, CP2102, CH340 usw. können da auch bis 921600 bzw. 500kBit/1Mbit.
Uaf der PC-Seite hängt es vom terminalprogramm ab, ob diese Baudraten 
setzen kann.
500kBit mit FTDI-USB-Adapter und einem Mega32 mit Baudratenquarz habe 
ich selbst schon in einem alten VB6.0-Programm genutzt.

Gruß aus Berlin
Michael

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Aniel schrieb:
> Ich empfange über einen COM Port Daten von einem Mikroprozessor,  die
> Daten sind aufgeteilt in ein Highbyte und einem Lowbyte.
> Diese werden alle nacheinander ohne Trennzeichen oder ähnliches gesendet
> und auch empfangen. Das sieht ungefähr so aus: 010401ff01450167 usw...
> Die ersten beiden zahlen ist das Highbyte, die zwei folgenden Lowbyte,

Daß dieses "Protokoll" inhärent kaputt ist, ist Dir klar?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Daß dieses "Protokoll" inhärent kaputt ist, ist Dir klar?

Wie meinst du das?  Denke mir, solange ich weiß,  wie ich die Daten 
interpretiere, ist das doch ok oder nicht? Bitte um Aufklärung :-)

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung wenn ich ein zweites Mal schreibe...
Ist das evtl. So gemeint, falls ein Byte bei der Übertragung ausfällt, 
ich alle folgenden nicht mehr richtig interpretieren kann?
Dann wäre der Ansatz in Ascii umzuwandeln und mit Zeilenumbruch zu 
versehen tatsächlich besser, da ein Zeilenumbruch nach einem kompletten 
umgewandelten 16 Bit wert kommt.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> Ist das evtl. So gemeint, falls ein Byte bei der Übertragung ausfällt,

Auch. Aber das Problem tritt bereits auf, wenn Du das sendende Gerät vor 
dem Start von HTerm bereits einschaltest. Woher willst Du wissen, 
welches der empfangenen Bytes welche Bedeutung/welchen Stellenwert hat?

Du kannst Deine Daten nur dann halbwegs zuverlässig empfangen, wenn Du 
immer erst HTerm (und die Aufzeichnung damit) startest und dann Dein 
sendendes Gerät einschaltest.

Deutlich besser ist die Verwendung eines eindeutigen Trennzeichens, um 
einzelne Telegramme/Datensätze voneinander zu trennen.

Anhand Deiner Beschreibung ist nicht eindeutig zu erkennen, ob Du 
Binärdaten sendest oder eine hexadezimale Text-Repräsentation der Daten.

In letzterem Falle liegt Deine "ASCII-Konvertierung" ja schon vor, da 
ist dann nur noch das Trennzeichen erforderlich:


Statt
010401ff01450167 

so:
0104\n
01ff\n
0145\n
0167\n

etc.

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.