V 10
1
LANG:1 0 
PANEL,258 100 987 720 N "_3DFace" 1
"$Tab_Numb"
EEE E E 1 -1 -1 0  60 50
"" 0 1
EE 2
"CBRef""0"
"EClose"E
""
DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
LAYER, 0 
1
LANG:1 6 Layer1
6 213
"Border1"
""
1 10 455 E E E 1 E 1 E N {0,0,0} E N {51,102,153} E E
 E E
103 0 0 0 0 0
EE E
0
1
LANG:1 21 Vers.01.1, 27-06-2003
1
"dashclr"N "_Transparent"
"main()
{
	string systemName;

	//get system name
	systemName = getSystemName();
	//connect the plot with the start of IV curve (IV curve start on StartIVCurve = 1)
	dpConnect(\"connectToIVCurve\", FALSE, systemName+\"requestIVCurve.trigger:_online.._value\");
}

connectToIVCurve(string dpePath, int startIVCurve)
{
	int rack, crate, channel;
	int channel, start,stop,step,end,Imax,Iwarn,Twait;
	float temperature;
	bool visible;
	string systemName, channelAddress, IVCurveParameters, allChannels;
	
	dyn_string para_split;

	
	//get system name
	systemName = getSystemName();

	if(startIVCurve == TRUE)
	  	{	
	
			//get the actual value of Rack, Crate and channel
			dpGet(systemName+\"requestIVCurve.parameters:_online.._value\", IVCurveParameters);
	
			para_split=strsplit(IVCurveParameters,\"|\");

			sscanf(para_split[1],\"%d\", crate);
			sscanf(para_split[2],\"%s\", allChannels);
 	
			if(allChannels == \"ALL\")
	  	  		{
					//IV curve for all channels
	 				channel = 255;
	  	 		 }
		 		else
	  	 		 {
	   				sscanf(allChannels,\"%d\", channel);
	      		}
	      
			//in case of requesting IV curve for several channel at the same time, user must choose the 
			//channel he(she) want to display. for this a go button is displayed
			if(channel>48)
		  		{
					setValue(\"Go01\", \"visible\", TRUE);
					setValue(\"Rack01\", \"text\", 1);
					setValue(\"Crate01\", \"text\", 1);
					setValue(\"Channel01\", \"text\", 1);
					return;
		  		}
			   else
		  		{
					setValue(\"Go01\", \"visible\", FALSE);
		  		}
		  
			if(channel < 48)
		 		{
					//make a 2 digit label for crates and channels
					sprintf(channelAddress, \"Crate%02d.Channel%02d\", crate, channel);
	  
					//save the configuration used here for a evntual next use (eg: disconnection, see above)
					dpSet(systemName+\"IVCurve0\"+$Tab_Numb+\".Name01:_original.._value\", channelAddress);
		
					//connect the IV curve status
					dpConnect(\"setIVCurve\", FALSE, systemName+channelAddress+\".IVCurve.Status.Recv:_original.._value\");
					dpConnect(\"setHVchVolt\", FALSE, systemName+channelAddress+\".HVchVolt.Recv:_online.._value\");
					dpConnect(\"setHVchCurr\", FALSE, systemName+channelAddress+\".HVchCurr.Recv:_online.._value\");
					dpConnect(\"setTemperature0\", FALSE, systemName+channelAddress+\".MOch_Tm0.Recv:_online.._value\");
					dpConnect(\"setTemperature1\", FALSE, systemName+channelAddress+\".MOch_Tm1.Recv:_online.._value\");
					
					//display on the pannel actual temperatures
					dpGet(systemName+channelAddress+\".MOch_Tm0.Recv:_online.._value\", temperature);
					temperature = 1/(log(temperature*2.5/800.)/3435.+0.0033557)-273.;
					setValue(\"Temperature0\", \"text\", temperature);
					dpGet(systemName+channelAddress+\".MOch_Tm1.Recv:_online.._value\", temperature);
					temperature = 1/(log(temperature*2.5/800.)/3435.+0.0033557)-273.;
					setValue(\"Temperature1\", \"text\", temperature);
				   
					//set the actual value of Rack, Crate and channel to the pannel
					rack = crate/4 + 1; // +1 because numbering in the pannels is from 1
					crate = crate - (rack-1)*4 + 1; // +1 because numbering in the pannels is from 1
	
					setValue(\"Rack01\", \"text\", rack);
					setValue(\"Crate01\", \"text\", crate);
					setValue(\"Channel01\", \"text\", channel+1);
				}
		}// end of if(startIVCurve == TRUE)
}//end of connectToIVCurve()


//set methods for HVchVolt and HVchCurr fields
setHVchVolt(string dpePath, float dpeValue)
{
	setValue(\"HVchVolt\", \"text\", dpeValue);
}
setHVchCurr(string dpePath, float dpeValue)
{
	setValue(\"HVchCurr\", \"text\", dpeValue);
}
setTemperature0(string dpePath, float dpeValue)
{
	setValue(\"Temperature0\", \"text\", dpeValue);
}
setTemperature1(string dpePath, float dpeValue)
{
	setValue(\"Temperature1\", \"text\", dpeValue);
}

//method to fill the curve on change of the IV curve status (scan step)
setIVCurve(string statusPath, int statusValue)
{
	int crate, channel;
	float x_step, x_min, x_max, y_min, y_max;
	string channelAddress;
	time timeNow, IVCurveStartTime;
	
	dyn_int evt;
	dyn_float Y_data_array, X_data_array;
	dyn_time time_array;
 	shape curve01;
 		
 	//get system name
	string systemName = getSystemName();
	
 	//set the IV curve starting time
	if(statusValue==255) 
		{
			//dpSet(systemName+\"IVCurve.StartTime:_original.._value\", getCurrentTime());
			//DebugN(\"======================== IVCurveStartTime = \", getCurrentTime());
			return;
		}
	else if(statusValue==251)
	    {
	    /*
	    	//discconnect the IV curve connection done above
	    	dpGet(systemName+\"IVCurve0\"+$Tab_Numb+\".Name01:_original.._value\", channelAddress);
	    	sscanf(channelAddress, \"Crate%d.Channel%d\", crate, channel);

	    	//dpGet(systemName+channelAddress+\".IVCurve.Channel.Send:_online.._value\", channel);
	    	if(channel<48)
		  		{
					dpDisconnect(\"setIVCurve\",  channelAddress+\".IVCurve.Status.Recv:_original.._value\");
					dpDisconnect(\"setHVchVolt\", channelAddress+\".HVchVolt.Recv:_online.._value\");
					dpDisconnect(\"setHVchCurr\", channelAddress+\".HVchCurr.Recv:_online.._value\");
		  		}
		 */
		    return;
		}
	
	
	//time now
	timeNow = getCurrentTime();
	
	dpGet(systemName+\"IVCurve0\"+$Tab_Numb+\".Name01:_online.._value\", channelAddress);
	//get the IV curve starting time
	dpGet(systemName+channelAddress+\".IVCurve.StartTime:_online.._value\", IVCurveStartTime);
	//setPeriod(IVCurveStartTime, period(getCurrentTime()) - 3600);

	//get the data correspondant to X and Y coordinates
	dpGetPeriod(IVCurveStartTime, timeNow, -1, systemName+channelAddress+\".HVchVolt.Recv:_original.._value\", 
				Y_data_array, time_array, evt);
	dpGetPeriod(IVCurveStartTime, timeNow, -1, systemName+channelAddress+\".HVchCurr.Recv:_original.._value\", 
				X_data_array, time_array, evt);
	//DebugN(\"================ Y_data_array = \", Y_data_array);
	//DebugN(\"================ X_data_array = \", X_data_array);
	
	//return if no data
	if(dynlen(Y_data_array)==0 || dynlen(X_data_array)==0)
		{
			DebugN(\"IVCurve script of Tab \"+$Tab_Numb+\": ERROR, the data point element \", 
			channelAddress+\".HVchCurr.Recv or \", 
			channelAddress+\".HVchVolt.Recv has no archived data\");
			return;
		}
	
 	curve01 = getShape(\"Curve01\");
	// X-axis coordinates stuff
	x_max = dynMax(X_data_array);
	x_min = dynMin(X_data_array);
	
	setValue(curve01, \"xOrigin\", BAR_LEFT);
	setValue(curve01, \"xCenter\", 0);
	//setValue(curve01, \"xCenter\", x_min);
	setValue(curve01, \"xRange\",  x_max);
	//setValue(curve01, \"xStep\",   x_step);
	setValue(curve01, \"xPrec\",   0);
	setValue(curve01, \"xGrid\",   TRUE);

	// Y-axis coordiantes stuff
	y_max = dynMax(Y_data_array);
	if(y_max == 0) y_max = 10; //just to avoid some PVSS error message
	y_min = dynMin(Y_data_array);

	setValue(curve01, \"yOrigin\", BAR_BOTTOM);
	//dpGet(systemName+\"IVCurve.Vstep.Send:_online.._value\", y_step);
	//y_step = 10;
	//setValue(curve01, \"yStep\",   y_step);
	setValue(curve01, \"yCenter\", 0);
	//setValue(curve01, \"yCenter\", y_min);
	setValue(curve01, \"yRange\",  y_max);
	setValue(curve01, \"yPrec\",   0);
	setValue(curve01, \"yGrid\",   TRUE);
	
	// set the value to the barTrend object
	//setValue(curve01, \"data\", Y_data_array, X_data_array);
	setValue(curve01, \"data\", X_data_array, Y_data_array);
 
	// step curve
	setValue(curve01, \"connection\", BAR_LINEAR);
	//setValue(curve01, \"connection\", BAR_STEPS);
 	// Fill the area
	setValue(curve01, \"fill\", FALSE);
 	// Update bar trend
	curve01.flush();
}" 0
 E 0 1 1 0 1 E U  1 E 10 0 970 660
2 915
"Text38"
""
1 61 587 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
794 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 63 589 119 615
1 2 0 "s" 0 0 0 65 0 0  63 589
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 4 Rack
2 916
"Text39"
""
1 180 587 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
795 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 182 589 238 615
1 2 0 "s" 0 0 0 64 0 0  182 589
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 7 Channel
2 917
"Text40"
""
1 121 587 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
796 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 123 589 178 615
1 2 0 "s" 0 0 0 65 0 0  123 589
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 5 Crate
2 924
"Text1"
""
1 431 586 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
803 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 433 588 509 614
1 2 0 "s" 0 0 0 65 0 0  433 588
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 8 HVchVolt
2 925
"Text2"
""
1 531 586 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
804 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 533 588 609 614
1 2 0 "s" 0 0 0 65 0 0  533 588
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 8 HVchCurr
2 932
"Text3"
""
1 650 586 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
809 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 652 588 749 614
1 2 0 "s" 0 0 0 65 0 0  652 588
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 13 Temperature 0
2 933
"Text4"
""
1 771 586 E E E 1 E 1 E N {0,0,0} E N {204,204,204} E E
 E E
810 0 0 0 0 0
EE E
0
1
LANG:1 0 
1
"dashclr"N "_Transparent"
E E 0 1 1 0 1 E U  1 E 773 588 868 614
1 2 0 "s" 0 0 0 65 0 0  773 588
 1
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
1
LANG:1 13 Temperature 1
27 823
"Curve01"
""
1 1874 -2895 E E E 1 E 1 E N {0,255,255} E N {0,0,0} E E
 E E
704 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 119 -microsoft windows-Courier New-normal-r-normal-*-*-110-100-100-*-*-iso8859-1|-12,0,0,0,400,0,0,0,0,3,2,1,49,Courier New
0 ""
8 16 952 583
2 0 50 10 0 "%H:%M" 1 1
LANG:1 118 -microsoft windows-Courier New-normal-r-normal-*-*-110-100-100-*-*-iso8859-1|-12,0,0,0,400,0,0,0,0,0,0,0,0,Courier New
0 ""
0 2 1 1 0 1 N {153,153,153}
0 0 50 10 0 "%H:%M" 1 1
LANG:1 118 -microsoft windows-Courier New-normal-r-normal-*-*-110-100-100-*-*-iso8859-1|-12,0,0,0,400,0,0,0,0,0,0,0,0,Courier New
0 ""
0 2 1 1 0 1 N {153,153,153}
1 1 1 0 1
LANG:1 118 -microsoft windows-Courier New-normal-r-normal-*-*-110-100-100-*-*-iso8859-1|-12,0,0,0,400,0,0,0,0,0,0,0,0,Courier New
0 ""
2 1 1 0 1 N {153,153,153}
0 1 1 0 1 N {153,153,153}
5 0 0 100 0 N {0,0,0} N {0,0,0} N {255,0,0} 1
1 0 1 1 0 1 N {255,255,0} 1 E
13 574
"Button2"
""
1 -20 0 E E E 1 E 1 E N "_Window" E N {51,102,153} E E
 E E
461 0 0 0 0 0
EE E
1
1
LANG:1 0 
0
1
LANG:1 119 -microsoft windows-Courier New-normal-r-normal-*-*-110-100-100-*-*-iso8859-1|-12,0,0,0,400,0,0,0,0,3,2,1,49,Courier New
0 ""
-22 -2 2 652
T 
1
LANG:1 0 
E E E E
13 830
"Button3"
""
1 0 0 E E E 1 E 1 E N {51,102,153} E N {51,102,153} E E
 E E
711 0 0 0 0 0
EE E
1
1
LANG:1 0 
0
1
LANG:1 119 -microsoft windows-Courier New-normal-r-normal-*-*-110-100-100-*-*-iso8859-1|-12,0,0,0,400,0,0,0,0,3,2,1,49,Courier New
0 ""
-2 -2 12 662
T 
1
LANG:1 0 
E E E E
14 922
"HVchVolt"
""
1 430 619 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
801 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
428 617 514 647
3 "s" 0 0 0 0 0 0 
E
E
E
14 923
"HVchCurr"
""
1 530 619 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
802 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
528 617 614 647
3 "s" 0 0 0 0 0 0 
E
E
E
14 926
"Channel01"
""
1 181 618 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
805 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
179 616 243 646
3 "s" 0 0 0 0 0 0 
E
E
E
14 929
"Crate01"
""
1 121 618 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
808 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
119 616 183 646
3 "s" 0 0 0 0 0 0 
E
E
E
14 930
"Rack01"
""
1 60 618 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
809 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
58 616 122 646
3 "s" 0 0 0 0 0 0 
E
E
E
13 931
"Go01"
""
1 251 591 E E E 1 E 1 E N "_3DText" E N {204,204,102} E E
 E E
809 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
249 589 303 643
T 
1
LANG:1 2 Go
"main()
{
	int rack, crate, channel;
	string systemName, channelAddress;
	
	//get system name
	systemName = getSystemName();
	
	//get the actual value of Rack, Crate and channel
	getValue(\"Rack01\", \"text\", rack);
	getValue(\"Crate01\", \"text\", crate);
	getValue(\"Channel01\", \"text\", channel);

	crate = (rack-1)*4 + crate -1; //-1 because we start from 0 (in the data point numbering)
	channel = channel -1; // start counting from zero (in the data point numbering)
	
	//make a 2 digit label for crates
	if(crate<10)
		channelAddress = systemName+\"Crate0\"+crate;
	else
		channelAddress = systemName+\"Crate\"+crate;

	//make a 2 digit label for channel
	if(channel<10)
		channelAddress = channelAddress+\".Channel0\"+channel;
	else
		channelAddress = channelAddress+\".Channel\"+channel;
	  
	//save the configuration used here for a evntual next use
	dpSet(systemName+\"IVCurve0\"+$Tab_Numb+\".Name01:_original.._value\", channelAddress);
	
	//connect the IV curve status
	dpConnect(\"setIVCurve\", FALSE, systemName+\"IVCurve.Status.Recv:_original.._value\");
	
}

setIVCurve(string statusPath, int statusValue)
{
	int crate, channel;
	float x_step, x_min, x_max, y_min, y_max;
	string channelAddress;
	time timeNow, IVCurveStartTime;
	
	dyn_int evt;
	dyn_float X_data_array, Y_data_array;
	dyn_time time_array;
 	shape curve01;
 		
 	//get system name
	string systemName = getSystemName();
	
		//DebugN(\"=======================================1\");
 	//set the IV curve starting time
	if(statusValue==-1) 
		{
			//dpSet(systemName+\"IVCurve.StartTime:_original.._value\", getCurrentTime());
			//DebugN(\"======================== IVCurveStartTime = \", getCurrentTime());
			return;
		}
	else if(statusValue==-5) 
		{
			//the IV Curve is finished. disconnect
			dpDisconnect(\"setIVCurve\", systemName+\"IVCurve.Status.Recv:_original.._value\");
			return;
		}
	//time now
	timeNow = getCurrentTime();
	
	dpGet(systemName+\"IVCurve0\"+$Tab_Numb+\".Name01:_online.._value\", channelAddress);
	//get the IV curve starting time
	dpGet(systemName+\"IVCurve.StartTime:_online.._value\", IVCurveStartTime);
	//setPeriod(IVCurveStartTime, period(getCurrentTime()) - 3600);
	
	//get the data correspondant to X and Y coordinates
	dpGetPeriod(IVCurveStartTime, timeNow, -1, channelAddress+\".HVchVolt.Recv:_original.._value\", 
				X_data_array, time_array, evt);
	dpGetPeriod(IVCurveStartTime, timeNow, -1, channelAddress+\".HVchCurr.Recv:_original.._value\", 
				Y_data_array, time_array, evt);
	//DebugN(\"================ X_data_array = \", X_data_array);
	//DebugN(\"================ Y_data_array = \", Y_data_array);
	
	//return if no data
	if(dynlen(X_data_array)==0 || dynlen(Y_data_array)==0)
		{
			DebugN(\"IVCurve script of Tab \"+$Tab_Numb+\": ERROR, the data point element \", 
			channelAddress+\".HVchCurr.Recv or \", 
			channelAddress+\".HVchVolt.Recv has no archived data\");
			return;
		}
	
 	//DebugN(\"=======================================2\");
 	curve01 = getShape(\"Curve01\");
	// Y-axis coordinates stuff
	y_max = dynMax(Y_data_array);
	y_min = dynMin(Y_data_array);
	
	setValue(curve01, \"yOrigin\", BAR_BOTTOM);
	setValue(curve01, \"yCenter\", 0);
	setValue(curve01, \"yRange\",  y_max);
	//setValue(curve01, \"yStep\",   y_step);
	setValue(curve01, \"yPrec\",   0);
	setValue(curve01, \"yGrid\",   TRUE);

	// X-axis coordiantes stuff
	x_max = dynMax(X_data_array);
	if(x_max == 0) x_max = 10; //just to avoid some PVSS error message
	x_min = dynMin(X_data_array);

	setValue(curve01, \"xOrigin\", BAR_LEFT);
	//dpGet(systemName+\"IVCurve.Vstep.Send:_online.._value\", x_step);
	//x_step = 10;
	//setValue(curve01, \"xStep\",   x_step);
	setValue(curve01, \"xCenter\", x_min);
	setValue(curve01, \"xRange\",  x_max);
	setValue(curve01, \"xPrec\",   0);
	setValue(curve01, \"xGrid\",   TRUE);
	
	// set the value to the barTrend object
	setValue(curve01, \"data\", X_data_array, Y_data_array);
 
	// step curve
	setValue(curve01, \"connection\", BAR_LINEAR);
	//setValue(curve01, \"connection\", BAR_STEPS);
 	// Fill the area
	setValue(curve01, \"fill\", FALSE);
 	// Update bar trend
	curve01.flush();
}" 0
 E E E
14 934
"Temperature0"
""
1 650 619 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
811 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
648 617 754 647
3 "s" 0 0 0 0 0 0 
E
E
E
14 935
"Temperature1"
""
1 770 619 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
 E E
812 0 0 0 0 0
EE E
0
1
LANG:1 0 
0
1
LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
0 ""
768 617 872 647
3 "s" 0 0 0 0 0 0 
E
E
E
0
LAYER, 1 
1
LANG:1 6 Layer2
0
LAYER, 2 
1
LANG:1 6 Layer3
0
LAYER, 3 
1
LANG:1 6 Layer4
0
LAYER, 4 
1
LANG:1 6 Layer5
0
LAYER, 5 
1
LANG:1 6 Layer6
0
LAYER, 6 
1
LANG:1 6 Layer7
0
LAYER, 7 
1
LANG:1 6 Layer8
0
0