USM Universal Serial Monitor v0.3

OP #8100112
Lesenswert?
• ▲
▼

Ich habe ein kleines Projekt gestartet, und entstanden ist das kleine Tool USM der Universal Serial Monitor. Es dient dazu die Daten eines Mikrocontrollers auszulesen und anzuzeigen. Eigentlich wollte ich nur meine rudimentären Python Kenntnisse etwas verbessern und dabei ist dieses kleine Tool entstanden.

Vielleicht hat jemand noch Ideen, was man noch hinzufügen kann ....

Das Tool kann man herunterladen unter: https://drive.google.com/file/d/1NtwXiq-AcIwBZFu0u32Id8Q7OtT5701c/view?usp=drive_link

Angehängte Dateien:
: Verschoben durch Moderator
Beitrag #8100178 wurde vom Autor gelöscht.
OP #8100374
Lesenswert?
• ▲
▼

Es gibt bereits ein Update des kleine Tools USM Universal Serial Monitor. Bei der neuen Version v0.3.9 habe ich eine große Digitalanzeige hinzugefügt.

Vielleicht hat jemand noch Ideen, was man noch hinzufügen könnte ....

Das Tool kann man herunterladen unter: https://drive.google.com/file/d/1BVHoKTpFtJbQ7xZx24ow_txOWpUW0kcW/view?usp=drive_link

Angehängte Dateien:
OP #8100451
Lesenswert?
• ▲
▼

Helmut -. schrieb:

Loggingfunktion, Zeilenende/Newline-Erkennung (nur CR, nur LF, CR/LF), HEX- BIN- ASCII-Darstellung, Sendefunktion evtl. zusätzlich mit Festtexten...

An der Loggingfunktion bin ich tatsächlich gerade dran. Ist aber nicht so einfach .... Sendefunktion ist eine gute Idee, schreib ich auf die Todo-Liste. Über die HEX-, BIN- ASCII Darstellung muss ich noch mal nachdenken.

Vielen Dank für die Ideen!

: Bearbeitet durch User
OP #8100607
Lesenswert?
• ▲
▼

Helmut -. schrieb:

Dirk schrieb:

Sendefunktion ist eine gute Idee, schreib ich auf die Todo-Liste.

Musst dir nur Gedanken machen, wie du die non-ASCII-Zeichen hinbekommst. Die werden ja auch manchmal gebraucht (STX, ETX u.a.).

Nach etwas nachdenken, glaube ich, die Übertragung mit Steuerzeichen sollte unbedingt mit rein. Ich werde das in meine Todo-Liste aufnehmen. Zur Zeit kämpfe ich aber noch mit dem loggen. Aktuell baue ich beim beheben eines Bugs gefühlt drei neue ein .....

#8100646
Lesenswert?
• ▲
▼

Dirk schrieb:

Ich habe den Python Quellcode ganz normal in eine EXE umgewandelt, damit das Programm direkt ausführbar ist. Ist das falsch?

Nö ist es nicht unbedingt, EXE ist der Standard unter Windows. Es ruft halt die Bedenkenträger auf den Plan (s.u.), aber mehr auch nicht. F. P. schrieb im Beitrag #8100137:

Ein Python-Programm als EXE-Datei? Das soll "universal" sein? Eher Malware, also Vorsicht!

Allerdings sperrst Du mit dem Compilieren des Pythonscriptes die Nutzer anderer OS (Mac, Linux, BSD, ...) erst mal aus. Die müßten dann erst mal eine VM oder Wine bemühen um das Programm ans Laufen zu bekommen. Mit einem einfachen Pythonscript wäre das einfacher, da die Leute die Dein Prog interessiert vermutlich Python auf ihrem System installiert haben. Die Leute die Interesse an Deinem Programm haben machen eher konstruktive Vorschläge, so wie der Niklas und der Helmut.

Wenn Du Dein Programm als Pythoncode zur Verfügung stellst, wirst Du halt noch mehr Leute ansprechen und der eine oder andere wird dann vielleicht sogar aktiv daran mit arbeiten. Am Ende ist es aber Deine Entscheidung, wie Du das Programm veröffentlichst.

OP #8101257
Lesenswert?
• ▲
▼

Nach dem langen Wochenende gibt es jetzt eine neue Version von meinem kleinen Tool USM dem Universal Serial Monitor. Die aktuelle Version ist die v0.4.4.

Die Daten und der Graph können jetzt abgespeichert werden.

Das Programm kann hier herunter geladen werden: https://drive.google.com/file/d/1JANrH2iyQhTrlZYvIBg3DSw4TkHhR8_Z/view?usp=drive_link

Angehängte Dateien:
: Bearbeitet durch User
#8101306
Lesenswert?
• ▲
▼

Dirk schrieb:

Aber .txt Format schreibe ich auf meine Todo-Liste ....

Da man csv's oftmals mit Tabellenkalkulationen weiter verarbeitet, wären einige Anpassungen im csv-Format sinnvoll. Schick wäre es, wenn man diese Anpassungen wählbar machen könnte Beim Speichern des csv-Files den Dezimal- und Datentrenner frei wählbar machen. So wie Dein csv aktuell ist, werden die Fließkommazahlen als reiner Text von einer Tabellenkalkulation eingelesen, sofern diese auf deutsch eingestellt ist. Im deutschsprachigen Raum ist es besser den Dezimaltrenner auf "," und den Feldtrenner auf ";" einzustellen, dann wird von der Tabellenkalkulation alles korrekt erkannt (gerade mit Libreoffice auf dem Mac getestet). Eine weitere Sache wäre, daß man bei Bedarf die Feldwerte in Hochkommata setzen kann, also so "1.62V","2011". Das braucht man, wenn der Feldwert den Feldtrenner als Zeichen enthält. Auch das Feature mit den Hochkommata wählbar machen. Ein weiterer Stolperstein beim Auswerten mit der Tabellenkalkulation ist im ersten Feld die am Zahlenwert angehängte Einheit. Auch diese führt dazu, daß dies nicht als Zahl erkannt wird, was die Auswertung erschwert. Hier mal darüber nachdenken ob hier ein Extrafeld für die Einheit nicht besser wäre. Schön wären auch ein oder zwei Headerzeilen, die den Inhalt der Datei erklären. In der ersten Zeile könnte eine Beschreibung stehen z.B.

1
Spannung,Digits

und in der zweiten Zeile die Einheiten z.B.

1
V,

. Das sind nur Vorschläge was man an dieser Stelle so machen könnte. Denke einfach mal darüber nach und probiere auch mal aus was beim Einlesen in eine Tabellenkalkulation heraus kommt. Was da am End herauskommt hängt auch ein bischen von der Tabellenkalkulation ab also ruhig mehrere ausprobieren wenn Du die Möglichkeit hast.

: Bearbeitet durch User
#8101307
Lesenswert?
• ▲
▼

Helmut -. schrieb:

Frage zum Logging: wenn ich kein csv haben möchte, sondern nur die nativen Strings als .txt, geht das auch?

Dann benenne die Datei einfach in .txt um. Wenn der Feldtrenner stört dann diesen mit einem Editor Deiner Wahl per "Ersetzen" durch ein Leerzeichen ersetzen.

Eine Frage sei noch erlaubt, wozu soll das native Textformat gut sein? Das erschließt sich mir nicht wirklich.

#8101314
Lesenswert?
• ▲
▼

Hans schrieb:

Eine Frage sei noch erlaubt, wozu soll das native Textformat gut sein? Das erschließt sich mir nicht wirklich.

Das ist dann sinnvoll, wenn ich den Output einer seriellen Schnittstelle monitoren möchte, ohne mir grosse Gedanke zu machen, welche Zeichen da vorkommen. Wenn du z.B. sowas hast (aus meinem aktuellen Projekt)

MQTT DIAG: count=1617; cb_max_us=507; cb_slow=0
WIFI: status=3; rssi=-52; ch=1; events=0; disc=0; conn=0; ip=0; lat_n=2094; lat_avg=4; lat_max=183; lat_fail=0; last_lat=3
PIXELS: count=30; max_us=2198; avg_us=1968; last_show=64123; last_show_us=1957; mqtt=1617
MQTT DIAG: count=1617; cb_max_us=507; cb_slow=0

dann willst du nicht überlegen, wie das dann in einer Tabellenkalkulation ausschaut.

: Bearbeitet durch User
OP #8101317
Lesenswert?
• ▲
▼

Hans schrieb:

Eine weitere Sache wäre, daß man bei Bedarf die Feldwerte in Hochkommata setzen kann, also so "1.62V","2011". Das braucht man, wenn der Feldwert den Feldtrenner als Zeichen enthält. Auch das Feature mit den Hochkommata wählbar machen. Ein weiterer Stolperstein beim Auswerten mit der Tabellenkalkulation ist im ersten Feld die am Zahlenwert angehängte Einheit. Auch diese führt

Die Daten im linken Fenster (Empfangene Daten) sind ja die Rohdaten, wie sie vom Mikrocontroller kommen. Wenn man das "V" nicht möchte, muss man das einfach im Programm des Controllers weglassen. Ich habe jetzt noch mal verschiedene Excel Versionen getestet, bei der einen Excel-Version werden die Daten komplett in eine Spalte eingelesen und bei der anderen Version geht ein Fenster auf, bei der man bestimmen kann was der Trenner zwischen den Daten ist. Wenn man bei der Datendatei das .csv durch ein .txt ändert scheinen alle Excel-Versionen dieses Fenster zu öffnen und die Daten werden dann problemlos in verschiedene Spalten importiert. Ich weiß aber noch nicht, ob das an der Excel-Version generell oder an den Einstellungen liegt. Ich überlege schon, ganz auf das .csv Format zu verzichten und nur .txt ermögliche ....

: Bearbeitet durch User
Moderator Persönliche Seite #8101336
Lesenswert?
• ▲
▼

Dirk schrieb:

Ich habe ein kleines Projekt gestartet

Bitte beantworte die Frage nach dem Quellcode. Wenn Du keinen veröffentlichen möchtest, werde ich den Thread nach "Mikrocontroller und Digitale Elektronik" verschieben.

Dieses Unterforum hat den Untertitel:

----- schnipp -----
Hier könnt ihr Projekte, Schaltungen oder Codeschnipsel vorstellen. Projekte bitte nur mit Code oder Schaltplan posten (falls ihr nur Fotos vorstellen möchtet, bitte in "Zeigt her eure Kunstwerke"). Bitte hier keine Fragen posten.
----- schnapp -----

Der Code fehlt aber bisher.

: Bearbeitet durch Moderator
OP #8101343
Lesenswert?
• ▲
▼

Frank M. schrieb:

Dirk schrieb:

Ich habe ein kleines Projekt gestartet

Bitte beantworte die Frage nach dem Quellcode. Wenn Du keinen veröffentlichen möchtest, werde ich den Thread nach "Mikrocontroller und Digitale Elektronik" verschieben. Dieses Unterforum hat den Untertitel: ----- schnipp ----- Hier könnt ihr Projekte, Schaltungen oder Codeschnipsel vorstellen. Projekte bitte nur mit Code oder Schaltplan posten (falls ihr nur Fotos vorstellen möchtet, bitte in "Zeigt her eure Kunstwerke"). Bitte hier keine Fragen posten. ----- schnapp ----- Der Code fehlt aber bisher.

Mit dem Quellcode bin ich mir noch nicht sicher. Also verschiebe den Thread bitte in die andere Kategorie. Danke für den Hinweis!

#8101354
Lesenswert?
• ▲
▼

Das besondere Deines Programms scheint ja die Darstellung von Graphen aus den Daten zu sein, die über eine serielle Schnittstelle gesendet werden. Für alles andere gibt es ja schon hunderte Terminal-Programme, z.T. schon in die IDEs eingebaut.

Wenn es also um die grafische Darstellung von Live-Daten geht, würde ich mich genau darauf konzentrieren und es wirklich universell verwendbar machen. D.h.

  • Die Schnittstelle sollte weiterhin und gleichzeitig auch für normale Debug-Ausgaben nutzbar sein, d.h. Daten für die Grafen am besten mit einer Preambel (z.B. USM) starten.
  • Anzahl, Art und Darstellung der Daten sollte ebenfalls über die Schnittstelle konfigurierbar sein. (z.B. Spannung und Strom gleichzeitig, blau und rot eingefärbt, Einheiten V und mA) Um den sendenden Controller zu entlasten, könnte man auch die Skalierung konfigurieren, und dann nur noch Hex-Digits senden.
  • Bisher gibt es nur yt-Diagramme. Man könnte weitere hinzunehmen (xy, Polardarstellung, Zeitmessung, Statistik, ...)
  • Die Diagramme sollten sich bzgl. der gesendeten Werte automatisch anpassen, oder sich vorab über die Schnittstelle fest konfigurieren lassen. Die jetzige Lösung über Einstellungen in Deinem Programm ist das unflexibelste, weil man so vorab wissen muss, was für Daten für wie lange kommen. Einstellungen im Programm sind sinnvoll, wenn man nur einen Ausschnitt aus den Empfangenen Daten sehen will (wie ggf. an einem Speicher-Oszilloskop)

Die Ausgaben vom Controller könnten dann z.B. so aussehen

1
Bordinitialisierung
2
usm#0 init type=yt, unit="V", color=blue
3
usm#1 init type=yt, unit="mA", color=red
4
Firmware Version 0.3.9
5
usm#0 1.35
6
usm#1 80.7
7
usm#0 1.33
8
usm#0 1.28
9
usm#0 1.08
10
usm#1 43.3
11
Warning: Lower level reached!
12
usm#0 0.97
13
usm#0 0.83

Man kann beliebig weitere Kurven hinzutun, und man könnte für eine bessere Übersicht im Debug-Fenster auch die USM-Zeilen herausfiltern und gar nicht erst anzeigen. Die Zeit fürs yt-Diagramm ergibt sich automatisch aus der Empfangszeit. Möchte man das nicht und den Zeitspempel jeweils als Datum mitsenden, könnte man eine andere Diagrammart mit "recorded time", z.B. yrt erfinden.

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