Blog
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.
Forberedelser
Du har allerede angivet din Web-IO Digital
- med magt,
- konfigurerede ind- og udgange,
- tilsluttet den til dit netværk,
- tildelt den en IP-adresse – hvilket med WuTility ikke er noget problem.
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 betjeningselementerI 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 forbindelsenForbindelsen å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 oprettetSå 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.
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.