Our full technical support staff does not monitor this forum. If you need assistance from a member of our staff, please submit your question from the Ask a Question page.


Log in or register to post/reply in the forum.

Starting a CR3000 program with software or hardware switch


Phenomics Oct 22, 2015 12:15 AM

Hello All
I am using a CR3000 datalogger on a moving vehicle with a number of different sensors, including GPS, attached to the vehicle.

Currently, all sensors starts capturing data as soon as I turn the datalogger on. I do require the GPS to start locking on to satellites, but all other sensors are only needed when I get to the research plots that I would like to measure.

Is there a way to either use LoggerNet or a hardwired switch that will tell the program to start writing data to the defined tables in my program?

I have included my main program below.

Thanks in advance.

'Main program (program is making a measurement every second)
BeginProg
'Open RS232 port of communications 9600 BAUD Is the default:
SerialOpen (Com1,9600,0,0,2000)
SerialOpen (Com2,9600,0,0,2000)
SerialOpen (GPSPort,4800,3,0,1001)

Scan (1,Sec,0,0)

'GPS program
SerialInRecord (GPSPort,rawdata,36,0,&h0D0A,NBytesReturned,11)
CalculatedChecksum = CheckSum (rawdata,9,Len(rawdata) - 3)
CalculatedChecksum = CalculatedChecksum AND 255
ReportedChecksum = HexToDec(Right(rawdata,2))
If CalculatedChecksum = ReportedChecksum Then
If InStr (1,rawdata,"GPRMC",2) Then
RMCstring = rawdata
ElseIf InStr (1,rawdata,"GPGGA",2) Then
GGAstring = rawdata
EndIf
EndIf
SerialInRecord (GPSPort,rawdata,36,0,&h0D0A,NBytesReturned,11)
CalculatedChecksum = CheckSum (rawdata,9,Len(rawdata) - 3)
CalculatedChecksum = CalculatedChecksum AND 255
ReportedChecksum = HexToDec(Right(rawdata,2))
If CalculatedChecksum = ReportedChecksum Then
If InStr (1,rawdata,"GPRMC",2) Then
RMCstring = rawdata
ElseIf InStr (1,rawdata,"GPGGA",2) Then
GGAstring = rawdata
EndIf
EndIf
'parse rmc data
SplitStr (SubStrings(),RMCstring,",",16,5)
rmcid = SubStrings(1)
rmcutc = SubStrings(2)
rmcstatus = SubStrings(3)
rmclatitude = SubStrings(4)
rmcin_s_ind =SubStrings(5)
rmclongitude=SubStrings(6)
rmce_w_indicator=SubStrings(7)
rmcspeed=SubStrings(8)
rmccourse=SubStrings(9)
rmcutcdate=SubStrings(10)
rmcmagvariation=SubStrings(11)
rmcmage_w =Left(SubStrings(12),1)
rmcchecksum=Right(RMCstring,2)
'parse gga data
SplitStr (SubStrings(),GGAstring,",",16,5)
ggaid=SubStrings(1)
ggautc=SubStrings(2)
ggailatitude=SubStrings(3)
ggan_s_ind=SubStrings(4)
ggalongitude=SubStrings(5)
ggae_w_ind=SubStrings(6)
ggapositionfix=SubStrings(7)
gganumsatellites=SubStrings(8)
ggahdop=SubStrings(9)
ggaaltitude=SubStrings(10)
ggaaltutudeunits=SubStrings(11)
ggageoidsep=SubStrings(12)
ggageoidunits=Left(SubStrings(13),1)
ggachecksum=Right(GGAstring,2)


PanelTemp (PanelT,_60Hz)
Battery (BattV)


Therm109 (SBTempC_5713,1,3,Vx1,0,_60Hz,1.0,0)

VoltDiff (TargmV_5713,1,mV50,1,True ,0,_60Hz,1.0,0)

m_5713 = mC2_5713 * SBTempC_5713^2 + mC1_5713 * SBTempC_5713 + mC0_5713
b_5713 = bC2_5713 * SBTempC_5713^2 + bC1_5713 * SBTempC_5713 + bC0_5713
'Calculation of target temperature
SBTempK_5713 = SBTempC_5714 + 273.15
TargTempK_5713 = ((SBTempK_5713^4) + m_5713 * TargmV_5713 + b_5713)^0.25
TargTempC_5713 = TargTempK_5713 - 273.15


Therm109 (SBTempC_5714,1,7,Vx2,0,_60Hz,1.0,0)

VoltDiff (TargmV_5714,1,mV50,3,True ,0,_60Hz,1.0,0)


m_5714 = mC2_5714 * SBTempC_5714^2 + mC1_5714 * SBTempC_5714 + mC0_5714
b_5714 = bC2_5714 * SBTempC_5714^2 + bC1_5714 * SBTempC_5714 + bC0_5714
SBTempK_5714 = SBTempC_5714 + 273.15
TargTempK_5714 = ((SBTempK_5714^4) + m_5714 * TargmV_5714 + b_5714)^0.25
TargTempC_5714 = TargTempK_5714 - 273.15


SerialOut(Com1,"p33"+CHR(13),"",0,0)
SerialOut(Com2,"p33"+CHR(13),"",0,0)

SerialFlush(Com1)
SerialFlush(Com2)

SerialIn(SR50AData_6055,com1,200,13,50)
SerialIn(SR50AData_6917,com2,200,13,50)
SplitStr(ParseVals_6055,SR50AData_6055,"",5,0)
SplitStr(ParseVals_6917,SR50AData_6917,"",5,0)

Temp_Corr_Distance_6055=Raw_Distance_6055*(SQR((SBTempC_5713+273.15)/273.15))
Temp_Corr_Distance_6917=Raw_Distance_6917*(SQR((SBTempC_5714+273.15)/273.15))

Pasture_Height_6055=Initial_Distance - Temp_Corr_Distance_6055
Pasture_Height_6917=Initial_Distance - Temp_Corr_Distance_6917

CallTable IRR&SONAR
CallTable gpsdata
CallTable alldata
NextScan
EndProg


JDavis Oct 22, 2015 04:25 PM

Every data table(DataTable instruction) has a TrigVar parameter. Usually, a constant for true is in that parameter to always output. You can use a variable in its place to control when you save data.


Phenomics Nov 3, 2015 09:39 PM

Thank you JDavis

Log in or register to post/reply in the forum.