Zuletzt besucht
Ausgewählte Projekte
- Platinen ätzen
- Das M.T.F.
- Bürstenloser-Motor Treiber
- Nintendo DS Mod
- Handy Modifikation
- STM32F429 Mac Tutorial
Web Applikationen
Links
Andere Projekte
- Kettensägen Fahrrad
- STM32F429 LCD Beispiel
- Mein PHP Content Managing System
- PHP Bildverarbeitung
- Rücklauftransformator-Treiber
- Atari Punk Konsole
- Teensy - ESP8266 - Interface
- Handy Ladestation
- 4-Bit Addierer
Meta
Ein .csv zu .png Konverter für Oszilloskop-Datensätze
Jun 2015
Vor einiger Zeit habe ich das Datenübertragungsprotokoll zwischen zwei Schaltungen in meinem Lexmark Drucker analysiert. Das Ziel war es, den Drucker mit billiger Tinte drucken zu lassen (Lexmark-Tinte kostet übertrieben viel).
Das Problem an der Analyse lag in der Speicherung der Daten. Screenshots der Messkurven auf dem Oszilloskop zu machen war zu zeitintensiv, da ich die einzelnen Screenshots nachträglich zusammenfügen musste. Die einzige andere Möglichkeit, die Daten zu speichern, war die Ausgabe als „comma seperated values“ (.csv) Datei. Diese war aber eine Textdatei, nicht ein einfach zu lesender Graph.
Also nahm ich die Herausforderung an, einen Daten-Visualisierer in PHP zu programmieren, welcher die .csv Datei in eine .png Bilddatei umwandelt.
Ich fand es wichtig, eine kleine Menge an Einstellbarkeit einzubauen. Man kann die Höhe und Breite festlegen (oder die Software das Optimum wählen lassen) und auswählen, ob man die Kanäle überlappend oder untereinander dargestellt haben möchte. Mit den Datenpaketen meines Druckers, welche über 2 Drähte laufen, habe ich die „untereinander“ Option gewählt, sodass ich die einzelnen Kanäle besser untersuchen kann.
Die einzige Begrenzung ist die Größe des Bildes. Es sollte aber kein Problem sein – die maximale Bildfläche beträgt 12.5 Millionen Pixel (Bsp.: 10.000px X 1.250px).
Struktur der CSV Eingabedatei
Wenn du eine .csv Datei eines Rigol DS1052E hast, solltest du dich nicht um Kompatibilität kümmern müssen, ich verwendete das gleiche Modell. Falls nicht, kannst du hier die Struktur überprüfen:
- Die erste Reiche deklariert die Namen der Spalten
- The zweite definiert die Einheiten der Spalten
- Die erste Spalte beinhaltet die Zeitwerte
- Alle folgenden beinhalten die Werte der Messkanäle
- Leere Zeilen sind in Ordnung, sie werden ignoriert
- Es macht nichts aus ob eine Reihe mit einem Komma endet oder nicht
Des Weiteren kann die Applikation bis zu 8 Kanäle darstellen, was mehr als genug sein sollte. Wenn du dir unsicher bist, ob deine Datei funktioniert, probiere es aus! Wähle aus den verschiedenen Optionen die aus, mit denen dein Datensatz an besten dargestellt wird.
Falls du den PHP Code sehen möchtest,
er ist open-source! .