var scan_meta;
var coral_scanner_settings;
var pmt_ro_settings;
+var table_control_settings;
var spectrum;
value: 1000
});
+ $('#text_time_per_pixel').change(function(){
+ save_settings("coral_scanner.pl",{
+ time_per_pixel : $(this).val()
+ });
+ update_ETA();
+ });
+ $('#text_scan_length').change(function(){
+ save_settings("table_control.pl",{
+ mm_to_scan : $(this).val()
+ });
+ update_ETA();
+ });
+ $('#text_sample_step_size').change(function(){
+ save_settings("table_control.pl",{
+ sample_step_size : $(this).val()
+ });
+ update_ETA();
+ });
+
get_coral_scanner_settings();
get_pmt_ro_settings();
+ get_table_control_settings();
spectrum = get_spectrum_JSON();
plot_choices();
get_scan_meta();
// get_scan_svg();
+ update_ETA();
set_clear_timer();
// make_flot();
function get_coral_scanner_settings(){
coral_scanner_settings = load_settings("coral_scanner.pl");
init_slider();
+ $('#text_time_per_pixel').val(coral_scanner_settings.time_per_pixel);
}
function get_pmt_ro_settings(){
pmt_ro_settings = load_settings("pmt_ro.pl");
$('#text_thresh').val(pmt_ro_settings.signal_thresh);
}
+function get_table_control_settings(){
+ table_control_settings = load_settings("table_control.pl");
+ $('#text_scan_length').val(table_control_settings.mm_to_scan);
+ $('#text_sample_step_size').val(table_control_settings.sample_step_size);
+}
function init_slider(){
$( "#slider-range" ).slider({
});
}
+function update_ETA(){
+ $.ajax({
+ url: "coral_scanner.pl",
+ cache: false,
+ async: true,
+ dataType: "text",
+ data: {
+ sub : "scan_ETA",
+ hms : true
+ },
+ success: function(answer) {
+ $( "#ETA_hms" ).html(answer);
+ }
+ });
+}
+
function home(){
$.ajax({
url: "coral_scanner.pl",
log_file => "./".__PACKAGE__.".log",
table_control_number_retries => 3,
table_control_retry_delay => 5,
+ unshadowed_count_time => 100,
};
$self->{settings_desc} = {
stderr => "/path/to/file of the stderr logfile",
table_control_number_retries => "number of retries, when communication with the table fails",
table_control_retry_delay => "number of seconds to wait for new connection with table",
+ unshadowed_count_time => "time in seconds to record the unshadowed/undisturbed count rate of the source before scanning",
};
$self->{has_run} = {}; # remember which subs already have run
print "</tr><tr>";
print "<td align=right>Scan description: </td>";
print "<td><input type='text' id='text_scan_desc' value=''></td>";
+ print "</tr><tr>";
+ print "<td align=right>Sample length to scan (mm): </td>";
+ print "<td><input type='text' id='text_scan_length' value=''></td>";
+ print "</tr><tr>";
+ print "<td align=right>Time per pixel (s): </td>";
+ print "<td><input type='text' id='text_time_per_pixel' value=''></td>";
+ print "</tr><tr>";
+ print "<td align=right>Sample step size (mm): </td>";
+ print "<td><input type='text' id='text_sample_step_size' value=''></td>";
print "</tr></table>";
print br;
- print "estimated scan duration: ".hms_string($self->scan_ETA());
+ print "estimated scan duration: <span id='ETA_hms'></span>";
print br;
print "Machine is : <span id='action'></span>";
print br;
my $scan_pattern = $tc->scan_pattern();
my $ETA = $self->scan_ETA();
- print ">>> starting scan\n\n";
+
$self->{status_shm}->updateShm({
action => 'scanning',
$self->{current_scan}->{meta}->{scan_desc} = $options{scan_desc} if defined($options{scan_desc});
$self->{current_scan}->{data} = [];
+ print ">>> homing table\n\n";
+ $tc->home();
+
+ print ">>> recording unshadowed beam count rate\n\n";
+ my $unshadowed_count_time = $self->{settings}->{unshadowed_count_time};
+ my $unshadowed_counts = $ro->count(delay => $unshadowed_count_time, channel => "signal");
+ $self->{current_scan}->{meta}->{unshadowed_count_time} = $unshadowed_count_time;
+ $self->{current_scan}->{meta}->{unshadowed_counts} = $unshadowed_counts;
+ print " count time : $unshadowed_count_time\n";
+ print " counts : $unshadowed_counts\n";
+
+
+ print ">>> starting actual scan\n\n";
my $points_scanned = 0;
my $last_row;
print ">>> scan completed!\n\n";
print ">>> sending report ...\n\n";
$self->compile_report();
+
+ print ">>> homing table\n\n";
+ $tc->home();
print ">>> done!\n\n";
return "";
sub scan_ETA { #estimated time to complete a scan
my $self = shift;
+ my %options = @_;
my $tc = $self->{table_control};
}
$last_point = $point;
}
-
+
my $number_points = $pattern->{number_points};
- return $pattern_length/$speed + $number_points*$time_per_pixel;
+ my $return_val = $pattern_length/$speed + $number_points*$time_per_pixel;
+ if ($options{hms}){
+ return hms_string($return_val);
+ }
+ return $return_val;
}