Hej.
Jag sitter i visual studio och ska göra en enkel applikation som bara visar status på en i/o modul som är kopplad till datorn. har följande exempel kod som läser av värdet..
Dim tcClient As TcAdsClient
Sub connect()
tcClient = New TcAdsClient()
tcClient.Connect("192.168.255.12.1.1", 301)
TextBox1.Text = tcClient.IsConnected
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Try
Dim dataStream As New AdsStream(1)
Dim binRead As New BinaryReader(dataStream)
tcClient.Read(61473, 1, dataStream)
dataStream.Position = 0
TextBox2.Text = binRead.ReadByte().ToString()
'Catch err As Exception
' MessageBox.Show(Err.Message)
'End Try
End Sub
Vad jag vill nu är att ha en funktion som utförs så fort värdet ändras när man kör
Jag hänger inte med, vill du ha en metod som alltid läser av binRead.ReadByte().ToString() eller vill du i din kod där du kör binRead.ReadByte().ToString(), kalla på en annan metod eller vill du trigga ett event?
a jag är riktigt dålig på det så det var nog en risig förklaring.
Vad jag vill är att den raden som läser av värdet på ingången alltid ska ligga och rulla så att så fort ingången blir hög så ska det trigga en funktion som registrerar tider m.m.
Titta på Timer-objektet. Jag är dålig på vb.net men på detta objekt finns det ett event som heter Tick() i detta event kan du sedan kolla av dina kodarader och utifrån resultatet köra en metod
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If (binRead.ReadByte().ToString() == "Hej") Then
''kör medetod
End If
End Sub
while (true)
{
//gör det du vill
thread.Sleep(10000);
}
Siffran innanför Sleep(), är intervallet som tråden ska "sova"
R: detta kanske inte är den bästa lösningen vid en winformapplikation utan lämpars sig bättre till en konsolapplikation.
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e