Früher habe ich unter DOS ein Programm geschrieben, mit dem ich eine
AD-Karte ausgelesen habe und die Messkurve auf dem Bildschirm
dargestellt. Das war kinderleicht. In QBasic hatte ich mich innerhalb
eines Tages in die paar notwendigen Befehle eingearbeitet und ein paar
Tage später war das Programm fertig.
Etwas ähnliches hatte ich jetzt mit dem Raspberry Pi Zero vor. Eine GUI
brauche ich nicht und es reichen mir ein paar Grundfarben bei geringer
Bildschirmauflösung. Aber wenn ich das richtig sehe, geht das unter
unixoiden Betriebssystemen nicht so einfach?
Ich arbeite ich mich gerade in C ein und dachte dass ich damit auch mein
Projekt verwirklichen könnte, doch wie ich jetzt erkenne, lerne ich auch
das nicht in ein paar Wochen. In einem Jahr ist eher realistisch.
Durch folgenden Thread habe ich mich bereits gearbeitet, aber so richtig
kam ich damit noch nicht weiter:
Beitrag "Grafik unter Linux"
Meine Anforderungen:
Anschluss eines PC-Monitors (VGA würde reichen)
Je 2 AD/DA Ports
Einplatinen-PC (ggf. mit Shields)
Keine GUI
Echtzeit nicht zwingend notwendig (Darstellung nach Abschluss der
Messung wäre o.k.)
Als Alternative fallen mir noch zwei Möglichkeiten ein:
Arduino mit VGA-Shield (256 Farben und 160x120 bzw. 400x300 Pixel)
https://www.micro-nova.com/novavga/ und
https://www.tindie.com/products/masihvahida/vgaduino-ii-256-color-vga-shield-for-arduino/
Ob ich das in angemessener Zeit zum Laufen bekomme?
DOS-PC und meine bescheidenen QBasic-Kenntnisse
Gibts es da überhaupt was zeitgemäßes als Einplatinen-PC mit
AD/DA-Ports? Ich kenne nur diese sündhaft teuren PC/104, wozu man dann
auch noch eine ebenso teure AD/DA-Karte braucht.
Vielleicht habt ihr ja noch eine bessere Idee.
Das habe ich vielleicht missverständlich ausgedrückt. Ich will nicht
noch eine weitere Programmiersprache lernen. C lerne ich eh gerade und
dann würde ich auch warten, bis ich damit etwas fortgeschritten bin.
Aber auf dem Raspberry eine Grafik in ein Fenster zaubern ist halt eine
ganz andere Kategorie, als "Hallo Welt" auf der Konsole ausgeben.
TCL wäre auch definitiv nichts für mich. Vor 20 Jahren (als Zeit noch
unendlich war) hab ich damit mal ein umfangreicheres IRC-Script
geschrieben. Ich weiß bis heute nicht, warum es funktioniert hat ;)
Ich werde mich jetzt mal auf das Arduino VGA-Shield konzentrieren. Die
Umsetzung sieht auf den ersten Blick relativ einfach aus.
VGA oder HDMI ist mir völlig egal, es gibt für ein paar Euro Konverter.
Ich habe beide Richtungen hier, funktionieren einwandfrei. TFT Monitore
mit VGA-Anschluss stapeln sich hier auch.
Vielleicht solltest du es eher mit Java versuchen. Durch die
Objektorientierung kommt zwar etwas "globaler" Lernaufwand hinzu, die
Syntax im "Nahbereich" ist zum größten Teil mit C identisch ... also
keine Vergeudung von Resourcen.
Mit der Swing-Lib (ja, ich weiss, die ist veraltet, aber einfach zu
verstehen), hast du in kurzer Zeit ein (wenn es sein muss randloses)
Fenster und schreibst fröhlich Kurven.
Der Vorteil ist auch, dass du die grundlegenden Algorithmen vorher auf
einem PC unter Win/Mac/Linux erarbeiten und testen kannst, bevor du sie
auf das Zielsystem bringst.
Wenn du mal Lust auf was Originelles hast: Schau dir mal Processing.org
an. Mit dieser plattform-neutralen Software schreibt man in einer
arduino-artigen C++-Syntax Programme, die am Ende nach Java oder
Javascript (ja, läuft dann im Browser) "compiliert" werden.
Processing ist für das schnelle Erfolgserlebnis stark Grafik-orientiert
...
Also im Grunde habe ich dasselbe Problem wie der TE hier:
Beitrag "Grafik unter Linux"
Nur dass ich nicht einfach was zeichnen möchte, sondern auch noch Werte
über AD/DA einlesen bzw. ausgeben will. Sonst würde ich einfach einen
alten DOS-Rechner nehmen. Ich will mir aber auch keinen 90er-Jahre-Tower
mit AD-Karte hinstellen, sondern denke bei meinem Projekt an einen
Einplatinen-PC.
Im oben genannten Thread erschien mir der Vorschlag mit "gnuplot"
interessant. Allerdings habe ich das nicht zum Laufen bekommen. Das
Ausgabefenster öffnet nur für Bruchteile von Sekunden. Die Ursache habe
ich noch nicht gefunden.
Das mit den AD/DA Kanälen ist schon ein Problem...
Es gibt sigrok.
Das unterstützt einiges an leistbarem Messequipment.
Damit was eigenes Programmieren willst du aber nicht!
BTDT
Dann gäbe es noch das gute alte GPIB zeug...
Mit den VISA Treibern bekommt man üblicherweise recht flott ältere
Voltmeter oder DC-Quellen zum Laufen.
Alternativ würde sich noch anbieten sich mit z.B. einem Arduino einen
USB-AD/DA Wandler zu bauen. Falls dir das reicht, was mit dem Arduino
möglich ist, wäre das wahrscheinlich die billigste und schnellste
Lösung...
Das Anzeigen am PC ist jetzt wirklich eine Herausforderung.
Es gibt aber allem Anschein nach QBasic nach wie vor:
https://www.qb64.org
Wenn du dem Arduino beibringen würdest auf deine Befehle dir AD Werte zu
liefern und DA zu wandeln, dann würde das insgesamt wahrscheinlich für
die die einfachste Lösung darstellen...
73
Hans W. schrieb:> Alternativ würde sich noch anbieten sich mit z.B. einem Arduino einen> USB-AD/DA Wandler zu bauen. Falls dir das reicht, was mit dem Arduino> möglich ist, wäre das wahrscheinlich die billigste und schnellste> Lösung...> Wenn du dem Arduino beibringen würdest auf deine Befehle dir AD Werte zu> liefern und DA zu wandeln, dann würde das insgesamt wahrscheinlich für> die die einfachste Lösung darstellen...
Also die AD-Wandler-Werte zu holen bzw. DA zu liefern bekomme ich hin,
ist ja ziemlich einfach. Hab hier einen Arduino herumliegen und das
irgendwann schon mal ausprobiert. Aber ich wollte schon was
alleinstehendes mit großem Monitor, das ich nicht noch extra an einen PC
anschließen muss. Da setze ich Hoffnung in das VGA-Shield. Nur der Preis
schreckt mich noch ab, es einfach mal so zu kaufen um dann vielleicht
festzustellen, dass das gar nicht geht.
Es gibt ja noch DOSBIAN. Ob ich damit ein AD/DA-Shield am Raspberry
ansprechen kann, ich vermute nicht. Müsste ich mal den Entwickler
fragen.
> Es gibt aber allem Anschein nach QBasic nach wie vor:> https://www.qb64.org
Ist ja toll, das muss ich unbedingt ausprobieren! Ich wollte schon das
alte QB von MS auf meinem Rechner installieren um einen Screenshot von
meiner damaligen Anwendung zu machen, damit ich zeigen kann was ich
vorhabe.
Hans W. schrieb:> Das Anzeigen am PC ist jetzt wirklich eine Herausforderung.
Wenn es darum geht, Kurven von ankommenden Messwerten darzustellen, ist
"trend" inzwischen das Werkzeug meiner Wahl. Wenn die Abfrage der
AD-Hardware z.B. von einem Perlscript erledigt wird, ist die Anpassung
nicht schwer.
wendelsberg
Dietmar S. schrieb:> Also die AD-Wandler-Werte zu holen bzw. DA zu liefern bekomme ich hin,> ist ja ziemlich einfach. Hab hier einen Arduino herumliegen und das> irgendwann schon mal ausprobiert. Aber ich wollte schon was> alleinstehendes mit großem Monitor, das ich nicht noch extra an einen PC> anschließen muss. Da setze ich Hoffnung in das VGA-Shield. Nur der Preis> schreckt mich noch ab, es einfach mal so zu kaufen um dann vielleicht> festzustellen, dass das gar nicht geht.
Die Frage wäre noch, wie schnell es sein soll. Wenn du eh eien Arduino
hast, dann verbinde ihn mit USB an einen Thin Client oder Notebook.
Schick die werte über den Serial Port. Auf den "PC" machst du ein
Ubuntu drauf und schreibst ein kleines Python Programm. Um das gleiche
mit nativen C hinzubekommen wirst du noch Jahre brauchen. Mit Python
(Matplotlib) geht das in ein paar Zeilen. Und bei Ubuntu (Derivat) hast
du dank Paketverwaltung auch keine Probleme beim Installieren von
zusätzlichen Paketen.
Experte schrieb:> - https://www.libsdl.org/
Sorry, den Link hatte ich ganz übersehen. Sieht auf den ersten Blick
vielversprechend aus und wird jetzt erst mal meinen Abend füllen.
Karl schrieb:> Die Frage wäre noch, wie schnell es sein soll. Wenn du eh eien Arduino> hast, dann verbinde ihn mit USB an einen Thin Client oder Notebook.> Schick die werte über den Serial Port. Auf den "PC" machst du ein> Ubuntu drauf und schreibst ein kleines Python Programm. Um das gleiche> mit nativen C hinzubekommen wirst du noch Jahre brauchen. Mit Python> (Matplotlib) geht das in ein paar Zeilen. Und bei Ubuntu (Derivat) hast> du dank Paketverwaltung auch keine Probleme beim Installieren von> zusätzlichen Paketen.
Gefällt mir nicht recht, weil ich dann kein alleinstehendes Equipment
habe. Aber es wäre zumindest eine Option, wenn es anders nicht geht. Die
Geschwindigkeit ist unkritisch.
Dietmar S. schrieb:> weil ich dann kein alleinstehendes Equipment> habe.
Naja, wenn du eh einen (VGA)Monitor haben möchtest, wird es schwierig
mit "alleinstehend". Rasperry Pi mit entsprechendem AD/DA-Wandler wäre
sicher auch eine Möglichkeit. Ein Arduino mit VGA wird sicher schnell an
seiner Leistungsgrenze sein.
Guck dir mal das Zeug rund um Maximite, Duinomite, ... an.
Hat neben ein paar AD-Kanaelen auch unmittelbar eine Ausgabe
auf zumindest VGA-Niveau.
Und Standalone ist es sowieso.
Ich habe es nach 40 Minuten immerhin geschafft mit SDL ein Fenster zu
öffnen. Eine einfache Linie zeichnen ist mir noch nicht geĺungen,
scheitert schon beim kompilieren. Die meisten "Erste-Schritte"-Tutorials
sind für Windows-Nutzer. Aber gut, es ist ein Anfang :)
oerks schrieb:> Guck dir mal das Zeug rund um Maximite, Duinomite, ... an.> Hat neben ein paar AD-Kanaelen auch unmittelbar eine Ausgabe> auf zumindest VGA-Niveau.>> Und Standalone ist es sowieso.
Jetzt habe ich mir das auch angesehen. Beides tolle Projekte und die
Hardware ist ja echt erschwinglich. Danke für den Tipp!
Wenn ein 3,5 oder 4 Zoll Display reichen sollte, könnte
man es evtl. auch mit einem ausrangierten noch funktionierenden
Smartphone oder PDA probieren.
Eine Programmiersprache + Betriebssystem zur Aufbereitung
und Darstellung der Messwerte braucht man sowieso. Auch
Übertragungswege, wie WLAN, BT usw. kämen da in Frage.
Oder halt, wie oben erwähnt, einen RaspBerry PI, wo
schon fast alles on Board ist. Ein Display dürfte da
das kleinste Problem sein.
Thomas W. schrieb:> und warum guckst Du nicht in das Manual von gnuplot, Zauberwort "Pause".> Du musst nicht alles selbst erfinden (wird sind jetzt 2021):>> http://www.gnuplot.info/docs_4.2/node99.html
O.k. Ich hatte ein Code-Beispiel genommen, ich schaue es mir nochmal an.
Edit: Super, das funktioniert! Darauf muss man erst mal kommen, wenn man
mit der Materie noch nie zu tun hatte.
SDL ist aus dem Rennen. Die Anforderungen übersteigen meine bescheidenen
Kenntnisse bei weitem. Das muss ich mir einfach eingestehen. Ich hätte
erwartet, dass ich mit Hilfe von Codebeispielen zumindest eine einfache
Linie, eine Grafik oder nur ein einzelnes Pixel auf den Bildschirm
bekomme.
Hallo,
wie wäre es denn mit einem Rasperry Pi, Grafana und evtl. influxdb
drauf. Da muss man so gut wie nix programmieren. Dann mit nem ESP8266
oder direkt mit irgendnem RPi Shield Werte messen/ausgeben?