Forum: PC-Programmierung Serielle Daten ohne Trennzeichen auftrennen


von Karls Q. (karlsquell)


Lesenswert?

Hallo,

ich habe hier einen Kraftmesser, dessen Daten ich mit einer seriellen 
Schnittstelle (COM-Port) auslesen kann.

Dafür muss man eine "9" als Ascii senden und zurück kommen die Daten.

Das sieht dann so aus
1010.12 entspricht +10,12N
0010.12 entspricht -10,12N

Soweit sogut...

Dummerweise werden die Daten ohne Trennung hintereinander weg gesendet 
bei mehrfachabfrage.
Das sieht dann so aus:
1010.121010.121010.121010.121010.121010.121010.12

In HTerm kann ich mir die Daten untereinander schreiben lassen, indem 
ich eine feste Zeilenlänge (7) angebe oder nach Zeit gehe.

Doch leider werden die Daten nicht so abgespeichert wie ist sie dann 
sehe, sondern hängen wieder wie oben aneinander.

Gibt es eine Möglichkeit dies zu trennen, zb durch ein \n nach 7 
Zeichen?

Hab auch schon Tera Term probiert, aber da habe ich kein Macro 
hinbekommen.

Gruß
Johannes

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Selbst auslesen (File oder UART/COM), den Punkt suchen, zwei Zeichen 
weiter ist deine Zahl zuende.
Im eigenen Programm kannst die Antworten auch einzelnd in ein Array 
schieben (nach Konvertierung in Zahlen), wenn du pro Anfrage nur eine 
Antwort bekommst.

: Bearbeitet durch User
von Karls Q. (karlsquell)


Lesenswert?

> Im eigenen Programm kannst...

Leider kann ICH nicht :(
Da fehlen mir die Kenntnisse in der Programmierung, sry

von Klemme (Gast)


Lesenswert?

Der Script Communicator kann das vielleicht

von Christian M. (Gast)


Lesenswert?

Karls Q. schrieb:
> Leider kann ICH nicht :(

Und wie soll das denn gehen  ohne

Random .. schrieb:
> Im eigenen Programm

?

Gruss Chregu

von Karls Q. (karlsquell)


Lesenswert?

Ich hatte gehofft, dass es doch noch eine Funktion in Hterm/ tera term 
gibt, um die Daten, so wie man sie sieht, auch abspeichern kann.

Gruß

von Der Andere (Gast)


Lesenswert?

Karls Q. schrieb:
> Leider kann ICH nicht

Dann lerne es.
Seit Arduino & co doch kein Hexenwerk mehr

von bingo (Gast)


Lesenswert?

Du kannst die Werte als ASCII-Datei abspeichern und mit notepad++ 
weiterverarbeiten (Makro: finde Punkt, 2x Cursor rechts, setze \n bds. 
\r\n ein)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und was passiert, wenn Du Deinem Sensor etwas anderes als die "9" 
sendest?

Vielleicht gibt der dann ja was sinnvoll als Trennzeichen verwendbares 
aus; was steht denn in dessen Dokumentation?

von Karls Q. (karlsquell)


Lesenswert?

Rufus Τ. F. schrieb:
> Und was passiert, wenn Du Deinem Sensor etwas anderes als die "9"
> sendest?

Habe alle Zahlen und Buchstaben durch. Er sendet nur bei der "9"

> Vielleicht gibt der dann ja was sinnvoll als Trennzeichen verwendbares
> aus; was steht denn in dessen Dokumentation?

In der Doku steht leider auch nicht mehr, nur die 
Schnittstellenparameter, der Sendebefehl und wie die Antwort zu deuten 
ist.

Es gibt auch keine Möglichkeit im Menü was umzustellen.

von Karls Q. (karlsquell)


Lesenswert?

So habs über eine Krücke, ähnlich wie bingo gesagt, über notepad++ 
geschafft.

Hab die Datei mit Notepad++ gehöffnet, die Makro-Aufzeichnung gestartet, 
den Cursor über die Pfeiltasten an die richtige Position gesetzt, einmal 
Enter gedrückt und die Aufzeichnung beendet.
Danach habe ich das Makro 1000 mal ausführen lassen und schon standen 
die Werte alle schön untereinander.

Das geht natürlich nur, wenn alle Werte gleich lang sind.

Danke für die Hilfe

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Falls du sed installiert hast (sollte eigentlich jeder haben ;-)), hilft
evtl. dieses Kommando in der Konsole:

1
sed 's/\(\...\)/\1\n/g' COMx

Es fügt jeweils nach der Zeichenfolge ".xx" einen Zeilenvorschub ein.
Vorher musst du mit MODE noch die richtigen Schnittstellenparameter
einstellen.

von bingo (Gast)


Lesenswert?

Karls Q. schrieb:
> Danke für die Hilfe

Gerne!

von Hauke Haien (Gast)


Lesenswert?

In Hterm kannst du doch auch Zeitstempel in die logdatei einfügen 
lassen.
Neben save gibt es ein Drop down Menü...

von Karls Q. (karlsquell)


Lesenswert?

Hauke Haien schrieb:
> In Hterm kannst du doch auch Zeitstempel in die logdatei einfügen
> lassen.
> Neben save gibt es ein Drop down Menü...

Ja das stimmt, aber hast du das mal ausprobiert?

Das sieht dann für 1010.12 etwa so aus:

1 [Zeitstempel]
0 [Zeitstempel]
10 [Zeitstempel]
. [Zeitstempel]
12 [Zeitstempel]

Also nicht zu gebrauchen!

Tera Term macht das besser, indem es nur hinter jedes \n einen Stempel 
setzt

von Hauke Haien (Gast)


Lesenswert?

Hmkay, das liegt dann wohl an deinem Sender.
Dann empfehle ich Python und Pyserial.

von Daniel F. (df311)


Angehängte Dateien:

Lesenswert?

das ist zwar geany und nicht notepad++, aber ich bin mir zu 99.9% 
sicher, dass es suchen/ersetzen mit regex auch in notepad++ gibt.
alternativ geany für windows.

von Thosch (Gast)


Lesenswert?

In HTERM gibts doch die schöne Option
"Newline after ... ms"

Da stellst Du einfach einen Wert ein, der groß genug ist daß nur 
zwischen den Antworten ein Newline eingefügt wird, also z.B. 50ms.

mit dem ASEND Button kannst du dann noch die "9" z.B. alle 250ms senden,
dann sollten sich die Antworten im Terminalfenstre hübsch untereinander 
einsortieren, immer eine Antwort pro Zeile.

von Karls Q. (karlsquell)


Lesenswert?

> In HTerm kann ich mir die Daten untereinander schreiben lassen, indem
> ich eine feste Zeilenlänge (7) angebe oder nach Zeit gehe.

@Tosch: Schaust du oben in meinen Post, da habe ich das beschrieben. 
Habe das also schon ausprobiert. Allerdings fügt der da kein Newline 
ein, sondern sortiert das nur am Bildschirm. Speicher ich die Datei ab, 
ist wieder alles hintereinander

von Thosch (Gast)


Lesenswert?

Upps, stimmt.
HTerm hat da leider ein Defizit, die eingefügten LineFeeds per Anzahl 
Zeichen und Timeout tun nur auf dem Bildschirm.

Mit ScriptCommunicator (05.08) tut's, da kann man in unter
Settings | log options
ein Logfile eintragen und einen Wert für
"new line after ms pause" eintragen. Der machts dann nur im LogFile 
und nicht auf dem Bildschirm ;-)

Sollte genau das leisten, was du wolltest.

achja, unter den "log options" im Feld "general" den Haken bei "send"
rausnehmen, sonst schreibt er die neuner die er sendet mit ins Logfile.

Der ScriptCommunicator ist ein Projekt auf Sourceforge:
https://sourceforge.net/projects/scriptcommunicator/

Das ist ein unglaublich mächtiges Tool...

von Karls Q. (karlsquell)


Lesenswert?

@Thosch
Tool gerade getestet und ich bin begeistert!
Danke

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.