Wenn ich das, was auf der Yamutec-Seite steht, richtig interpretiere, ist offensichtlich folgendes norwendig:
Von der Yamutec-Seite:
Code:
// ... das automatische Erkennen der Hardware durch das System und das Ein- und Ausschalten der Relais.
Private Sub TestForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
YMcom = New DeviceServer With
{
.DeviceConnectedCallback = AddressOf DeviceConnectedCallback,
.DevicesChangedCallback = AddressOf DevicesChangedCallback,
.DeviceDisconnectedCallback = AddressOf DeviceDisconnectedCallback,
.ReadAllDevicesContinuously = True,
.ReadAllDevicesInterval = 1,
.ReadCallback = AddressOf ReadCallback
}
End Sub
// SendByte1 = 1 = Relais einschalten / SendByte1 = 0 = Relais ausschalten
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?