91 lines
2.7 KiB
Tcl
91 lines
2.7 KiB
Tcl
#------------------------------------------------------------
|
|
# Last openened files. Lists the last n old files, giving
|
|
# a summary of each.
|
|
#
|
|
# copyright: see file COPYRIGHT
|
|
#
|
|
# Mark Koennecke, July 2009
|
|
#------------------------------------------------------------
|
|
|
|
namespace eval lof {}
|
|
|
|
set lof::instrument focus
|
|
|
|
set lof::table(Title) /entry1/title
|
|
set lof::table(Finished) /entry1/end_time
|
|
set lof::table(Monitor) /entry1/FOCUS/counter/monitor
|
|
set lof::table(Sample) /entry1/sample/name
|
|
set lof::table(Temperature) /entry1/sample/temperature
|
|
set lof::table(Lambda) /entry1/FOCUS/monochromator/lambda
|
|
|
|
|
|
proc lof::getyear {} {
|
|
return [clock format [clock seconds] -format "%Y"]
|
|
}
|
|
#------------------------------------------------------------
|
|
proc lof::makefilename {num} {
|
|
global simMode lof::instrument datahome
|
|
|
|
set hun [expr $num / 1000]
|
|
set y [lof::getyear]
|
|
if {$simMode == 0} {
|
|
set filename [format "%s/%3.3d/%s%4.4dn%6.6d.hdf" $datahome $hun $lof::instrument $y $num]
|
|
} else {
|
|
set filename [format "/afs/psi.ch/project/sinqdata/%s/%s/%3.3d/%s%4.4dn%6.6d.hdf" \
|
|
$y $lof::instrument $hun $lof::instrument $y $num]
|
|
}
|
|
return $filename
|
|
}
|
|
#------------------------------------------------------------
|
|
proc lof::getcurrentnumor {} {
|
|
global simMode lof::instrument
|
|
|
|
if {$simMode == 0} {
|
|
set txt [sicsdatanumber]
|
|
set l [split $txt =]
|
|
return [string trim [lindex $l 1]]
|
|
} else {
|
|
set y [getyear]
|
|
set filnam [format "/afs/psi.ch/project/sinqdata/%s/%s/DataNumber" \
|
|
$y $instrument]
|
|
set in [open $filnam r]
|
|
gets $in line
|
|
close $in
|
|
return [string trim $line]
|
|
}
|
|
}
|
|
#-----------------------------------------------------------
|
|
proc lof::readfiledata {num} {
|
|
global lof::table NXACC_READ NX_CHAR
|
|
|
|
set hdffile [lof::makefilename $num]
|
|
set nxfile [nx_open $hdffile $NXACC_READ]
|
|
set names [array names lof::table]
|
|
append result [file tail $hdffile] \n
|
|
append result "=======================================================================\n"
|
|
foreach name $names {
|
|
set status [catch {nx_openpath $nxfile $lof::table($name)} msg]
|
|
if {$status == 0} {
|
|
set data [nx_getdata $nxfile]
|
|
set type [get_nxds_type $data]
|
|
if {[string compare $type $NX_CHAR] == 0} {
|
|
set value [get_nxds_text $data]
|
|
} else {
|
|
set value [get_nxds_value $data 0]
|
|
}
|
|
append result [format "%-20s:%50s" $name $value] \n
|
|
}
|
|
}
|
|
nx_close $nxfile
|
|
return $result
|
|
}
|
|
#-----------------------------------------------------------
|
|
proc lof::lof {{num 5}} {
|
|
set numor [getcurrentnumor]
|
|
for {set n [expr $numor - $num] } {$n < $numor} {incr n} {
|
|
append result [readfiledata $n]
|
|
append result " \n"
|
|
}
|
|
return $result
|
|
}
|