Appendix B. Example Program
B-4
Other common station data is measured every 60 seconds and stored to a
separate daily data table.
CRBasic Example B-3. CR1000X Program Reading Metadata of CS230/CS231 with 15 Sensors
'CR1000X Series Datalogger
'This program reads a CS230/CS231 probe that has 15 temperature sensors
'Declare Public Variables
Public
PTemp, batt_volt
'Enter the number of temperature sensors that are in the probe (will need to be
'adjusted to fit specific application)
Const
NumTempSensors=15
'Calculate the number of Metadata points based on the number of sensors
Const
MetaData_pts=NumTempSensors*3
'Uses the control terminal C1 on the CR1000X
Const
SDI12_Port=C1
Public
Meta(NumTempSensors,3)
As
Float
Dim
i
As
Long
'Define Data Tables
DataTable
(MetaData,1,-1)
DataInterval
(0,1,Day,10)
Sample
(MetaData_pts,Meta(),FP2)
EndTable
'Define Subroutines
'*****************************************************************************
'* ------------------------- ConvertSDI12addr() -------------------------- *
'* Convert SDI-12 character address (0->9, A->Z, and a->z) to number value *
'* (0->61). *
'*****************************************************************************
Function
ConvertSDI12addr(address
As
Long
)
As
String
* 1
Select
Case
address
Case
0
To
9
'ASCII Code 48->57 = 0->9
Return
(
CHR
(a 48))
Case
10
To
35
'ASCII Code 65->90 = A->Z = 10->35
Return
(
CHR
(a 55))
Case
36
To
61
'ASCII Code 97->122 = a->z = 36->61
Return
(
CHR
(a 61))
EndSelect
Return
("")
EndFunction
'ConvertSDI12addr()
'EndSub
'Main Program
BeginProg
Scan
(60,Sec,0,0)
PanelTemp
(PTemp,250)
Battery
(batt_volt)
'Read the Metadata from the sensor daily
'Also read if a non-valid serial number is present (Startup values should be zero).
'A valid serial number will be greater than 1
If
(Meta(1,1) < 1)
OR
(
TimeIntoInterval
(0,1440,Min))
Then
For
i=1
To
NumTempSensors
SDI12Recorder
(Meta(i,1),SDI12_Port,ConvertSDI12addr(i),"R1!",1.0,0)
Next
EndIf
CallTable
MetaData
NextScan
EndProg