' muenchow@udel.edu Dec.-27, 2015 ' Declare Constants 'Declare Variables and Units StationName Petermann_Glacier Public Checkup As Boolean Public Batt_Volt, IntBatt, version Public NBytesReturned Public WindSpd, WindDir, WindGood As Boolean Public AirTC_3M, AirTC_1M Public RH_3M, RH_1M Public BP_mbar, Press_mb Public SensorIn(2) As String *50 Public TOcean(2),SOcean(2),POcean(2) Public SplitStrings(4) As String *20 Public Baud,Port As String *4 'Variables for Iridium Configuration Public SetupStr As String * 51 Public Register_Modem As String *50 Public configure_modem As Boolean 'Define Data Tables DataTable(G1AWS_Hourly,true,-1) OpenInterval DataInterval(0,60,Min,10) Average(1,Batt_Volt,IEEE4,0) Average(1,AirTC_3M,IEEE4,0) Average(1,AirTC_1M,IEEE4,0) Average(1,RH_3M,IEEE4,0) Average(1,RH_1M,IEEE4,0) WindVector(1,WindSpd,WindDir,IEEE4,WindGood,0,0,1) Maximum(1,WindSpd,IEEE4,0,1) Average(1, Press_mb, IEEE4, 0) Sample (1,TOcean(1),IEEE4) Sample (1,SOcean(1),IEEE4) Sample (1,POcean(1),IEEE4) Sample (1,TOcean(2),IEEE4) Sample (1,SOcean(2),IEEE4) Sample (1,POcean(2),IEEE4) Minimum(1,IntBatt,FP2,0,False) Sample(1,version,fp2) CardOut (0 ,-1) EndTable ' BeginProg Scan(3,Min,3,0) Battery(Batt_Volt) IntBatt = Status.LithiumBattery Delay(0,2,Sec) VoltSe(AirTC_3M,1,mV2500,1,0,0,_60Hz,0.14,-80) VoltSe(RH_3M,1,mV2500,2,0,0,_60Hz,0.1,0) If (RH_3M > 100.0) Then If (RH_3M < 108) Then RH_3M = 100 EndIf EndIf Delay(0,2,Sec) VoltSe(AirTC_1M,1,mV2500,3,0,0,_60Hz,0.14,-80.0) VoltSe(RH_1M,1,mV2500,4,0,0,_60Hz,0.1,0) If (RH_1M > 100.0) Then If (RH_1M < 108) Then RH_1M = 100 EndIf EndIf PulseCount(WindSpd,1,1,1,1,0.098,0) If WindSpd = NAN Then WindGood = true Else WindGood = false EndIf BrHalf(WindDir,1,mV2500,8,1,1,2500,True,0,_60Hz,355.0,0) If WindDir>=360 Then WindDir=0 ' If TimeIntoInterval(3,6,Min) Then PortSet(2, 1) If TimeIntoInterval(0,6,Min) Then VoltSe(BP_mbar, 1, mV2500, 12, False, 0, _60Hz, 0.240, 515.8) Press_mb = BP_mbar BP_mbar = BP_mbar * 10 ' Convert to get all the way down to tenths place when converted PortSet(2, 0) EndIf CallTable(G1AWS_Hourly) ' If TimeIntoInterval (57,60,Min) Then SerialOpen (Com2,4800,0,0,50) SerialOpen (Com3,4800,0,0,50) ' SerialOutBlock (Com2,CHR(13),1) SerialOutBlock (Com3,CHR(13),1) ' Delay (0,2000,mSec) ' SerialOutBlock (Com2,"ts"+CHR(13),3) SerialOutBlock (Com3,"ts"+CHR(13),3) ' SerialFlush(Com2) SerialFlush(Com3) ' SerialIn(SensorIn(1),Com2,100,"S>",50) SerialIn(SensorIn(2),Com3,100,"S>",50) Delay (0,1500,mSec) ' SerialOutBlock (Com2,"qs"+CHR(13),3) SerialOutBlock (Com3,"qs"+CHR(13),3) ' SerialClose (Com2) SerialClose (Com3) ' SplitStr (SplitStrings(),SensorIn(1),",",4,0) TOcean(1) = SplitStrings(1) SOcean(1) = SplitStrings(2) POcean(1) = SplitStrings(3) ' SplitStr (SplitStrings(),SensorIn(2),",",4,0) TOcean(2) = SplitStrings(1) SOcean(2) = SplitStrings(2) POcean(2) = SplitStrings(3) EndIf ' ' Power On to Iridium 12 minutes into 1440 minute interval If TimeIntoInterval (492,1440,Min) Then PortSet (9,1) ' Power off Iridium 30 minutes into the 1440 minute interval If TimeIntoInterval (510,1440,Min) Then PortSet (9,0) If IfTime (495,1440,Min) Then configure_modem = true If configure_modem = true Then SerialOpen (ComRS232,19200,0,0,2000) Delay (0,1,Sec) 'Send the Iridium configuration to Iridium ISU SetupStr = "AT&F0 S0=1 &D0 +IPR=6,0 V0 &K0 &W0 &Y0" & CHR(13) & CHR(10) SerialOut (ComRS232,SetupStr,"",0,0) configure_modem = false SerialClose (ComRS232) EndIf 'Fake call' Register_Modem = "ATDT 1234" & CHR(13) & CHR(10) SerialOpen (ComRS232,19200,0,0,2000) Delay (0,1,Sec) SerialOut (ComRS232,Register_Modem,"",0,0) SerialClose (ComRS232) NextScan EndProg