Ved hjælp af følgende programeksempel kan du repræsentere din Web-IO Digital med dens indgange og udgange i et Windows-program. Du kan også skifte mellem Web-IO-udgangene

Kom i gang - bestil en prøveversion i 30 dage.

Prøv vores produkter fra Wiesemann & Theis gratis i 30 dage ved at skrive det i ordrebekræftelsen: Ønsker at teste produktet.
Hvis du ikke ønsker at gøre brug af din returret inden for 30 dage, skal du blot betale den medfølgende faktura. Gratis forsendelse i Danmark.

Bestil prøveversion her:

Forberedelser

Du har allerede angivet din Web-IO Digital

Kombination af de forskellige betjeningselementer og visningsobjekter i VB-formularen

Når du navngiver de enkelte objekter, er det en god idé at bruge logiske navne. I dette eksempel beskriver den første del af navnet objekttypen og den anden del funktionen.

1. Start af programmet

Opsætning af betjeningselementer

I første omgang er gruppen med betjeningselementerne til Web-IO spærret for brug. Statuslinjen angiver, at der endnu ikke er en forbindelse.

Private Sub Form_Load()
fr_io.Enabled = False
bt_disconnect.Enabled = False
StatusBar1.SimpleText = "No Connection"
End Sub

2. Kontrol af tilslutning

Etablering af forbindelsen

Forbindelsen åbnes ved at indtaste Web-IO’ens IP-adresse i tekstfeltet ed_ip og klikke på knappen bt_connect.

Private Sub bt_connect_Click()
If ed_ip.Text <> "" Then
winsock1.RemoteHost = ed_ip.Text
winsock1.RemotePort = Val(ed_port.Text)
winsock1.Connect
End If
End Sub
Åbning af forbindelsen

Winsock-kontrollen i Visual Basic bruges til TCP/IP-håndtering. Denne kontrol gør det muligt at specificere og starte procedurer, når forskellige forbindelsestilstande opstår.

Forbindelsen er oprettet

Så snart der er oprettet en forbindelse med Web-IO, udfører Winsock-kontrollen den tilsvarende procedure. Statuslinjen viser, at forbindelsen er oprettet, at betjeningselementerne er klar til brug, og at afbryderknappen kan betjenes igen. Knappen Forbind er deaktiveret.

Private Sub winsock1_Connect()
fr_io.Enabled = True
bt_disconnect.Enabled = True
bt_connect.Enabled = False
StatusBar1.SimpleText = "Connected to " + ed_ip.Text
End Sub
Afbryder forbindelsen

Forbindelsen forbliver åben, indtil den afsluttes ved, at brugeren klikker på knappen Afbryd forbindelsen, eller Web-IO’en afslutter forbindelsen.

Private Sub bt_disconnect_Click()
winsock1.Close
fr_io.Enabled = False
bt_disconnect.Enabled = False
bt_connect.Enabled = True
StatusBar1.SimpleText = "No Connection"
End Sub

Her påkalder Winsock-kontrollen igen en tilsvarende procedure

Private Sub winsock1_Close()
fr_io.Enabled = False
bt_disconnect.Enabled = False
bt_connect.Enabled = True
StatusBar1.SimpleText = "No Connection"
winsock1.Close
End Sub
Forbindelsesfejl

Også i tilfælde af en forbindelsesfejl udfører Winsock-kontrollen en tilsvarende procedure, der i det væsentlige er som Disconnect-proceduren. Statuslinjen angiver også Winsock-fejlnummeret.

Private Sub winsock1_Error(ByVal Number As Integer, Description
As String, _
ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,
_
ByVal HelpContext As Long, CancelDisplay As Boolean)
fr_io.Enabled = False
bt_disconnect.Enabled = False
bt_connect.Enabled = True
StatusBar1.SimpleText = "ERROR " + Str(Number) + " : " + Description
winsock1.Close
End Sub

3. Drift og kommunikation fra klientsiden

Så snart der er oprettet forbindelse til Web-IO’en, kan brugeren bruge de tilsvarende programelementer til at sende kommandoer til Web-IO’en.

Indstilling af udgange
Brugeren indstiller udgangene ved hjælp af de to afkrydsningsfelter cb_outputx. Programmet bruger MouseUP-hændelsen for dette objekt. Hvis man bruger Mouse Up, dvs. slipper afkrydsningsfeltet for output, udfører programmet den tilsvarende procedure og – afhængigt af om afkrydsningsfeltet er sat eller ej – sender den relevante kommando til Web-IO.

Private Sub cb_output_MouseUp(Index As Integer, Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If cb_output(Index).Value Then
	winsock1.SendData ("GET /outputaccess" + Trim(Str(Index)) + _
	"?PW=" + ed_password.Text + "&State=ON&")
	Else
	winsock1.SendData ("GET /outputaccess" + Trim(Str(Index)) + _
	"?PW=" + ed_password.Text + "&State=OFF&")
End If
End Sub

Forespørgsel om status for output/input
Brugeren kan forespørge om status for outputs og inputs ved at klikke på den tilsvarende knap.

Private Sub bt_outputs_read_Click()
	winsock1.SendData ("GET /output?PW=" + ed_password.Text + "&")
End Sub
Private Sub bt_inputs_read_Click()
	winsock1.SendData ("GET /input?PW=" + ed_password.Text + "&")
End Sub

Read clear counters
Også indgangstællernes tællertilstande kan læses eller ryddes.

Private Sub bt_counter_read_Click(Index As Integer)
	winsock1.SendData ("GET /counter" + Trim(Str(Index)) + _
	"?PW=" + ed_password.Text + "&")
End Sub
Private Sub ed_counter_clear_Click(Index As Integer)
	winsock1.SendData ("GET /counterclear" + Trim(Str(Index)) + _
	"?PW=" + ed_password.Text + "&")
End Sub

Naturligvis kan alle tællere aflæses eller slettes på samme tid.

Private Sub cb_counter_readall_Click()
	winsock1.SendData ("GET /counter?PW=" + ed_password.Text + "&")
End Sub
Private Sub cb_counter_clearall_Click()
	winsock1.SendData ("GET /counterclear?PW=" + ed_password.Text + "&")
End Sub

4. Modtagelse af data fra Web-IO

Behandl og vis de modtagne data
Alle kommandoer og anmodninger til Web-IO bekræftes med en svarstreng. Svarene har en bestemt struktur afhængigt af typen.

For udgangene: output;<binær værdi af udgangsstatus i hexadecimalt format>
For indgangene: input;<binær værdi af indgangsstatus i hexadecimalt format>
For tællerne: counterx;<decimal tællerstatus>
eller counter;<decimal counter state 0 >; <decimal counter state 0 >;….. hvis du vil aflæse alle tællere på samme tid.
Alle svarstrenge afsluttes med en 0-byte.

Hvis data modtages af Winsock-kontrollen, påkalder sidstnævnte den tilsvarende procedure

Private Sub winsock1_DataArrival(ByVal bytesTotal As Long)
	Dim receivestring As String
	winsock1.GetData receivestring
	Select Case Left(receivestring, 1)
	Case "i"
	If (Val(Mid(receivestring, 7, 1)) And 1) = 1 Then
		cb_input(0).Value = 1
	Else
		cb_input(0).Value = 0
	End If
	If (Val(Mid(receivestring, 7, 1)) And 2) = 2 Then
		cb_input(1).Value = 1
	Else
		cb_input(1).Value = 0
	End If
	Case "o"
	If (Val(Mid(receivestring, 8, 1)) And 1) = 1 Then
		cb_output(0).Value = 1
	Else
		cb_output(0).Value = 0
	End If
	If (Val(Mid(receivestring, 8, 1)) And 2) = 2 Then
		cb_output(1).Value = 1
	Else
		cb_output(1).Value = 0
	End If
	Case "c"
	Dim tabpos
		If Mid(receivestring, 8, 1) = "0" Then
		ed_counter(0).Text = Mid(receivestring, 10, Len(receivestring) - 10)
		End If
		If Mid(receivestring, 8, 1) = "1" Then
		ed_counter(1).Text = Mid(receivestring, 10, Len(receivestring) - 10)
		End If
		If Mid(receivestring, 8, 1) = ";" Then
		tabpos = InStr(9,receivestring, ";")
		ed_counter(0).Text = Mid(receivestring,9, tabpos - 9)
		ed_counter(1).Text = Mid(receivestring,tabpos + 1, _
		Len(receivestring) - tabpos - 1)
	End If
	End Select
End Sub

Modtagelsesproceduren bruger det første tegn i de modtagne data til at kontrollere, om det er en input-, output- eller tællerbesked. Afhængigt af dette bestemmes det for eksempel, hvilken udgang der har hvilken status. Når det gælder tællerne, er det også muligt at aflæse individuelle tællerværdier eller at aflæse alle tællerne på én gang. De enkelte tællertilstande udlæses derefter i decimalformat i en semikolonafgrænset streng.

5. Afstemning

Cyklisk polling af bestemte værdier
For at muliggøre automatisk opfriskning af displayet bruges en timer. Afhængigt af afkrydsningsfelterne for output, input og counter polling hentes de tilsvarende oplysninger fra Web-IO med et bestemt interval.

Private Sub timer_polling_Timer()
	If winsock1.State = sckConnected Then
	If cb_output_polling.Value Then
		winsock1.SendData ("GET /output?PW="+ ed_password.Text + "&")
	End If
	If cb_input_polling.Value Then
		winsock1.SendData ("GET /input?PW="+ ed_password.Text + "&")
	End If
	If cb_counter_polling.Value Then
		winsock1.SendData ("GET /counter?PW="+ ed_password.Text + "&")
	End If
	End If
End Sub

Det ønskede interval kan indtastes i det tilsvarende tekstfelt. Når der foretages ændringer, justeres timerintervallet automatisk.

Private Sub ed_interval_Change()
	timer_polling.Interval = Val(ed_interval)
End Sub

Web-IO kan selvfølgelig også konfigureres til selvstændigt at sende beskeder fra programmet, når noget ændrer sig på en af indgangene.

programmet eksemplet understøtter alle almindelige funktioner i Web-IO i kommandostrengstilstand, optimeret til Web-IO 2x Digital Input, 2x Digital Output. For de andre Web-IO-modeller kan det være nødvendigt at tilpasse programmet. Yderligere programeksempler til socket-programmering kan findes på værktøjssiderne for Web-IO. En detaljeret beskrivelse af socket-grænsefladen til Web-IO Digital-modellerne findes i referencemanualen.

Download programeksempel

Wiesemann & Theis GmbH blev grundlagt i 1979 af Reinhard Wiesemann og Rüdiger Theis. Med 50 ansatte producerer virksomheden mikrocomputer- og netværksteknologi i Wuppertal. I 2001 introducerede Wiesemann & Theis den første industrielle temperatursensor med et netværksinterface, Web-Thermometer, og har næsten 20 års erfaring inden for områderne Industri 4.0 og Internet of Things.

Active Communication har været distributør for W&T siden 1992 i Danmark og siden 2002 også i Sverige, Norge og Island. W&T’s produkter er ekstremt brugervenlige og pålidelige til en konkurrencedygtig pris.