Analoge und digitale Signale einlesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Thunderbolt.

    Analoge und digitale Signale einlesen

    Hallo,

    ich möchte 8 x Schaltzustände (0Volt bzw. 5 Volt) und 8 x analoge Spannungen (0-4 Volt) messen und auswerten.

    Gibt es da fertige Hardware zu?

    Gruß TommiB

    TommiB schrieb:

    mit VB.NET auslesen
    kannst Du das, sobald eine DLL und eine präzise Beschreibung der Prozeduren vorliegt. Diese lässt sich in pralktisch jedem Fall auf .NET portieren.
    Meist bietet der Hersteller heutzutage eine VB.NET-Beispielsoftware an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo!

    Noch viel einfacher geht per Arduino...

    Schau mal hier: arduino.cc/en/Main/ArduinoBoardMicro

    Das ding hat 20 I/O-Pins, 12 davon sind analogeingänge. Die erfassten Werte können dann über die serielle schnittstelle am PC eingelesen werden. Anschluß erfolgt per USB-Kabel

    Gruß
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!
    Hallo und danke für die Antworten,

    wolfi_Bayern: Muss da in den Arduino nicht auch Software rein?
    Da habe ich ja überhaupt keine Ahnung von.....
    Wie geht das von der VB-Seite aus mit dem auslesen?
    hast Du da mal ein kl. Beispiel? Event. für digital und analog?

    Gruß TommiB
    Hallo!

    Naja... der Arduino wird in C++ programmiert. Gibt allerdings jede menge Beispiele und fertige Funktionen. Prinzipiell kann man sagen dass zuerst alle Variablen deklariert werden, im Setup wie der Name schon sagt das Setup durchgeführt wird und in Loop das Programm abläuft. Beispiel mit einem digitalen und einem analogen Eingang:

    C-Quellcode

    1. int analogPin=1; //Beispiel für Analogeingang 1
    2. int digitalPin=4; //Beispiel für digital Pin 4
    3. int analog1;
    4. int digital1;
    5. void setup()
    6. {
    7. pinMode(digitalPin,INPUT);
    8. Serial.begin(9600);
    9. }
    10. void loop()
    11. {
    12. digital1=digitalRead(digitalPin);
    13. analog1=analogRead(analogPin);
    14. Serial.print(digital1);
    15. Serial.print(","); //Trennzeichen
    16. Serial.println(analog1); //println hängt ein \n am ende der Zeile an... somit kann vb zeilenweise lesen
    17. }


    Nun ein VB-Programm erstellen, den Seriellen COM-Port mit einer Baudrate von 9600 öffnen und Zeilenweise einlesen. Fertig.
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!
    Hallo wolfi_Bayern,

    danke für Antwort. Ich muss mal gucken, wie ich das mache...

    Wie ich dass jetzt sehe, schickt der Arduino laufend die Daten auf die Serielle...
    Was passiert, wenn die Schnittstelle, wegen eines anderen Prozesses, nicht sofort ausgelesen wird?

    Da müsste man doch auch was machen können, dass man eine Anforderung von VB.NET schickt und der Arduino dann das Ergebnis gibt??
    Hallo!

    Na klar... per

    C-Quellcode

    1. if (Serial.available())

    kannst Du im Arduino abfragen ob was geschickt wurde... Am besten auf der Arduino-Seite in die Referenz reinschaun. Da steht alles zu dem Thema.

    Und VB hat bei mir noch nicht wirklich was verloren... Die empfangenen Daten werden ja über den Event-Handler weiterverarbeitet... Somit empfängst Du immer z. B. eine ganze Zeile. Je nachdem wie Du das definierst...
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!
    Aber Vorsicht: DataReceived läuft in einem Nebenthread. Das heißt, dass du nur mittels Invoke auf die GUI zugreifen darfst:

    C#-Quellcode

    1. ​Invoke(() => statusDisplay.Text = "Hallo Welt");

    VB.NET-Quellcode

    1. ​Invoke(Sub() statusDisplay.Text = "Hallo Welt")
    Mit freundlichen Grüßen,
    Thunderbolt