gclib  1.36.3
Communications API for Galil controllers and PLCs
IP_Assigner.vb
1 Partial Public Module Examples
2  Public Function IP_Assigner(gclib As Gclib, serial_num As String, address As Byte) As Integer
3  Dim controller_found As Boolean = False
4  Dim requests() As String
5 
6  Do 'Loop while no requests are found.
7  Console.WriteLine("Searching...")
8 
9  'Listen for ~5 secods for controllers requesting IP addresses.
10  requests = gclib.GIpRequests()
11 
12  For Each request In requests
13  Console.WriteLine(request)
14  Next request
15  Loop While (requests.Count() < 1)
16 
17  For Each request In requests
18  Dim controller_params() As String = request.Split({", "}, StringSplitOptions.None)
19 
20  'Parameters are ordered as
21  '[Model #], [Serial #], [MAC Address], [Connection Name], [IP Address]
22 
23  If (controller_params.Count() < 5) Then
24  Console.WriteLine("Unexpected controller format")
25  Return GALIL_EXAMPLE_ERROR
26  End If
27 
28  Dim mac As String = controller_params(2)
29  Dim ip As String = controller_params(4)
30 
31  'If controller contains the user entered serial number
32  If (serial_num = controller_params(1)) Then
33  Console.WriteLine("Controller Match Found")
34  controller_found = True
35 
36  'Splits the found ip address into individual bytes
37  Dim ip_bytes() As String = ip.Split(".")
38 
39  'Rebuild the ip address using the user provided address as the last byte
40  Dim new_ip = $"{ip_bytes(0)}.{ip_bytes(1)}.{ip_bytes(2)}.{address}"
41 
42  'Assign the New ip address to the controller
43  gclib.GAssign(new_ip, mac)
44 
45  'Open a connection at the New ip address
46  gclib.GOpen(new_ip)
47 
48  'Burns the newly assigned ip address to non-volatile EEPROM memory
49  gclib.GCommand("BN")
50 
51  Console.WriteLine("IP Address assigned")
52 
53  'Write the connection string to the console
54  Console.WriteLine(gclib.GInfo())
55 
56  Exit For
57  End If
58  Next request
59 
60  If Not controller_found Then
61  Console.Write("No controller matched the entered serial number")
62  End If
63 
64  Return GALIL_EXAMPLE_OK
65 
66  End Function
67 End Module