Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
20.10.2022, 07:08 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2022 07:09 von GerdW.)
RE: Global Variable in Ereignis Struktur hinzufügen
Hi Martin,
beim Starten, bekomme ich diesen Fehler im Anhang.
Gegenwärtig funktioniert es mit der VB.NET und der VB6 Code.
Dieses Teil wie in VB.NET muss da sein lt. Lieferant Support:
Code:
Private Sub _server_OnRead(device As Device, data As ReadData) Handles YMcom.OnRead
Dim line As String = $"Device Read (Addresse {device.Adresse}): {data.RelaisCount1}"
Invoke(Sub()
Dim index As Integer = ComboBox1.SelectedIndex
Dim text As String = ComboBox1.Text
If (index > -1 AndAlso Not String.IsNullOrEmpty(text)) Then
Dim selectedAdresse As Integer = Convert.ToInt32(text)
Debug.WriteLine("selected2: " & selectedAdresse)
If (selectedAdresse = device.Adresse) Then
_UpdateChechboxes(data)
End If
End If
End Sub)
Debug.WriteLine(line)
End Sub
Nach dem Starten, gibt die Hardware die Adresse zurück und diese muss dann angenommen werden.
Pfuuuuuuuuuuuh, alles so schwer :-)
Bin halt immer noch beim Experimentieren :-)
RE: Global Variable in Ereignis Struktur hinzufügen
Hi Nathalie,
ich glaub niucht, dass die Callbacks gebraucht werden. Die sind ja nur dazu da um festzustellen, ob ein Gerät connected und/oder disconnected wurde. So passiert das auch bei den ETH Modulen. Das schließen/öffnen eines Relais läuft nicht über irgendwelche Callbacks (wozu auch).
Die Fehlermeldung sagt ja auch nur, dass er das "Device" nicht gefunden hat. Vielleicht braucht der ganze Quatsch der da um ein simples Relaisboard herum gestrickt wurde, einfach ein bisschen viel Zeit? Vielleicht funktioniert das auch nicht mit dem Server Start.
RE: Global Variable in Ereignis Struktur hinzufügen
(20.10.2022 17:08 )Martin.Henz schrieb: Vielleicht braucht der ganze Quatsch der da um ein simples Relaisboard herum gestrickt wurde, einfach ein bisschen viel Zeit?
Meinst du die Hardware oder das was im Blockdiagramm ist?
Private Async Sub SchaltZustandSenden()
Try
Await YMcom.SEND_OUTPUT_STATUS_8(ComboBox1.Text, SendeByte1)
Catch ex As Exception
WriteOutput.Text = „error or no device found by adresse“ & „/“ & ex.Message
End Sub
Das heißt dann wohl offensichtlich:
Über den Callback DeviceConnectedCallback wird dem Programm mitgeteilt, dass ein Device connected wurde - und welche Adresse das Device hat. Steht gemäß eines anderen Eintrags dann in ComboBox1.Text.
Mittels der gemeldeten Adresse kann SEND_OUTPUT_STATUS_8 nun Relais schalten - selbstverständlich ohne Callback.
Ein weiterer Callback (DeviceDisconnectedCallback ?) teilt dem Programm mit, dass das Device disconnected wurde. Das Programm sollte nun nicht mehr auf die bisher bekannte Adresse schreiben.
Ich vermute nun, dass folgendermaßen vorgegangen werden muss:
VI schreiben für Callback DeviceConnectedCallback. Tritt der Callback dann ein, hat jemand die Relais-Karte eingesteckt. Ab jetzt ist die Adresse gültig.
VI schreiben zum Schalten von Relais: verwendet wird die im Callback übergebene Adresse.
VI schreiben für Callback DeviceDisconnectedCallback. Ab jetzt ist die Adresse aus DeviceConnectedCallback ungültig.
Wer schreibt jetzt das Callback-VI?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
22.10.2022, 13:00 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2022 13:04 von Martin.Henz.)
RE: Global Variable in Ereignis Struktur hinzufügen
(21.10.2022 10:56 )Natalie1984 schrieb: Meinst du die Hardware oder das was im Blockdiagramm ist?
Wenn du meinen Versuch einfach so startest, dann kommt nach StartAsync ziemlich schnell der erste Schreibvorgang. Wenn der Server aber noch Zeit braucht um festzustellen, ob die Hardware vorhanden ist, dann bekommst du logischerweise erst einmal die Meldung, dass das Board nicht existiert.
BTW: Vielleicht habe ich es überlesen: Welches Board hast du genau, bzw. wie viele Relais sind da drauf?
Wenn es mehr als 4 Relais hat, dann müsste mein VI auch noch an das verwendete Board angepasst werden.
Hallo IchSelbst,
egal, was man von den Callbacks hält: da fehlt noch StartAsync was laut API Beschreibung notwendig ist. Das muss auch irgendwo in dem VB Code stecken.
RE: Global Variable in Ereignis Struktur hinzufügen
(21.10.2022 19:01 )IchSelbst schrieb: Ich vermute nun, dass folgendermaßen vorgegangen werden muss:
VI schreiben für Callback DeviceConnectedCallback. Tritt der Callback dann ein, hat jemand die Relais-Karte eingesteckt. Ab jetzt ist die Adresse gültig.
VI schreiben zum Schalten von Relais: verwendet wird die im Callback übergebene Adresse.
VI schreiben für Callback DeviceDisconnectedCallback. Ab jetzt ist die Adresse aus DeviceConnectedCallback ungültig.
Wer schreibt jetzt das Callback-VI?
Ich würde es gerne schreiben wollen, wenn Ihr mich dabei unterstützen würdet.
Wie könnte ich da anfangen?
RE: Global Variable in Ereignis Struktur hinzufügen
(24.10.2022 17:14 )Natalie1984 schrieb: Wie könnte ich da anfangen?
Leider hab ich kein vorzeigbares Muster. Meine .NET-DLLs sind kundenspezifisch und nicht zur Veröffentlichung geeignet.
Du kannst mal wie folgt anfangen:
Suche aus der DLL den Konstruktor heraus, der beim Anschuss am Referenzeingang des Knotens "Ereignis-Callback registrieren" in der ersten Zeile des Knotens einen Text erscheinen lässt, der auf eine Callback-Funktionalität schließen lässt.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
RE: Global Variable in Ereignis Struktur hinzufügen
(26.10.2022 07:45 )IchSelbst schrieb:
(24.10.2022 17:14 )Natalie1984 schrieb: Wie könnte ich da anfangen?
Leider hab ich kein vorzeigbares Muster. Meine .NET-DLLs sind kundenspezifisch und nicht zur Veröffentlichung geeignet.
Du kannst mal wie folgt anfangen:
Suche aus der DLL den Konstruktor heraus, der beim Anschuss am Referenzeingang des Knotens "Ereignis-Callback registrieren" in der ersten Zeile des Knotens einen Text erscheinen lässt, der auf eine Callback-Funktionalität schließen lässt.