From fc410a5fdbed4a1f7b5733dad9702b77e4d14e53 Mon Sep 17 00:00:00 2001 From: maps Date: Mon, 19 Jan 2015 11:59:32 +0100 Subject: [PATCH] implemented a working callback system for the scan --- user_interface/coral_scanner.pm | 21 ++++++++++++++------- user_interface/table_control.pm | 10 ++++++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/user_interface/coral_scanner.pm b/user_interface/coral_scanner.pm index 0a0565a..f42e543 100644 --- a/user_interface/coral_scanner.pm +++ b/user_interface/coral_scanner.pm @@ -3,7 +3,7 @@ package coral_scanner; use strict; use warnings; -use Time::HiRes; +use Time::HiRes qw/sleep/; use POSIX qw/strftime/; use POSIX; use Device::SerialPort; @@ -122,20 +122,25 @@ sub scan_sample { my $tc = $self->{table_control}; - $tc->home(); - $tc->scan( eval => 'print("test");' ); +# $tc->home(); +# $tc->scan( eval => 'print("test\n");' ); + $tc->scan( object => $self, method => 'scan_callback' ); + } sub scan_callback { - my $point=shift; + my $self = shift; + my $point = shift; - printf("evaluate sth. at point %d %d" , $point->{row},$point->{col}); -# my $ro = $self->{pmt_ro}; + printf("evaluate sth. at point %d %d\n" , $point->{row},$point->{col}); + my $ro = $self->{pmt_ro}; -# print $ro->count(delay => 0.5, channel => "signal"); +# print $ro->count(delay => 0.1, channel => "signal"); + sleep 2; + print "\n\n"; } @@ -144,4 +149,6 @@ sub scan_callback { + + 1; diff --git a/user_interface/table_control.pm b/user_interface/table_control.pm index f2efdd6..bfe968e 100644 --- a/user_interface/table_control.pm +++ b/user_interface/table_control.pm @@ -264,7 +264,7 @@ sub go_xy { my $answer = $self->receive(wait => $travel_timeout); - if($new_x - $answer->{x_pos} < $self->{settings}->{table_precision} + if(abs($new_x - $answer->{x_pos}) < $self->{settings}->{table_precision} || $answer->{xend2_sw} || $answer->{xend1_sw} ){ $self->{setpos}->{x} = $new_x; $self->{realpos}->{x} = $answer->{x_pos}; @@ -272,7 +272,7 @@ sub go_xy { } - if($new_y - $answer->{y_pos} < $self->{settings}->{table_precision} + if(abs($new_y - $answer->{y_pos}) < $self->{settings}->{table_precision} || $answer->{yend2_sw} || $answer->{yend1_sw} ){ $self->{setpos}->{y} = $new_y; $self->{realpos}->{y} = $answer->{y_pos}; @@ -504,6 +504,9 @@ sub scan { my $eval = $options{eval}; my $subref = $options{subref}; + my $method = $options{method}; + my $object = $options{object}; + $self->require_run("load_settings"); for my $point (@{$self->scan_pattern()}) { @@ -513,6 +516,9 @@ sub scan { $self->go_xy( x => $point->{x}, y => $point->{y}); eval $eval if defined($eval); $subref->($point) if defined($subref); + if(defined($object) && defined($method)){ + $object->$method($point); + } } } -- 2.43.0