'/////////////////Serial Output Section/////////////////////
'Construct old Campbell Scientific Printable ASCII data format and output to COM1
'Read datalogger clock
RealTime(rTime)
If TimeIntoInterval(0,5,Sec) Then
'Load OneMinData table data for processing into printable ASCII
GetRecord(OneMinData(),OneMinTable,1)
'Assign +/- Sign
For i=1 To 6
If OneMinData(i) < 0 Then
'Note: chr45 is - sign
OutFrag(i)=CHR(45) & FormatFloat(ABS(OneMinData(i)),"%05g")
Else
'Note: chr43 is + sign
OutFrag(i)=CHR(43) & FormatFloat(ABS(OneMinData(i)),"%05g")
EndIf
Next i
'Concatenate Printable ASCII string, then push string out RS-232
'(first 2 fields are ID, hhmm):
OutString = "01+0115." & " 02+" & FormatFloat(rTime(4),"%02.0f") & _
FormatFloat(rTime(5),"%02.0f")
OutString = OutString & " 03" & OutFrag(1) & " 04" & OutFrag(2) & _
" 05" & OutFrag(3)
OutString = OutString & " 06" & OutFrag(4) & " 07" & OutFrag(5) & _
CHR(13) & CHR(10) & "" 'add CR LF null
'Send printable ASCII string out RS-232 port
SerialOut(ComRS232,OutString,"",0,220)
EndIf
NextScan
7.9.17.7 Serial I/O Q & A
Q: I am writing a CR1000 program to transmit a serial command that contains a
null character. The string to transmit is:
CHR(02)+CHR(01)+"CWGT0"+CHR(03)+CHR(00)+CHR(13)+CHR(10)
How does the logger handle the null character?
Is there a way that we can get the logger to send this?
A: Strings created with CRBasic are NULL terminated. Adding strings together
means the second string will start at the first null it finds in the first string.
Use SerialOutBlock() instruction, which lets you send null characters, as shown
below.
SerialOutBlock(COMRS232, CHR(02) + CHR(01) + "CWGT0" +
CHR(03),8)
SerialOutBlock(COMRS232, CHR(0),1)
SerialOutBlock(COMRS232, CHR(13) + CHR(10),2)
Q: Please summarize when the CR1000 powers the RS-232 port. I get that there
is an "always on" setting. How about when there are beacons? Does the
264