für die Visualisierung meines Arduinos (eingesetzt in einer kleinen Heizungssteuerung) suche ich ein Entwicklungstool für eine grafische Oberfläche zur Anzeige von Istwerten, Eingabe von Sollwerten etc. Lauffähig unter Windows.
Kommunikation sollte per Ethernet (TCP/UDP...) laufen.
Ich hab mir mal Processing angeschaut. Aber das ist ja auch eher eine Programmiersprache.
Super wäre so was wie WinCC flexible von Siemens (wenn das einer kennt).
Also eine Programmieroberfläche, bei der ich fertige Module (Eingabefenster für Zahlen, Balkendiagramme, usw.. ) auf meine Oberfläche ziehe, dann noch die passende Variable vom Arduino anbinde, und dann das ganze als eigenständige Runtime übersetze.
Es gibt kostenlose Express Versionen von Visual Studio:
Für Diagramme aller Art gibt es MSCharts. Aber das ist aber recht kompliziert bis man sich da eingearbeitet hat, da alles hinter zig Optionen und Menüs platziert ist. Ich sitze da gerade dran (auch für eine Heizungssteuerung). Es gibt aber auch im Internet von Benutzern erstellte Komponenten dazu wenn du mal nach "Visual Studio chart control" oder Ähnlichem suchst.
Und TCP/IP geht natürlich auch.
Ich mache erst mal über die serielle Schnittstelle. Später wird dann vielleicht ein Ethernet Shield + Router als Access Point nachgerüstet. Das kann man dann umschaltbar machen.
Wenn man sich aber mit der Umgebung nicht etwas auskennt, kostet das alles Einbearbeitungszeit. Es ist nicht damit getan einfach die Oberfläche zusammenzustellen. Du ganze Funktionalität der Bedienelemente muss man selbst implementieren. Aber das ist in anderen Entwicklungsumgebungen genauso.
Ich würde C# vorschlagen, eventuell sogar mit WPF - wegen der nähe zum Arduino-C/C++
Da ich eigentlich aus der Desktopprogrammierung komme und Jahrelang das .NET-Framework mit C# benutzen musste, hab ich mich irgendwann regelrecht in diese Sprache verliebt. Zumindest dann, wenn VB als Alternative im Raum steht, würde ich mich immer für C# entscheiden. Falls viel Geschwindigkeit, Speicherzugriff und Lowlevel-API benötigt würde, bin ich bei C++
2014 gibt es mMn. keinen Grund mehr für VB. Denn VB.NET hat mit VB6 nur noch marginal Parrallelen, C# ist (meiner Meinung nach) schöner zu schreiben, logischer aufgebaut und vorallem mit Mono (eingeschränkt) Multiplattformkompatibel.
Ja, bei der VB Syntax schüttelt es mich jedesmal. .NET war eigentlich immer für C# gedacht. Aber man kann nicht so einfach eine neuen Sprache in die Geschäftswelt einführen. Unternehmen bleiben immer beim Alten wenn es nicht ganz, ganz gute Gründe für eine Migration gibt. Was ich in einem gewissem Rahmen völlig verständlich ist.
Also die Idee mit der Common Language Infrastructure. Alle .NET Sprachen arbeiten auf den gleichen Klassen und produzieren den gleichen Byte Code. So kann man kann man auf den gleichen Bibliotheken in mehreren Sprachen arbeiten. Und dann eben VB. NET für die Unternehmen die ihre Mitarbeiter weiter mit was arbeiten lassen wollen, an das sie gewöhnt sind.
Wir hatten vor einiger Zeit einen User, der seinen Holzvergaser mit einem Arduino betrieben hat und auch Messwerte grafisch darstellen wollte. Letzten Endes ist er bei Proview hängen geblieben. Wenn du nicht auf eine Windows-Umgebung Wert legst, könnte das was für dich sein.
Die Projektseite findest du hier: http://simons-holzvergaser.blogspot.de/
Hallo
Ich habe eine SPS S7 im Haus mit derm ich über TCP mit einem Arduino YUN Komuniziere. Programm ist aber nich nicht ganz fertig.
Ich kann eingänge und Variablen vom Arduino abfragen. Ausgänge schalten fehlt noch.
emilio20:
Hallo
Ich habe eine SPS S7 im Haus mit derm ich über TCP mit einem Arduino YUN Komuniziere. Programm ist aber nich nicht ganz fertig.
Ich kann eingänge und Variablen vom Arduino abfragen. Ausgänge schalten fehlt noch.
Häää???
Versteh ich nicht. Du hast doch 2 Steuerungen verbunden. Wo ist da das GUI??
Jetzt noch ne Frage dazu. Kann ich damit auch eine Stand-alone Anwendung (*.exe) generieren? Oder muss ich zum "Abspielen" auf anderen Rechnern noch extra was installieren.
Ist aber auch eine Programmiersprache, und da war dir ja schon Processing zu low-level smiley-wink
Naja. Parametrieren ist ja auch einfacher als programmieren ..LOL
Du braucht auf dem Zielrechner lediglich die entsprechende Version des .NET Frameworks. Da ist normalerweise glaube ich heutzutage 3.5 durch Windows Update installiert. Wenn man dann damit kompiliert geht es.
Und wenn du nicht weiß wie was geht z.B. nach "C# [Komponenten Name] [was will man machen]" suchen. Da findet man normalerweise schnell eine Lösung. Gerade auch festgestellt, dass ich meine CheckedListBox besser auf eine TreeView umstelle, da ich das Anhaken der CheckBoxen und die Auswahl auf der Liste getrennt haben will.
Jetzt noch mal was anderes:
Einarbeiten muss ich mich ja eh in irgendein System.
Aktuell hab ich es so, dass ich auf dem Arduino eine Webseite ge"html"t , und darin die Istwerte eingebunden habe.
Für die Steuerung verwende ich get-Methoden, die mir Befehle an den Arduino senden.
Das ist auf der einen Seite ein schöne Sache, weil ich auf dem Bedienrechner nur einen Browser benötige. Und das ist dann sogar plattformunabhängig.
Allerdings will ich den Arduino nicht unbedingt als Webserver bezeichnen. Gibt da öfters Situationen, wo er irgendwie hängt.
Hab auch schon mal überlegt, ob ich testweise einen Due reinhänge, um zu sehen ob der stabiler läuft.
Und irgendwie ist die Erstellung auch etwas umständlich. Mit einem externen Programm erstellen, und dann Zeile für Zeile mit "client.println" in den Arduino-code klopfen. Wenn ich das noch eleganter hinbringen würde, wäre das auch schon ein Fortschritt für mich.
Kommt darauf an was du willst. Eine Webseite mit Bedienelementen oder die Einstellungen über ein Programm auf dem PC.
Du kannst mit TCP/IP auch Byte Arrays oder Strings hin und her schicken um mit dem PC zu kommunizieren. Das müssen keine Webseiten sein. Persönlich habe ich es mit HTML und Webseiten nicht so, daher ist das für mich so einfacher.
Tip übrigens für ein Problem auf das du relativ schnell stoßen wirst:
Du kannst in .NET nicht von anderen Threads direkt auf das GUI Thread zugreifen. Wenn also z.B. dein Serial EventHandler auslöst, weil der Arduino was geschickt hat und die willst das direkt in eine Komponente schreiben, bekommst du eine geklatscht. Deshalb muss man das über die Invoke() Methoden der Komponente aufrufen. Am elegantesten geht es mit einem anonymen delegate: