Jump to content

AchimK

Members
  • Gesamte Inhalte

    2
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von AchimK

  1. Hallo zusammen,

    ich möchte 3 Stapel (jeweils Master-Brick, WiFi-Master-Extension 2.0 und Bricklets für Messdaten-Erfassung) mit meinem Laptop über WLAN verbinden. Auf dem Laptop erfolgt das Auslesen der Messdaten mittels Visual-Basic-Script. Wie muss ich die WiFi-Extensions und den Laptop dafür konfigurieren? Der Laptop hat keine Verbindung zum Internet.

    Danke und Grüße

    Achim Kunz

  2. Hallo Forum,

    ich nutze das RemoteSwitchV2-Bricklet in Kombination mit Masterbrick und Wifi V2 Extension zur zeitgesteuerten Schaltung von 8 Funk-Steckdosen. Die Applikation für die Steuerung habe ich in VB.Net geschrieben, sie läuft auf einem Windows-Tablet. Tablet und Wifi-Extension sind als Client am Haus-Wifi (TP-Link Powerline Extender) angemeldet. Die Schaltung der 8 Steckdosen erfolgt immer quasi gleichzeitig, über die SwitchDoneCallback-Funktion wird mit dem nächsten Schalten gewartet, bis die Rückmeldung vorhanden ist. Für die Software-Struktur habe ich den robusten Ansatz aus dem Tutorial gewählt, es funktioniert auch meistens über mehrere Stunden, aber es kommt vor, dass die Callback-Funktion aussetzt und die Schaltschrittkette nicht ausgeführt wird bzw. hängen bleibt. Zur Diagnose habe ich die Aufrufe der Connected-, Disconnected- und Enumerate-Callbacks in einer Datei protokolliert. Im Fehlerfall wird kurz nacheinander eine Unterbrechung der Verbindung mit Grund 1 gemeldet, dann der Aufbau mit Grund 1 und abschließend der Enumerate-Callback. 

    Wie kann es zu solchen kurzen Unterbrechungen kommen und warum funktioniert der SwitchingDoneCallback dann nicht mehr?

    Danke und Grüße

     

    Hier noch ein Auszug aus der Software

        '**********************************************************
        '* Callback-Funktion RemoteSwitch
        '* Rückmeldung, dass ein Schaltvorgang durchgeführt wurde
        '**********************************************************
        Sub SwitchingDoneCallback(ByVal sender As BrickletRemoteSwitchV2)
            Try
                SwitchingDoneCallback_Cnt += 1
                bSendBusy = False
            Catch ex As Exception
                MsgBox("SwitchingDoneCB " + ex.Message)
            End Try
        End Sub

        '**********************************************************
        '* Callback-Funktion Verbindung
        '* Meldung, dass die Verbindung unterbrochen wurde
        '**********************************************************
        Sub DisconnectedCallback(ByVal sender As IPConnection, ByVal disconnectReason As Short)
            Try
                DisconnectedCallback_Cnt += 1
                sDisconnected = "Verbindung unterbrochen mit Grund " + disconnectReason.ToString + " " + Now.ToShortDateString + " " + Now.ToShortTimeString
                bDisconnected = True
            Catch ex As Exception
                MsgBox("DisconnectedCB " + ex.Message)
            End Try
        End Sub

        '**********************************************************
        '* Callback-Funktion Verbindung
        '* Meldung, dass die Verbindung aufgebaut wurde
        '**********************************************************
        Sub ConnectedCallback(ByVal sender As IPConnection, ByVal connectReason As Short)
            Try
                ConnectedCallback_Cnt += 1
                sConnected = "Verbindung hergestellt mit Grund " + connectReason.ToString + " " + Now.ToShortDateString + " " + Now.ToShortTimeString
                bConnected = True
                ipcon.Enumerate()
            Catch ex As Exception
                MsgBox("ConnectedtCB " + ex.Message)
            End Try
        End Sub

        '**********************************************************
        '* Callback-Funktion Verbindung
        '* Enumerate
        '**********************************************************
        Sub EnumerateCB(ByVal sender As IPConnection,
                        ByVal uid As String,
                        ByVal connectedUid As String,
                        ByVal position As Char,
                        ByVal hardwareVersion() As Short,
                        ByVal firmwareVersion() As Short,
                        ByVal deviceIdentifier As Integer,
                        ByVal enumerationType As Short)
            If enumerationType = IPConnection.ENUMERATION_TYPE_CONNECTED Or
               enumerationType = IPConnection.ENUMERATION_TYPE_AVAILABLE Then

                If deviceIdentifier = BrickletRemoteSwitchV2.DEVICE_IDENTIFIER Then
                    rs = New BrickletRemoteSwitchV2(uid, ipcon)
                    AddHandler rs.SwitchingDoneCallback, AddressOf SwitchingDoneCallback
                    bEnumerate = True
                End If
            End If
        End Sub

    ...

    ...

        '*****************************************************************************
        '* Load: Aufruf bei Programm-Start
        '*****************************************************************************
        Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            ...

            ...

            '**************************************************************
            '* Verbindung zur Tinkerforge-Hardware
            '* Callback-Funktionen einrichten und Verbindugn starten
            '**************************************************************
            ipcon = New IPConnection
            AddHandler ipcon.DisconnectedCallback, AddressOf DisconnectedCallback
            AddHandler ipcon.ConnectedCallback, AddressOf ConnectedCallback
            AddHandler ipcon.EnumerateCallback, AddressOf EnumerateCB

            ipcon.Connect(sHost, nPort)
            ' Trigger Enumerate
            ipcon.Enumerate()
    End Sub

     

×
×
  • Neu erstellen...