source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_TemperatureSensor.ipf @ 1146

Last change on this file since 1146 was 1146, checked in by srkline, 4 years ago

adding first pass of procedures to allow plotting of sensor data. currently the sensor data folders are listed (if present), with status of data fields and a plot of the data. Attributes are not read in so the units are not known. CUrrently limited to temperature data

access to the nre panel is from the menu or the raw data panel.

File size: 5.4 KB
Line 
1#pragma TextEncoding = "MacRoman"
2#pragma rtGlobals=3             // Use modern global access method and strict wave access.
3
4// April 2019
5// routines to read + plot the data in the temperature_env block
6//
7
8// I don't know in general what may or may not be present, so I'll need to search for
9// data, and let the user decide what to do with what is there.
10
11// Paul K.? also puts a temperature_log block on the same level as temperature_env.
12// I need to figure out which sensor and fields this is duplicating.
13// - this may be the easiest and most appropriate to report - or not.
14
15//
16
17// list the temperature log folders
18// list all of the metadata (name, attached to, set point, etc.)
19// graph the values vs. time
20// where will I get the proper units??
21//
22Function V_InitSensorGraph()
23
24        DoWindow/F V_SensorGraph
25        if(V_flag==0)
26                String/G root:Packages:NIST:VSANS:Globals:gSensorFolders = "none;"
27                String/G root:Packages:NIST:VSANS:Globals:gSensorMetaData = "no information"
28
29                Execute "V_SensorGraph()"
30                Make/O/D/N=1 root:Packages:NIST:VSANS:Globals:value
31                Make/O/D/n=1 root:Packages:NIST:VSANS:Globals:time_point
32//              Wave value=value,time_point=time0
33                AppendToGraph root:Packages:NIST:VSANS:Globals:value vs root:Packages:NIST:VSANS:Globals:time_point
34                ModifyGraph mode=4,marker=8,opaque=1,mirror=2
35                Legend
36                Label left,"Sensor Value"
37                Label bottom,"Time (s)"
38        endif
39       
40        return(0)
41End
42
43
44Window V_SensorGraph() : Graph
45        PauseUpdate; Silent 1           // building window...
46        Display /W=(1500,350,2300,750)/N=V_SensorGraph/K=1
47//      ShowTools/A
48        ControlBar/L 300
49        PopupMenu popup0,pos={10.00,10.00},size={87.00,23.00},proc=V_WorkFolderPopMenuProc,title="folder"
50        PopupMenu popup0,mode=1,popvalue="RAW",value= #"\"RAW;SAM;ABS;\""
51        PopupMenu popup1,pos={10.00,40.00},size={84.00,23.00},proc=V_SensorPopMenuProc,title="sensor"
52        PopupMenu popup1,mode=1,popvalue="pick folder",value= root:Packages:NIST:VSANS:Globals:gSensorFolders
53        TitleBox title0,pos={10.00,80.00},size={25.00,19.00},fSize=10,variable=root:Packages:NIST:VSANS:Globals:gSensorMetaData
54EndMacro
55
56
57// pick the work folder of interest, and get the list of sensors, if any
58Function V_WorkFolderPopMenuProc(pa) : PopupMenuControl
59        STRUCT WMPopupAction &pa
60
61        switch( pa.eventCode )
62                case 2: // mouse up
63                        Variable popNum = pa.popNum
64                        String popStr = pa.popStr
65                        String dfStr
66                       
67                        // repopulate the list of sensors, if any
68                        SVAR gList = root:Packages:NIST:VSANS:Globals:gSensorFolders
69                       
70                        // do any data folders exist?
71                        if(!DataFolderExists("root:Packages:NIST:VSANS:"+popStr+":entry:sample:temperature_env:"))
72                                // data folder does not exist
73                                DoAlert 0,"No Sensor Data Exists"
74                                SVAR gMeta=root:Packages:NIST:VSANS:Globals:gSensorMetaData
75                                gMeta = "no sensors found"
76                                gList = "none"
77//                              DoWindow/K V_SensorGraph
78                                return(0)
79                        endif
80                       
81                        SetDataFolder $("root:Packages:NIST:VSANS:"+popStr+":entry:sample:temperature_env:")
82                        dfStr = DataFolderDir(1)                // bit 0 = data folders
83                        gList = StringByKey("FOLDERS", dfStr ,":",";")
84                        gList = ReplaceString(",",gList,";")
85                               
86                        SetDataFolder root:                     
87                       
88                        break
89                case -1: // control being killed
90                        break
91        endswitch
92
93        return 0
94End
95
96// form the list of sensors, when popped, update the metadata and the plot
97//
98Function V_SensorPopMenuProc(pa) : PopupMenuControl
99        STRUCT WMPopupAction &pa
100
101        switch( pa.eventCode )
102                case 2: // mouse up
103                        Variable popNum = pa.popNum
104                        String popStr = pa.popStr
105
106                        string folderStr,wStr,wStr_2
107                        SVAR gMeta=root:Packages:NIST:VSANS:Globals:gSensorMetaData
108
109                        Variable ii
110                        String item
111
112                        ControlInfo popup0
113                        folderStr = S_Value
114                        // add single quote since sensor folder name may have a space in it
115                        if(!DataFolderExists("root:Packages:NIST:VSANS:"+folderStr+":entry:sample:temperature_env:'"+popStr+"':"))
116                                // data folder does not exist
117                                DoAlert 0,"No Sensor Data Exists"
118//                              DoWindow/K V_SensorGraph
119                                return(0)
120                        endif
121                       
122                       
123                        SetDataFolder $("root:Packages:NIST:VSANS:"+folderStr+":entry:sample:temperature_env:'"+popStr+"':")
124
125                        wStr = DataFolderDir(2)         //*bit* 0=FOLDERS, 1=WAVES, 2=VARIABLES, 3=STRINGS
126                        wStr = StringByKey("WAVES", wStr ,":",";")
127                        gMeta = ""
128                        for(ii=0;ii<ItemsInList(wStr,",");ii+=1)
129                                item = StringFromList(ii, wStr,",")
130                                if(WaveType($item,1) == 2)              //2= text, 1=numeric
131                                        Wave/T wt = $item
132                                        gMeta += item + " = " + wt[0] + "\r"
133                                else
134                                        Wave w = $item
135                                        gMeta += item + " = " + num2str(w[0]) + "\r"
136                                endif
137                        endfor
138                        gMeta = ReplaceString(",",gMeta,"\t\r")
139                        gMeta += "\r"
140       
141       
142        // waves in the value_log folder
143                        SetDataFolder value_log
144                        wStr = DataFolderDir(2)         //*bit* 0=FOLDERS, 1=WAVES, 2=VARIABLES, 3=STRINGS
145                        wStr = StringByKey("WAVES", wStr ,":",";")
146                       
147                        for(ii=0;ii<ItemsInList(wStr,",");ii+=1)
148                                item = StringFromList(ii, wStr,",")
149                                if(cmpstr(item,"value") != 0 && cmpstr(item,"time0") != 0)
150                                        if(WaveType($item,1) == 2)              //2= text, 1=numeric
151                                                Wave/T wt = $item
152                                                gMeta += item + " = " + wt[0] + "\r"
153                                        else
154                                                Wave w = $item
155                                                gMeta += item + " = " + num2str(w[0]) + "\r"
156                                        endif
157                                endif
158                        endfor
159                        // remove last "\r" (a single character)
160                        gMeta = gMeta[0,strlen(gMeta)-2]
161                                               
162                //update the waves on the plot, plus the variables in this folder
163//                      SetDataFolder value_log         //already here
164                        Wave newVal=value,newTime=time0
165                        Duplicate/O newVal, root:Packages:NIST:VSANS:Globals:value
166                        Duplicate/O newTime, root:Packages:NIST:VSANS:Globals:time_point
167
168                                       
169                        setDataFolder root:
170                        break
171                case -1: // control being killed
172                        break
173        endswitch
174
175        return 0
176End
177
Note: See TracBrowser for help on using the repository browser.