webForumDet fria alternativet

skapa en händelse?

.NET

5 svar · 387 visningar · startad av eddy1

Medlem sedan aug. 2001969 inlägg
Frågan#1

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

binRead.ReadByte().ToString()

.
Hur får jag den att hela tiden läsa av värdet??

Medlem sedan dec. 2005664 inlägg
#2

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?

Medlem sedan aug. 2001969 inlägg
#3

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.

Medlem sedan dec. 2005664 inlägg
#4

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
Medlem sedan aug. 2001969 inlägg
#5

Jo jag hade Timer objektet i tankarna men det kändes inte riktigt rätt??
Får väll prova det..

tack

Medlem sedan dec. 2005664 inlägg
#6

du kan även prova att köra följande:

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.

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)