This is my code, and when I run the project, there are no errors, but when it goes to my Dispense() event "An unhandled exception of type 'System.NullReferenceException' occurred" in the line ManDis = returnedMessage.Substring(8, 3)
It is necessary to do a try..catch or something?
Thanks!
Module Module1
Public WithEvents ANDI As ANDI_AXC_LIBLib.ANDI_AXC
Public WithEvents ANDI_LOOP As ANDI_AXC_LIBLib.ANDI_AXC
Dim MAnufacturer As String
Public returnedMessage As String
Dim system As String
Dim version As String
Dim software As String
Dim connecttion As String
Dim logical As String
Dim DClass As String
Dim ID As String
Dim ServiceCount As String
Dim servicesupplied As String
' ANDI Library access
Sub Main()
ANDI = New ANDI_AXC
'IP list for the console
Dim addys As New List(Of String)
addys.Add("10.0.99.139")
addys.Add("10.0.99.138")
addys.Add("10.0.99.181")
For Each addy As String In addys
With ANDI
.DeviceClass = "POS01"
.ServiceClass = "DGS"
.Mode = ANDI_AXC_LIBLib._COMM_MODE.ETHERNET
.CommPort = 1
.EthernetPort = 6627
.BaudRate = 9600
.DataBits = 8
.Parity = ANDI_AXC_LIBLib._PARITY_MODE.NO_PARITY
.StopBits = 2
End With
Dim MyResult As ANDI_AXC_LIBLib.CONN_OP_RESULT ' The return value from Open (found in the type library)
ANDI.DeviceID = addy
ANDI.Close()
' Are we already connected?
If ANDI.Connected Then
' Close the connection.
Call ANDI.Close()
Else
End If
' Open the connection.
MyResult = ANDI.Open()
MsgBox(MyResult.ToString())
If MyResult = ANDI_AXC_LIBLib._CONN_OP_RESULT.CONN_OP_FAILED Then
Console.WriteLine(ANDI.StatusMessage)
Console.WriteLine("you are not connected")
Else
Console.WriteLine("Press enter to connect to the Allied network")
End If
SendMessage("DIS00 E00", 2)
Console.ReadLine()
Call ANDI.Open()
Console.WriteLine("You are connected to the NexGen at: " & ANDI.DeviceID)
MsgBox("You are connected!!!!")
Console.WriteLine("")
MAnufacturer = returnedMessage.Substring(9, 20)
Console.WriteLine("Manufacturer = " + MAnufacturer)
'Device Name
system = returnedMessage.Substring(29, 15)
Console.WriteLine("Device Name = " + system)
'Version name
version = returnedMessage.Substring(44, 5)
Console.WriteLine("Version = " + version)
'Software Identification
software = returnedMessage.Substring(49, 20)
Console.WriteLine("Software = " + software)
'Connection Status
connecttion = returnedMessage.Substring(69, 1)
Console.WriteLine("Connection Status = " + connecttion)
'Logical Status
logical = returnedMessage.Substring(70, 1)
Console.WriteLine("Logical Status = " + logical)
'Device Class
DClass = returnedMessage.Substring(71, 3)
Console.WriteLine("Device Class = " + DClass)
'ID
ID = returnedMessage.Substring(74, 2)
Console.WriteLine("ID = " + ID)
' number of services supplied
ServiceCount = returnedMessage.Substring(76, 2)
Console.WriteLine("Number of Service = " + ServiceCount)
'services Supplied
servicesupplied = returnedMessage.Substring(78)
Dim sb As New System.Text.StringBuilder
For Each s As String In SplitIntoSets(servicesupplied, 3)
sb.AppendLine(s)
Next
Console.WriteLine("Services Suppled ")
Console.WriteLine("---------------------")
Console.WriteLine(sb.ToString)
Next
Console.ReadLine()
End Sub
Private Sub SendMessage(ByVal message As String, ByVal target As Integer)
Dim MyResult As Boolean
' Are we connected?
If Not ANDI.Connected Then Exit Sub ' Nope.
Dim result As Boolean
result = message.Contains("DIS")
If result Then <<'this is my DIS string to determine which event will be handled**
dispenser()
End If
' Did the user type anything?
If message = "" Then Exit Sub ' Nope.
' Send the contents of the text box.
MyResult = ANDI.SendMessage((message))
'System.Threading.Thread.Sleep(1000)
Console.WriteLine("result: " & MyResult)
'MsgBox("my result: " & MyResult)
' How did we do?
If MyResult Then
If target = 1 Then
Console.WriteLine("Message Sent 1")
Else
Console.WriteLine("Message Sent else")
End If
Else
Beep()
If target = 1 Then
Console.WriteLine(ANDI.StatusMessage)
Else
Console.WriteLine(ANDI.StatusMessage)
End If
End If
End Sub
Sub Dispenser()
Dim ManDis As String
Dim DisCount As String
Dim DisNum As String
Dim DisDetail As String
ManDis = Nothing
DisCount = Nothing
DisNum = Nothing
DisDetail = Nothing
' ANDI Library access
ANDI = New ANDI_AXC
'IP list for the console
Dim addys As New List(Of String)
addys.Add("10.0.99.139")
addys.Add("10.0.99.138")
addys.Add("10.0.99.181")
For Each addy As String In addys
With ANDI
.DeviceClass = "POS01"
.ServiceClass = "DGS"
.CommPort = 1
.EthernetPort = 6627
.BaudRate = 9600
.DataBits = 8
.Parity = ANDI_AXC_LIBLib._PARITY_MODE.NO_PARITY
.StopBits = 2
End With
Dim MyResult As ANDI_AXC_LIBLib.CONN_OP_RESULT ' The return value from Open (found in the type library)
ANDI.DeviceID = addy
ANDI.Close()
' Are we already connected?
If ANDI.Connected Then
Else
End If
' Open the connection.
MyResult = ANDI.Open()
MsgBox(MyResult.ToString())
Console.ReadLine()
Call ANDI.Open()
Console.WriteLine("You are connected to the NexGen at: " & ANDI.DeviceID)
MsgBox("You are connected!!!!")
Console.WriteLine("")
ManDis = returnedMessage.Substring(8, 3)<<<<<<<<<<<<<<< my error happens here.
Console.WriteLine("Manufacturer = " + ManDis)
'Device Name
DisCount = returnedMessage.Substring(29, 2)
Console.WriteLine("Device Name = " + DisCount)
DisNum = returnedMessage.Substring(100, 2)
Console.WriteLine("Device Name = " + DisNum)
DisDetail = returnedMessage.Substring(29, 6)
Console.WriteLine("Device Name = " + DisDetail)
End
Next
Console.ReadLine()
End Sub