'Log weight output from a Kern DE350K0.5D balance via Serial interface (RS232) 'On the balance, set output mode to "Auto PC". 'Uploaded by Markus Nolf, m.nolf@westernsydney.edu.au 'Declare Variables and Units Public Datastream As String * 50 Public Readfrom As Long Public Plusminus As String *1 Public Weight Public Unit As String *2 Public Batt Public PTemp 'Define Data Table DataTable(Weights,True,-1)) 'Set interval for recording data to 5 min DataInterval(0,5,min,10) Sample(1,Weight,IEEE4) Sample(1,Unit,String) Sample(1,Batt,IEEE4) Sample(1,PTemp,IEEE4) EndTable BeginProg 'Open serial connection to balance SerialOpen(Com1,9600,3,0,1000) 'Start a reading every 5 seconds Scan(5,sec,3,0) 'Read continuous output(non-stable value) SerialIn(Datastream,Com1,100,0,70) 'Find where new line starts (line-feed character, ASCI dec.10) Readfrom = InStr(1,Datastream,CHR(10),2) Weight = Trim(Mid(Datastream,Readfrom+3,14)) 'Extract minus sign (separated by spaces), apply if the value is negative Plusminus = Mid(Datastream,Readfrom+2,1) If Plusminus = "-" Then Weight = Weight * -1 EndIf Unit = Trim(Mid(Datastream,Readfrom-4,2)) Battery(Batt) 'Datalogger Battery Voltage PanelTemp(PTemp,_50Hz) 'Wiring Panel Temperature CallTable Weights NextScan EndProg