'Measure SDI-12 sensors
SDI12Recorder(Temp_Tmp(1),1,0,cmd(1),1.0,0)
SDI12Recorder(Temp_Tmp(2),1,1,cmd(2),1.0,0)
SDI12Recorder(Temp_Tmp(3),1,2,cmd(3),1.0,0)
SDI12Recorder(Temp_Tmp(4),1,3,cmd(4),1.0,0)
'Control Measurement Event
For X = 1 To 4
If cmd(X) = "C!" Then Retry(X) = Retry(X) + 1
If Retry(X) > 2 Then IndDone(X) = -1
'Test to see if ttt expired. If ttt not expired, load "1e9" into first variable
'then move to next instruction. If ttt expired, issue aDv! command(s).
If ((Temp_Tmp(X) = 2e9) OR (Temp_Tmp(X) = 1e9)) Then
cmd(X) = "C" 'Start sending "C" command.
ElseIf(Temp_Tmp(X) = NAN) Then 'Comms failed or sensor not attached
cmd(X) = "C!" 'Start measurement over
Else 'C!/C command sequence complete
Move(Temp_Meas(X),1,Temp_Tmp(X),1) 'Copy measurements to SDI_Val(10)
cmd(X) = "C!" 'Start next measurement with "C!"
IndDone(X) = -1
EndIf
Next X
'Summarize Measurement Event Success
For X = 1 To 4
GroupDone = GroupDone + IndDone(X)
Next X
'Stop current measurement event, reset controls
If GroupDone = -4 Then
RunSDI12 = False
GroupDone = 0
For X = 1 To 4
IndDone(X) = 0
Retry(X) = 0
Else
GroupDone = 0
EndIf
EndIf 'End of measurement sequence
NextScan
SDI12Recorder() sends any string enclosed in quotation marks in the Command
parameter. If the command string is a non-standard SDI-12 command, any
response is captured into the variable assigned to the Destination parameter, so
long as that variable is declared As String. CRBasic example Use of an SDI-12
Extended Command
(p. 279) shows appropriate code for sending an extended SDI-
12 command and receiving the response. The extended command feature has no
built-in provision for responding with follow-up commands. However, the
program can be coded to parse the response and issue subsequent SDI-12
commands based on a customized evaluation of the response. For more
278