- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Ansteuerung von Arduino Uno mit Visual Basic

  1. #11
    Anzeige

    Powerstation Test
    Ya, VB wird immer stärker und stärker, sie durch große Menge von Programmierern benutzt wurde, lerne ich möchte einige VB-Code bymyself, so kann euch einige nützliche Informationen bieten.?

  2. #12
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.075
    Welche Informationen sollen von wem geboten werden?

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    19.08.2011
    Beiträge
    62

    Pfeil

    Hallo

    Hiermit möchte ich gerne das Thema wieder beleben.

    Einige Mnate sind vergangen, die ich mit Hardware-spielereien und sonstiges verbracht habe, aber jetzt möchte ich wieder zu dem Projekt zurückfinden.

    Da es mir aber einfach an Erfahrung und Wissen fehlt, Suche ich nach Freiwilligen (scheinbar werden sie auch verrückt genannt ), die mir bei der Sache helfen.

    Mir schwebt so eine Art "Let´s Build" vor, bei dem ich einfach einen Baubericht verfasse und jeder seine Ideen und Spezialgebiete beitragen darf. (kann / muss )

    Würden sich da ein paar Feiwillige aus den Tefen des Internets erheben?


    Ich für meinem Teil würde zumindest sehr dankbar sein...

    Danke schon mal

    Atvilar

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    das Problem ist halt schlicht, dass Dein Projekt schon sehr speziell ist und es damit für andere wenig Anreiz gibt, sich zu beteiligen. Grundsätzlich ist die Programmierung einer Software mit grafischer Oberfläche und Kommunikation mit den Controller in VB.NET kein Hexenwerk ... habe ich neulich für ein anderes Projekt erst gemacht. Dabei wären mir jetzt aber keine großartigen Punkt aufgefallen, die man standardisieren und in irgendwelche Libraries packen könnte. Das ist alles immer sehr stark auf das jeweilige Projekt bezogen. Die Basis-Technologien (wie der Zugriff auf die serielle Schnittstelle) sind schon alle im .NET Framework implementiert, so dass es auch da eigentlich nichts mehr allgemeingültiges zu entwickeln gäbe (zumindest ist mir nichts aufgefallen). Damit bleiben mehr oder weniger nur projektbezogene Aufgaben - und da sind wir wieder beim Problem, dass Du halt ein sehr spezielles Projekt vor hast

    Spannender wäre es höchstens, wenn man sich mal Gedanken über ein universelles RN Prozess-Leit- und -Steuer-System Gedanken machen würde ... das ist aber dann schon eher wieder eine Monster-Aufgabe

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    19.08.2011
    Beiträge
    62
    Ich dachte sowiso daran, wenn ich ein paar kluge Köpfe zusammenkriege, dass man dann das Ganze in Modularbauweise macht.
    Sprich dass jeder seine eigenen Sensoren / Aktoren dranhängen kann

    zb. ich Destilliere Schnaps, der andere gießt seine Blumen damit.

    (beide benötigen die Ansteuerung einer Pumpe, er braucht halt ein Feuchtigkeitssensor, ich ein PT 100)

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    zum einen würde ich Dir zu einem PT1000 an Stelle des PT100 raten und zum zweiten ist die Anpassung ja vor allem an der Analog-Seite erforderlich. Wenn ich erstmal eine Verstärker-Schaltung habe, die 0 bis Vref liefert, ist es dem Controller ja egal, was dran hängt

    Das Hauptproblem war doch eher auf der PC Seite oder? Und wie gesagt: da steht alles schon mehr oder weniger zur Verfügung. Man könnte wie gesagt höchstens über ein Open Soruce Projekt zur Prozess-Virtualisierung und -Steuerung nachdenken, bei dem man ohne große Programmierung auskommt. Aber das ist wiederrum schon ein recht ambitioniertes Vorhaben.

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    19.08.2011
    Beiträge
    62
    wenn das alles so einfach ist, kann ich mit deiner Hilfe rechnen?

    Ich selbst bin nämlich damit völlig überfordert. Bin halt immer noch ein bluiger Anfänger

    Bist du von Arduinoprogrammierkentnisse bewandert?


    Wenn ja, könnte ich dich irgendwie dazu erweichen, dass du mir mal ein Beispielprogramm schreibst?

    Z.b.

    an Arduino ist Relai für Heizspirale (port 1) und Pt 1000 (port 2) angschlossen

    Arduino liest Wiederstand aus
    sendet es
    Visual rechnet in °C um
    entscheidet, ob weiter geheizt werden soll
    sendet signal an Arduino
    schaltet relai durch

    wenn das möglich wäre, dann würde mich das sehr freuen. (natürlich mit viiel erklärung, um zu lernen)

    Danke

    Atvilar
    Geändert von Atvilar (12.08.2013 um 15:03 Uhr)

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    bei Arduino kann ich Dir leider nicht so viel helfen ... aber für VB.NET kann ich Dir ein paar Beispiele liefern, die die Kommuniktion mit der COM-Schnittstelle zeigen wenn Dir das hilft. Auf der Controller-Seite habe ich das bislang immer mit C gemacht. Allerdings gibt es im Netz wohl auch einige Beispiele die die Verwendung von RS232 mit dem Arduino zeigen.

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    19.08.2011
    Beiträge
    62
    Also bis jetzt habe ich nur das Beispiel (eine Seite zurück -> Link) eine Lampe mit VB schalten und ein Oszi. Der oszi wäre das Interesannt, da da eine Information von Arduino zu VB gschickt wird. Nur habe ich noch nicht ganz begriffen, wie das genau gemacht wird, bzw. wie ich das für einen T pT 1000 (habe übrigends oben nur eine 0 vergessen ) ummünzen kann....

    weil du das jetzt sagst:

    Gibt es eine Möglichkeit, direkt Arduino mit C (das ist doch die Sprache von Vb, oder?) anzusteuern?
    Geändert von Atvilar (13.08.2013 um 12:29 Uhr)

  10. #20
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    C und VB sind komplett andere Sprachen, denen auch ein komplett anderer Ansatz zugrunde liegt.

    Ich poste hier mal einen Ausschnitt aus dem Code, den ich zuletzt verwendet habe:
    Imports System.IO.Ports

    Code:
    Imports System.IO.Ports
    
    Public Class Controller
        Private myPort As SerialPort
    
    #Region "implementation of singelton pattern"
        Private Shared myInstance As Controller
        Public Shared ReadOnly Property Instance() As Controller
            Get
                If myInstance Is Nothing Then
                    myInstance = New Controller
                End If
                Return myInstance
            End Get
        End Property
    #End Region
    
        Public Sub New()
            myPort = New SerialPort
            With myPort
                .PortName = "COM7"
                .BaudRate = 9600
                .DataBits = 8
                .Parity = Parity.None
                .StopBits = StopBits.One
                .Handshake = Handshake.None
            End With
        End Sub
    
        Public Sub setPort(ByVal pPort As String)
            If myPort.IsOpen Then
                myPort.Close()
            End If
    
            myPort.PortName = pPort
    
            myPort.Open()
        End Sub
    
        Private Function getPort() As SerialPort
            If myPort.IsOpen = False Then
                myPort.Open()
            End If
    
            Return myPort
        End Function
    
       #Region "Zeit-Funktionen"
        Public Function setTime(ByVal pTime As Date) As String
            Dim port As SerialPort
    
            port = getPort()
            port.Write("*b" & Chr(pTime.Hour + 50) & Chr(pTime.Minute + 50) & Chr(pTime.Second + 50) & "#")
    
            Return getTime()
        End Function
    
        Public Function getTime() As String
            Dim ret As Integer
            Dim t As String = ""
            Dim port As SerialPort
    
            port = getPort()
    
            t = port.ReadExisting
            t = ""
    
            port.Write("*a#")
    
            ' Prefix der Antwort auslesen
            ret = port.ReadChar()
            If ret <> Asc("*") Then
                Debug.Print("Zeichen: " & Chr(ret))
            End If
    
            ' Nächstes Byte = Stunde
            ret = port.ReadChar()
            ret = ret - 50 ' Offset abziehen
            t = ret.ToString("00")
    
            ' Nächstes Byte = Minute
            ret = port.ReadChar()
            ret = ret - 50 ' Offset abziehen
            t = t & ":" & ret.ToString("00")
    
            ' Nächstes Byte = Sekunde
            ret = port.ReadChar()
            ret = ret - 50 ' Offset abziehen
            t = t & ":" & ret.ToString("00")
    
            Return t
        End Function
    
    #End Region
    End Class
    Allerdigs setzt das schon ein wenig Kenntniss in VB voraus. Der Code definiert eine eigene Klasse für die Kommunikation mit dem COM-Port (bei mir defaultmäßig COM7). Die Implementierung als Singelton vereinfacht die spätere Verwendung der Klasse, da man dann nicht immer erst mühsam ein Objekt anlegen muss. Darüber hinaus sollte es auch nur eine einizige Objekt-Instanz geben, die mit der Schnittstelle kommuniziert .. .und auch das wird über das Singelton-Pattern gelöst.

    Die new() Prozedur ist der sog. Konstruktor der Klasse. Dieser wird immer aufgerufen, wenn eine Objekt-Instanz aus der Klasse erzeugt wird. In diesem Konstruktor wird der Serielle Port initialisiert. Die hier verwendeten Werte sind mehr oder minder Standard.

    Falls der Mikrocontroller mal nicht an COM7 sondern wo anders hängt, kann man das Programm mit Hilfe der setPort Methode auf einen anderen Port konfigurieren.

    getPort liefert bei Bedarf das Port-Objekt

    setTime zeigt Dir, wie Du eine Zeichenfolge an den Controller schicken kannst. Das Protokoll für die Kommunikation mit dem Controller muss man sich selbst überlegen. Ich hatte für mich festgelegt, dass *b am Beginn einer Zeichenfolge, die ich an den Controller schicke diesem mitteilt, dass die Uhrzeit gesetzt werden soll. Danach werden dann die Stunden, Minuten und Sekunden übertragen. Um Bytes in der Übertragung zu sparen hatte ich mich entschlossen, Charakter-Zeichen zu übertragen. Um dabei nicht in den Bereich der Steuerzeugen zu landen habe ich einen Offset von 50 addiert. Bei meiner Protokoll-Definition hatte ich noch festgelegt, dass jede Zeichenfolge durch das Senden eines Raute-Zeichens abgeschlossen wird. Das sind aber alles vollkommen willkürliche Festlegungen und Du musst für Deine Fälle halt selbst definieren, welche Daten wie ausgetauscht werden sollen.

    Die getTime Methode zeigt dann, wie man aus der seriellen Schnittstelle lesen kann. Sollte noch irgendwelcher Müll im Eingangspuffer stehen, lese ich den erst mit ReadExisting aus und schmeiße ihn weg Danach schicke ich die Zeichenfolge "*a#" an den Controller. Das war gemäß meiner Definition die Aufforderung für den Controller, seine Uhrzeit zu übermitteln. Als Antwort schickt mir der Controller dann wieder drei Text-Zeichen, die ebenso wie bei setTime mit einem Offset von 50 versehen sind, um wieder aus dem Bereich der Steuerzeichen zu kommen. Um auf den korrekten Wert zu kommen muss man zuerst den ASCII Wert des Zeichens ermitteln und davon dann 50 abziehen. Der so ermittelte Wert des ersten Zeichens sind die Stunden, der des zweiten sind die Minuten und der des dritten die Sekunden.

    Auch wenn der Code auf den ersten Blick recht lang wirkt - die einzelnen Prozeduren sind eigentlich verhältnismäßig kurz und sollten auch ohne große Inline-Kommentare schnell verdeutlichen, wie sie funktionieren. Die größte Schwierigkeit ist bei genauem Betrachten auch weniger die eigenliche Kommunikation zwischen Controller und PC sondern das Festlegen eines geeigneten Protokolls.

    Im Prinzip geht es also nur darum, das Port-Objekt zuerst zu initialisieren und dann mit den geeigneten Read / Write Methoden mit dem Controller zu kommunizieren. Welche Methoden zur Verfügung stehen siehst Du hier: http://msdn.microsoft.com/de-de/libr...(v=vs.85).aspx Mehr braucht man für den Datentransfer auf PC Seite eigentlich nicht.
    Geändert von redround (14.08.2013 um 10:17 Uhr) Grund: MSDN Link eingefügt

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Visual Basic / Visual C++
    Von kalletronic im Forum Software, Algorithmen und KI
    Antworten: 17
    Letzter Beitrag: 30.08.2009, 11:28
  2. Quellcode von Visual Basic 6.0 nach Visual Basic .NET
    Von danionbike im Forum Software, Algorithmen und KI
    Antworten: 14
    Letzter Beitrag: 30.08.2007, 01:01
  3. visual basic
    Von epos im Forum Software, Algorithmen und KI
    Antworten: 12
    Letzter Beitrag: 23.07.2007, 10:44
  4. PC-Cam mit visual basic
    Von Ford im Forum Sensoren / Sensorik
    Antworten: 55
    Letzter Beitrag: 12.09.2006, 17:09
  5. Visual Basic und der LPT
    Von ShadowPhoenix im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 22.02.2004, 13:12

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen