PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
Declare Function adc200_set_time_units Lib "ADC20032.dll" (units As Integer) As Integer
Declare Function adc200_get_times_and_values Lib "ADC20032.dll" (times As Long, buffer_a As Integer, buffer_b As Integer, ByVal no_of_values As Long) As Long
Code: Select all
Declare Function adc200_set_time_units Lib "ADC20032.DLL" (ByVal units As Integer) As Integer
Code: Select all
ReDim times(RecordLengthValue - 1) As Long
ReDim ChanBuf(RecordLengthValue - 1) As Integer
ReDim ChanBufB(RecordLengthValue - 1) As Integer
Dim ok As Integer
ok = adc200_set_time_units(2)
ok = adc200_get_times_and_values(times(0), ChanBuf(0), ChanBufB(0), RecordLengthValue)
Code: Select all
Declare Function adc200_open_unit Lib "ADC20032.dll" (ByVal port As Integer) As Integer
Declare Function adc200_set_unit Lib "ADC20032.dll" (ByVal port As Integer) As Integer
Declare Sub adc200_close_unit Lib "ADC20032.dll" (ByVal port As Integer)
Declare Function adc200_get_driver_version Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_product Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_hw_version Lib "ADC20032.dll" () As Integer
Declare Function adc200_has_relays Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_unit_info Lib "ADC20032.dll" (ByVal str As String, ByVal lth As Integer, ByVal line_no As Integer, ByVal port As Integer) As Integer
Declare Function adc200_set_frequency Lib "ADC20032.dll" (ByVal Frequency As Long) As Long
Declare Function adc200_set_range Lib "ADC20032.dll" (ByVal channel As Integer, ByVal gain As Integer) As Integer
Declare Sub adc200_set_dc Lib "ADC20032.dll" (ByVal channel As Integer, ByVal enable_dc As Integer)
Declare Function adc200_set_channels Lib "ADC20032.dll" (ByVal mode As Integer) As Integer
Declare Function adc200_set_oversample Lib "ADC20032.dll" (ByVal factor As Integer) As Integer
Declare Function adc200_set_trigger Lib "ADC20032.dll" (ByVal enabled As Integer, ByVal source As Integer, ByVal direction As Integer, ByVal delay_percent As Integer, ByVal threshold As Integer) As Integer
Declare Function adc200_set_timebase Lib "ADC20032.dll" (ns As Long, is_slow As Integer, ByVal timebase As Integer) As Integer
Declare Function adc200_set_time_units Lib "ADC20032.dll" (ByVal units As Integer) As Integer
Declare Function adc200_max_samples Lib "ADC20032.dll" () As Long
Declare Function adc200_run Lib "ADC20032.dll" (ByVal no_of_values As Long) As Integer
Declare Function adc200_ready Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_values Lib "ADC20032.dll" (buffer_a As Integer, buffer_b As Integer, ByVal no_of_values As Long) As Integer
Declare Function adc200_get_overflow Lib "ADC20032.dll" (channel As Integer) As Integer
Declare Sub adc200_stop Lib "ADC20032.dll" ()
Declare Sub adc200_get_single Lib "ADC20032.dll" (buffer As Integer)
Declare Function adc200_get_ets_time Lib "ADC20032.dll" () As Long
Declare Function adc200_get_max_ets Lib "ADC20032.dll" () As Integer
Declare Sub adc200_set_ets Lib "ADC20032.dll" (ByVal interleave As Integer, ByVal max_cycles As Integer, ByVal mode As Integer)
Dim buffer_a(100) As Integer
Dim buffer_b(100) As Integer
Dim ns As Long
Dim is_slow As Integer
Dim S As String * 255
Sub GetData()
port = 1
ok = adc200_open_unit(port)
For i = 0 To 4
j = adc200_get_unit_info(S, 255, i, port)
Cells(18 + i, "E").Value = S
Next i
If ok Then
Cells(17, "E").Value = "ADC-200 opened"
ok = adc200_set_trigger(1, 0, 0, 0, 100)
ok = adc200_set_channels(0)
mv = adc200_set_range(0, 8) ' Range 8 = 5V
Call adc200_set_dc(0, True) ' If software controlled AC/DC switch, set to DC
ok = adc200_set_time_units(0)
ok = adc200_set_oversample(1)
ok = adc200_set_timebase(ns, is_slow, 5)
Call adc200_set_ets(10, 50, 2)
ok = adc200_run(100)
While adc200_ready() = 0
Wend
Call adc200_stop
Call adc200_get_values(buffer_a(0), buffer_b(0), 100)
For i = 0 To 99
Cells(i + 4, "A").Value = ns * i
Cells(i + 4, "B").Value = buffer_a(i)
Cells(i + 4, "C").Value = (mv * buffer_a(i)) / 2048
Next i
Else
Cells(17, "E").Value = "Unable to open ADC-200"
End If
End Sub
Code: Select all
Option Explicit
Private Sub Command1_Click()
Dim buffer_a(100) As Integer
Dim buffer_b(100) As Integer
Dim ns As Long
Dim is_slow As Integer
Dim S As String * 255
Dim port As Integer, i As Integer, j As Integer, ok As Integer, mv As Integer
port = 1
ok = adc200_open_unit(port)
If ok Then
Debug.Print ("ADC-200 opened")
ok = adc200_set_trigger(1, 0, 0, 0, 100)
ok = adc200_set_channels(0)
mv = adc200_set_range(0, 8) ' Range 8 = 5V
Call adc200_set_dc(0, True) ' If software controlled AC/DC switch, set to DC
ok = adc200_set_time_units(0)
ok = adc200_set_oversample(1)
ok = adc200_set_timebase(ns, is_slow, 5)
Call adc200_set_ets(10, 50, 2)
ok = adc200_run(100)
While adc200_ready() = 0
Wend
Call adc200_stop
Call adc200_get_values(buffer_a(0), buffer_b(0), 100)
'For i = 0 To 99
' Cells(i + 4, "A").Value = ns * i
' Cells(i + 4, "B").Value = buffer_a(i)
' Cells(i + 4, "C").Value = (mv * buffer_a(i)) / 2048
'Next i
Call adc200_close_unit(1)
Else
'Cells(17, "E").Value = "Unable to open ADC-200"
Debug.Print ("Open failed")
End If
End Sub
Code: Select all
Private Sub tmrFast_Timer()
Dim running As Integer
Dim ready As Integer
ReDim times(99) As Long
ReDim values_a(99) As Integer
ReDim values_b(99) As Integer
Dim time As Long
Dim volts_a As Integer
Dim volts_b As Integer
Dim no_of_values As Integer
Dim i As Integer
If opened And fast_collect Then
ok = adc200_set_channels(cboChannel_select.ListIndex)
mv_a = adc200_set_range(0, 2 + cboVoltage_select_a.ListIndex)
mv_b = adc200_set_range(1, 2 + cboVoltage_select_b.ListIndex)
ok = adc200_set_trigger(True, 0, 0, 0, 100)
Call adc200_set_ets(10, 50, 2)
running = adc200_run(100)
lstTime.Clear
lstChannalA.Clear
lstChannalB.Clear
If running Then
Do
If tmrETS.Interval Then
Exit Do
End If
Loop
Call adc200_stop
no_of_values = adc200_get_times_and_values(times(0), values_a(0), values_b(0), 100)
For i = 0 To 99
time = times(i)
lstTime.AddItem (time & Chr(9) & "ns")
If cboChannel_select.ListIndex = 0 Or cboChannel_select.ListIndex = 2 Then
volts_a = values_a(i) / 2047 * mv_a
lstChannalA.AddItem (volts_a & Chr(9) & "mV")
End If
If cboChannel_select.ListIndex = 1 Or cboChannel_select.ListIndex = 2 Then
volts_b = values_b(i) / 2047 * mv_b
lstChannalB.AddItem (volts_b & Chr(9) & "mV")
End If
Next i
Else
lstMessages.AddItem ("Error running ADC!")
End If
End If
End Sub
Code: Select all
port = 1
ok = adc200_open_unit(port)
If ok Then
ok = adc200_set_trigger(1, 0, 0, 0, 100)
ok = adc200_set_channels(0)
mv = adc200_set_range(0, 8) ' Range 8 = 5V
Call adc200_set_dc(0, 1) ' If software controlled AC/DC switch, set to DC
ok = adc200_set_time_units(0)
ok = adc200_set_oversample(1)
ok = adc200_set_timebase(ns, is_slow, 5)
Call adc200_set_ets(10, 50, 2)
ok = adc200_run(100)
ok = adc200_ready()
While ok = 0
ok = adc200_ready()
Wend
Call adc200_stop
Call adc200_get_values(buffer_a(0), buffer_b(0), 100)
End If
Code: Select all
Private Sub tmrFast_Timer()
Dim running As Integer
Dim ready As Integer
ReDim times(99) As Long
ReDim values_a(99) As Integer
ReDim values_b(99) As Integer
Dim time As Long
Dim volts_a As Integer
Dim volts_b As Integer
Dim no_of_values As Integer
Dim i As Integer
If opened And fast_collect Then
lstTime.Clear
lstChannalA.Clear
lstChannalB.Clear
ok = adc200_set_channels(cboChannel_select.ListIndex)
mv_a = adc200_set_range(0, 2 + cboVoltage_select_a.ListIndex)
mv_b = adc200_set_range(1, 2 + cboVoltage_select_b.ListIndex)
ok = adc200_set_trigger(True, 0, 0, 0, 0)
Call adc200_set_ets(100, 200, 2)
running = adc200_run(100)
If running Then
Do
ready = adc200_ready()
If ready Then
Exit Do
End If
Loop
Call adc200_stop
no_of_values = adc200_get_times_and_values(times(0), values_a(0), values_b(0), 100)
For i = 0 To 99
time = times(i)
lstTime.AddItem (time & Chr(9) & "ps")
If cboChannel_select.ListIndex = 0 Or cboChannel_select.ListIndex = 2 Then
volts_a = values_a(i) / 2047 * mv_a
lstChannalA.AddItem (volts_a & Chr(9) & "mV")
End If
If cboChannel_select.ListIndex = 1 Or cboChannel_select.ListIndex = 2 Then
volts_b = values_b(i) / 2047 * mv_b
lstChannalB.AddItem (volts_b & Chr(9) & "mV")
End If
Next i
Else
lstMessages.AddItem ("Error running ADC!")
End If
End If
End Sub
Code: Select all
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Code: Select all
Sleep (1000) ' sleep for a second
Code: Select all
Declare Function adc200_open_unit Lib "ADC20032.dll" (ByVal port As Integer) As Integer
Declare Function adc200_set_unit Lib "ADC20032.dll" (ByVal port As Integer) As Integer
Declare Sub adc200_close_unit Lib "ADC20032.dll" (ByVal port As Integer)
Declare Function adc200_get_driver_version Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_product Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_hw_version Lib "ADC20032.dll" () As Integer
Declare Function adc200_has_relays Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_unit_info Lib "ADC20032.dll" (ByVal str As String, ByVal lth As Integer, ByVal line_no As Integer, ByVal port As Integer) As Integer
Declare Function adc200_set_frequency Lib "ADC20032.dll" (ByVal Frequency As Long) As Long
Declare Function adc200_set_range Lib "ADC20032.dll" (ByVal channel As Integer, ByVal gain As Integer) As Integer
Declare Sub adc200_set_dc Lib "ADC20032.dll" (ByVal channel As Integer, ByVal enable_dc As Integer)
Declare Function adc200_set_channels Lib "ADC20032.dll" (ByVal mode As Integer) As Integer
Declare Function adc200_set_oversample Lib "ADC20032.dll" (ByVal factor As Integer) As Integer
Declare Function adc200_set_trigger Lib "ADC20032.dll" (ByVal enabled As Integer, ByVal source As Integer, ByVal direction As Integer, ByVal delay_percent As Integer, ByVal threshold As Integer) As Integer
Declare Function adc200_set_timebase Lib "ADC20032.dll" (ns As Long, is_slow As Integer, ByVal timebase As Integer) As Integer
Declare Function adc200_set_time_units Lib "ADC20032.dll" (ByVal units As Integer) As Integer
Declare Function adc200_max_samples Lib "ADC20032.dll" () As Long
Declare Function adc200_run Lib "ADC20032.dll" (ByVal no_of_values As Long) As Integer
Declare Function adc200_ready Lib "ADC20032.dll" () As Integer
Declare Function adc200_get_values Lib "ADC20032.dll" (buffer_a As Integer, buffer_b As Integer, ByVal no_of_values As Long) As Integer
Declare Function adc200_get_overflow Lib "ADC20032.dll" (channel As Integer) As Integer
Declare Sub adc200_stop Lib "ADC20032.dll" ()
Declare Sub adc200_get_single Lib "ADC20032.dll" (buffer As Integer)
Declare Function adc200_get_ets_time Lib "ADC20032.dll" () As Long
Declare Function adc200_get_max_ets Lib "ADC20032.dll" () As Integer
Declare Sub adc200_set_ets Lib "ADC20032.dll" (ByVal interleave As Integer, ByVal max_cycles As Integer, ByVal mode As Integer)
Code: Select all
Private Sub Command1_Click()
Dim buffer_a(99) As Integer
Dim buffer_b(99) As Integer
port = 1
ok = adc200_open_unit(port)
If ok Then
Dim unit_info As String * 255
Dim i As Integer
unit_info = String$(120, " ")
For i = 0 To 3
ok = adc200_get_unit_info(unit_info, 255, i, port)
MsgBox (unit_info)
Next i
ok = adc200_set_trigger(1, 0, 0, 0, 100)
ok = adc200_set_channels(0)
mv = adc200_set_range(0, 8) ' Range 8 = 5V
Call adc200_set_dc(0, 1) ' If software controlled AC/DC switch, set to DC
ok = adc200_set_time_units(0)
ok = adc200_set_oversample(1)
ok = adc200_set_timebase(ns, is_slow, 5)
Call adc200_set_ets(10, 50, 2)
ok = adc200_run(100)
ok = adc200_ready()
While ok = 0
ok = adc200_ready()
Wend
'Call adc200_stop
Call adc200_get_values(buffer_a(0), buffer_b(0), 100)
End If
adc200_close_unit (1)
End Sub