Index: trunk/MultiChannelUSB/UserInterface.tcl
===================================================================
--- trunk/MultiChannelUSB/UserInterface.tcl	(revision 169)
+++ trunk/MultiChannelUSB/UserInterface.tcl	(revision 170)
@@ -116,6 +116,15 @@
 # -------------------------------------------------------------------------
 
+    UsbController instproc init {} {
+
+        my set ignore false
+
+        next
+    }
+
+# -------------------------------------------------------------------------
+
     UsbController instproc usbConnect {} {
-        my instvar handle
+        my instvar handle ignore
 
         puts usbConnect
@@ -125,15 +134,18 @@
             unset handle
         }
-if {0} {
-        while {[catch {usb::connect 0x09FB 0x6001 1 1 0} result]} {
-            set answer [tk_messageBox -icon error -type retrycancel \
-                -message {Cannot access USB device} -detail $result]
-#            puts $result
-            if {[string equal $answer cancel]} exit
-        }
-
-        set handle $result
-
-}
+        if {!$ignore} {
+            while {[catch {usb::connect 0x09FB 0x6001 1 1 0} result]} {
+                set answer [tk_messageBox -icon error -type abortretryignore \
+                    -message {Cannot access USB device} -detail $result]
+                if {[string equal $answer abort]} exit
+                if {[string equal $answer ignore]} {
+                    set ignore true
+                    return
+                }
+            }
+
+            set handle $result
+
+        }
     }
 
@@ -141,9 +153,9 @@
 
     UsbController instproc usbHandle {} {
-        my instvar handle
+        my instvar handle ignore
 
         if {[my exists handle]} {
             return $handle
-        } else {
+        } elseif {!$ignore} {
             my usbConnect
         }
@@ -458,4 +470,7 @@
         my set rate_val(mean) 0.0
         
+        my set date_val(start) {}
+        my set date_val(stop) {}
+   
         ${config}.chan_frame.entr_value configure -text 0.0
 
@@ -722,9 +737,9 @@
         }
 
-        set val_addr [format %02x [expr {7 + ${number}}]]
+        set val_addr [format {%02x} [expr {7 + ${number}}]]
 
         if {$thrs} {
             ${config}.thrs_field configure -state normal
-            set value [format %03x $thrs_val]
+            set value [format {%03x} $thrs_val]
         } else {
             ${config}.thrs_field configure -state disabled
@@ -803,8 +818,8 @@
         my instvar controller number cntr_val
 
-        set word0 [format %08x [expr {${cntr_val} & 0xFFFFFFFF}]]
-        set word1 [format %08x [expr {${cntr_val} >> 32}]]
-
-        set prefix [format %x [expr {5 + ${number}}]]
+        set word0 [format {%08x} [expr {${cntr_val} & 0xFFFFFFFF}]]
+        set word1 [format {%08x} [expr {${cntr_val} >> 32}]]
+
+        set prefix [format {%x} [expr {5 + ${number}}]]
 
         set command {}
@@ -818,5 +833,5 @@
 
         # load counter value
-#        set val_addr [format %02x [expr {12 + ${number}}]]
+#        set val_addr [format {%02x} [expr {12 + ${number}}]]
 #        $controller usbCmd 000200${val_addr}00040001000200${val_addr}00040000
     }
@@ -825,10 +840,10 @@
 
     HstDisplay instproc cntr_reset {} {
-        my instvar controller config number after_handle
-        my instvar cntr_val cntr_bak cntr_old yvec_bak yvec_old rate_val
+        my instvar controller config number
+        my instvar cntr_val cntr_bak cntr_old yvec_bak yvec_old rate_val date_val
 
         my cntr_stop
 
-        set value [format %04x [expr {1 << (5 + ${number})}]]
+        set value [format {%04x} [expr {1 << (5 + ${number})}]]
         $controller usbCmd 000200000004${value}0002000000040000
 
@@ -843,5 +858,8 @@
         set rate_val(mean) 0.0
         ${config}.chan_frame.entr_value configure -text 0.0
-
+        
+        set date_val(start) {}
+        set date_val(stop) {}
+        
         my acquire
 
@@ -869,5 +887,5 @@
         my instvar config
         my instvar cntr_h cntr_m cntr_s
-        my instvar cntr_val cntr_bak cntr_old yvec_bak yvec_old
+        my instvar cntr_val cntr_bak cntr_old yvec_bak yvec_old date_val
 
         set h $cntr_h
@@ -883,4 +901,7 @@
         if {[string equal $s {}]} {
             set s 0
+        }
+        if {[string equal $date_val(start) {}]} {
+            set date_val(start) [clock format [clock seconds] -format {%d/%m/%Y %H:%M:%S}]
         }
 
@@ -920,7 +941,7 @@
 
     HstDisplay instproc cntr_resume {} {
-        my instvar controller config number auto
-
-        set val_addr [format %02x [expr {13 + ${number}}]]
+        my instvar controller config number auto after
+
+        set val_addr [format {%02x} [expr {13 + ${number}}]]
 
         ${config}.start configure -text Pause -command [myproc cntr_pause]
@@ -931,5 +952,5 @@
         set auto 1
 
-        after 100 [myproc acquire_loop]
+        set after [after 100 [myproc acquire_loop]]
     }
 
@@ -937,11 +958,15 @@
 
     HstDisplay instproc cntr_stop {} {
-        my instvar controller config number auto
-
-        set val_addr [format %02x [expr {13 + ${number}}]]
+        my instvar controller config number auto after date_val
+        
+        set date_val(stop) [clock format [clock seconds] -format {%d/%m/%Y %H:%M:%S}]
+
+        set val_addr [format {%02x} [expr {13 + ${number}}]]
 
         $controller usbCmd 000200${val_addr}00040000
 
         set auto 0
+        
+        after cancel $after
     }
 
@@ -956,5 +981,5 @@
 
     HstDisplay instproc acquire_loop {} {
-        my instvar cntr_val auto
+        my instvar cntr_val auto after
 
         my acquire
@@ -964,5 +989,5 @@
             my cntr_ready
         } elseif {$auto} {
-            after 1000 [myproc acquire_loop]
+            set after [after 1000 [myproc acquire_loop]]
         }
     }
@@ -1006,4 +1031,5 @@
     HstDisplay instproc save_data {data} {
         my instvar number
+        my instvar yvec_old rate_val date_val
 
         set types {
@@ -1012,5 +1038,5 @@
         }
 
-        set stamp [clock format [clock seconds] -format %Y%m%d_%H%M%S]
+        set stamp [clock format [clock seconds] -format {%Y%m%d_%H%M%S}]
         set fname spectrum_[expr {$number + 1}]_${stamp}.dat
 
@@ -1022,5 +1048,17 @@
         set x [catch {
             set fid [open $fname w+]
+            puts $fid "info {"
+            puts $fid "start date: $date_val(start)"
+            if {[string equal $date_val(stop) {}]} {
+                puts $fid "stop date: [clock format [clock seconds] -format {%d/%m/%Y %H:%M:%S}]"
+            } else {
+                puts $fid "stop date: $date_val(stop)"
+            }
+            puts $fid "average rate: [format {%.2e} $rate_val(mean)] counts/s"
+            puts $fid "total counts: $yvec_old"
+            puts $fid "}"
+            puts $fid "data {"
             puts $fid $data
+            puts $fid "}"
             close $fid
         }]
@@ -1050,6 +1088,6 @@
         set x [catch {
             set fid [open $fname r+]
-            fconfigure $fid -translation binary -encoding binary
-            [myvar yvec] set [split [read $fid] \n]
+            set content [read $fid 131072]
+            set yvec_new [split [dict get $content data] \n]
             close $fid
         }]
@@ -1061,4 +1099,6 @@
             tk_messageBox -icon info \
                 -message "File \"$fname\" read successfully"
+            my cntr_reset
+            [myvar yvec] set $yvec_new
         }
     }
@@ -1285,9 +1325,9 @@
 
         set number 0
-        set val_addr [format %02x [expr {9 + ${number}}]]
+        set val_addr [format {%02x} [expr {9 + ${number}}]]
 
         if {$thrs} {
             ${config}.thrs_field configure -state normal
-            set value [format %03x $thrs_val]
+            set value [format {%03x} $thrs_val]
         } else {
             ${config}.thrs_field configure -state disabled
@@ -1517,5 +1557,5 @@
         }
 
-        set stamp [clock format [clock seconds] -format %Y%m%d_%H%M%S]
+        set stamp [clock format [clock seconds] -format {%Y%m%d_%H%M%S}]
         set fname counts_${stamp}.dat
 
@@ -1839,5 +1879,5 @@
         if {$thrs} {
             ${config}.thrs_field configure -state normal
-            set value [format %03x $thrs_val]
+            set value [format {%03x} $thrs_val]
         } else {
             ${config}.thrs_field configure -state disabled
@@ -1990,5 +2030,5 @@
         }
 
-        set stamp [clock format [clock seconds] -format %Y%m%d_%H%M%S]
+        set stamp [clock format [clock seconds] -format {%Y%m%d_%H%M%S}]
         set fname oscillogram_${stamp}.dat
 
