[vb.net] Starta/Stänga av enheter samtidigt?

Moderator: Telldus

Post Reply
NSS
Posts: 2
Joined: Fri Mar 17, 2023 9:45 am
Location: Norrköping
Contact:

[vb.net] Starta/Stänga av enheter samtidigt?

Post by NSS »

Utvecklar ett eget program i vb.net för att styra mina enheter.

Enda problemet är att det verkar inte gå att starta/stänga av flera samtidigt, eller direkt efter varrandra?

Exempelvis om man skriver:

devTurnOn(1)
devTurnOn(2)


så händer ingenting med någon utav dem.


skriver jag istället:

devTurnOn(1)
Application.DoEvents
devTurnOn(2)


så fungerar det heller inte.

Enda sättet som verkar fungera är att vänta tills funktionen är klar genom att uppskatta hur lång tid den tar på sig, och bygga en timerfunktion.

Public Sub TurnOn()
dim Return as Boolean = False
Return = devTurnOn(2)
Wait(50)
Return = devTurnOn(3)
Wait(50)
Return = devTurnOn(4)
End Sub

Public Function Wait(ByVal Time As Integer) As String
For i As Integer = 1 To Time * 1000
Application.DoEvents()
Next
Wait = ""
End Function


Någon som har något annat förslag?
Cheerz, Denna
NewSide System Sweden
http://newside.awardspace.com
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

devTurnOn (och de andra funktionerna) är non-blocking vilket betyder att de returnerar innan TellSticken har sänt klart. Detta för att förhindra att programmet i datorn "fryser" när den ska kommunicera med TellStick. En paus på 500 ms räcker gott mellan anropen!
Micke Prag
Software
Telldus Technologies
NSS
Posts: 2
Joined: Fri Mar 17, 2023 9:45 am
Location: Norrköping
Contact:

Post by NSS »

Okey, tack så mycket för informationen, då bygger jag vidare via delays.
Cheerz, Denna
NewSide System Sweden
http://newside.awardspace.com
olf
Posts: 4
Joined: Fri Mar 17, 2023 9:45 am
Location: Gefle

Post by olf »

Använd med fördel Thread.Sleep(500) för 500ms så får du något som sover lite mer som du tänkt.

Om du inte vill att applikationen skall stanna medans du kör din sleep (tänker på att du kör DoEvents) så flytta över koden till en BackgroundWorker så lämnas huvudtråden (formuläret etc.) fri. Dock får de ju vissa andra konsekvenser som crossthread-calls som du får lösa med Invoke.
Post Reply