OscilloscopeConnectionTest.vb

' OscilloscopeConnectionTest.vb
'
' This example performs a connection test.
'
' Find more information on http://www.tiepie.com/LibTiePie .

Imports System
Imports System.Threading
Imports TiePie.LibTiePie

Module OscilloscopeConnectionTestExample

    Sub Main()
        ' Print library information:
        PrintLibraryInfo()

        ' Enable network search:
        Network.AutoDetectEnabled = True

        ' Update device list:
        DeviceList.Update()

        ' Try to open an oscilloscope with connection test support:
        Dim scp As Oscilloscope = Nothing

        If DeviceList.Count <> 0 Then
            For i As UInt32 = 0 To DeviceList.Count - 1
                Dim item As DeviceListItem = DeviceList.GetItemByIndex(i)
                If item.CanOpen(DeviceType.Oscilloscope) Then
                    scp = item.OpenOscilloscope()

                    ' Check for connection test support:
                    If scp.HasConnectionTest Then
                        Exit For
                    Else
                        scp.Dispose()
                        scp = Nothing
                    End If
                End If
            Next
        End If

        If Not IsNothing(scp) Then
            Try
                ' Get the number of channels:
                Dim channelCount As UInt16 = scp.Channels.Count

                ' Enable all channels that support connection testing:
                For Ch As UInt16 = 0 To channelCount - 1
                    scp.Channels(Ch).Enabled = scp.Channels(Ch).HasConnectionTest
                Next

                ' Start connection on current active channels:
                scp.StartConnectionTest()

                ' Wait for connectiontest to complete:
                While Not scp.IsConnectionTestCompleted
                    Thread.Sleep(10) ' 10 ms delay, to save CPU time.
                End While

                ' Get data:
                Dim Data() As TriState = scp.GetConnectionTestData

                ' Print results:
                Console.WriteLine("Connection test result:")
                For ch As UInt16 = 0 To channelCount - 1
                    Console.Write("Ch" + ch.ToString + " = ")

                    Select Case Data(ch)
                        Case TriState.Undefined
                            Console.WriteLine("undefined")
                        Case TriState.False
                            Console.WriteLine("false")
                        Case TriState.True
                            Console.WriteLine("true")
                        Case Else
                            Console.WriteLine("unknown state")
                    End Select
                Next

            Catch e As System.Exception
                Console.WriteLine("Exception: " + e.Message)
                System.Environment.Exit(1)
            End Try

            ' Close oscilloscope:
            scp.Dispose()
            scp = Nothing
        Else
            Console.WriteLine("No oscilloscope available with connection test support!")
            Environment.Exit(1)
        End If

        Environment.Exit(0)
    End Sub

End Module