Crbasic example 39. conditional compile – Campbell Scientific CR1000 Measurement and Control System User Manual

Page 199

Advertising
background image

Section 7. Installation

199

 

Note Do not confuse CRBasic files with .DLD extensions with files of .DLD
type used by legacy Campbell Scientific dataloggers.

As an example, pseudo code using this feature might be written as:

#Const Destination = "CR1000"
#If Destination = "CR3000" Then
<code specific to the CR3000>
#ElseIf Destination = "CR1000" Then
<code specific to the CR1000>
#ElseIf Destination = "CR800" Then
<code specific to the CR800>
#Else
<code to include otherwise>
#EndIf

This logic allows a simple change of a constant to direct, for instance, which
measurement instructions to include.

CRBasic Editor now features a pre-compile option that enables the creation of a
CRBasic text file with only the desired conditional statements from a larger
master program. This option can also be used at the pre-compiler command line
by using -p <outfile name>. This feature allows the smallest size program file
possible to be sent to the CR1000, which may help keep costs down over very
expensive telecommunications links.

CRBasic example Conditional Compile

(p. 199)

shows a sample program that

demonstrates use of conditional compilation features in CRBasic. Within the
program are examples showing the use of the predefined LoggerType constant
and associated predefined datalogger constants (CR800, CR1000, and CR3000).

CRBasic Example 39. Conditional Compile 

'Conditional compilation example for CR3000, CR1000, and CR800 Series Dataloggers

'Key instructions include #If, #ElseIf, #Else and #EndIf.

'Set program options based on the setting of a constant in the program.

Const

ProgramSpeed = 2

#If

ProgramSpeed = 1

Const

ScanRate = 1

'1 second

Const

Speed = "1 Second"

#ElseIf

ProgramSpeed = 2

Const

ScanRate = 10

'10 seconds

Const

Speed = "10 Second"

#ElseIf

ProgramSpeed = 3

Const

ScanRate = 30

'30 seconds

Const

Speed = "30 Second"

#Else

Const

ScanRate = 5

'5 seconds

Const

Speed = "5 Second"

#EndIf

'Choose a COM port depending on which logger type the program is running in.

#If

LoggerType = CR3000

Const

SourcSerialPort = Com3

#ElseIf

LoggerTypes = CR1000

Const

SourcSerialPort = Com2

Advertising