(load "date-time.scm") (load "plc-init.scm") (load "scheduler.scm") (define protocol-a (current-protocol)) ;(define protocol-b (protocol-load " c:\\bbleble.p")) (define path "c:\\fytoscope\\") (define analyse-run2-enabled #t) (define (set-light-actinic1 percent) (set-property "fluorcam.actinic" percent) (set-property "fluorcam.actinic_on" #t)) (define (set-light-actinic2 percent) (set-property "fluorcam.super" percent) (set-property "fluorcam.unknown.switch0" #t)) (define (set-light-far percent) (set-property "fluorcam.unknown.track1" percent) (set-property "fluorcam.unknown.switch1" #t)) ;sheduler actions (define (action-measuring) (lambda () (exp-measure protocol-a))) (define (action-light-off) (lambda () (set-light-actinic1 0) (set-light-actinic2 0) (set-light-far 0))) (define (action-set-light light percent) (if (= light "act1") (lambda () (set-light-actinic1 percent)) (if (= light "act2") (lambda () (set-light-actinic2 percent)) (if (= light "far") (lambda () (set-light-far percent)) (lambda() (display "invalid name for light" light)))))) (define (action-wait)(wait/progress "Time to next day: " 10)) (define (next-day) (define-action "23:59:55" action-wait)) (define sh (list (define-action "00:01:00" (action-set-light "act2" 10)) (define-action "00:01:02" (action-set-light "act1" 10)) (define-action "00:15:00" (action-measuring)) (define-action "00:10:00" (action-set-light "act2" 10)) (define-action "00:10:02" (action-set-light "act1" 10)) (define-action "01:45:00" (action-set-light "act2" 0)) (define-action "01:45:02" (action-set-light "act1" 0)) (define-action "02:00:00" (action-measuring)) (define-action "02:05:00" (action-set-light "act2" 10)) (define-action "02:05:02" (action-set-light "act1" 10)) (define-action "03:45:00" (action-set-light "act2" 0)) (define-action "03:45:02" (action-set-light "act1" 0)) (define-action "04:00:00" (action-measuring)) (define-action "04:05:00" (action-set-light "act2" 10)) (define-action "04:05:02" (action-set-light "act1" 10)) (define-action "05:45:00" (action-set-light "act2" 0)) (define-action "05:45:02" (action-set-light "act1" 0)) (define-action "06:00:00" (action-measuring)) (define-action "06:05:00" (action-set-light "act2" 10)) (define-action "06:05:02" (action-set-light "act1" 10)) (define-action "07:45:00" (action-set-light "act2" 0)) (define-action "07:45:02" (action-set-light "act1" 0)) (define-action "08:00:00" (action-measuring)) (define-action "08:05:00" (action-set-light "act2" 10)) (define-action "08:05:02" (action-set-light "act1" 10)) (define-action "09:00:00" (action-set-light "act2" 10)) (define-action "09:00:02" (action-set-light "act1" 10)) (define-action "09:45:00" (action-set-light "act2" 0)) (define-action "09:45:02" (action-set-light "act1" 0)) (define-action "10:00:00" (action-measuring)) (define-action "10:05:00" (action-set-light "act2" 10)) (define-action "10:05:02" (action-set-light "act1" 10)) (define-action "11:45:00" (action-set-light "act2" 0)) (define-action "11:45:02" (action-set-light "act1" 0)) (define-action "12:00:00" (action-measuring)) (define-action "12:05:00" (action-set-light "act2" 10)) (define-action "12:05:02" (action-set-light "act1" 10)) (define-action "13:45:00" (action-set-light "act2" 0)) (define-action "13:45:02" (action-set-light "act1" 0)) (define-action "14:00:00" (action-measuring)) (define-action "14:05:00" (action-set-light "act2" 10)) (define-action "14:05:02" (action-set-light "act1" 10)) (define-action "15:45:00" (action-set-light "act2" 0)) (define-action "15:45:02" (action-set-light "act1" 0)) (define-action "16:00:00" (action-measuring)) (define-action "16:05:00" (action-set-light "act2" 10)) (define-action "16:05:02" (action-set-light "act1" 10)) (define-action "17:45:00" (action-set-light "act2" 0)) (define-action "17:45:02" (action-set-light "act1" 0)) (define-action "18:00:00" (action-measuring)) (define-action "18:05:00" (action-set-light "act2" 10)) (define-action "18:05:02" (action-set-light "act1" 10)) (define-action "19:45:00" (action-set-light "act2" 0)) (define-action "19:45:02" (action-set-light "act1" 0)) (define-action "20:00:00" (action-measuring)) (define-action "20:05:00" (action-set-light "act2" 10)) (define-action "20:05:02" (action-set-light "act1" 10)) (define-action "21:45:00" (action-set-light "act2" 0)) (define-action "21:45:02" (action-set-light "act1" 0)) (define-action "22:00:00" (action-measuring)) (define-action "22:05:00" (action-set-light "act2" 10)) (define-action "22:05:02" (action-set-light "act1" 10)) (define-action "23:00:00" (action-set-light "act2" 0)) (define-action "23:00:02" (action-set-light "act1" 0)) (next-day) )) (define (simple-measure protocol) (set-protocol protocol) (if (empty-protocol? protocol) (throw -1 "Protocol is EMPTY")) (if (not (compile-protocol protocol)) (throw -2 "Compile protocol failed")) (if (not (upload-protocol protocol)) (throw -3 "Upload protocol failed")) (if (not (start-measuring)) (throw -4 "Start measuring failed")) (if (!= (wait-for-end-measuring) 0) (throw -5 "Error in measuring")) ok) (define (create-exp-name . param) (define (iter result param) (if (null? param) result (iter (+ result (car param))(cdr param)))) (iter "" param)) (define (char-alpha? ch) (or (and (>= ch #\A) (<= ch #\Z))(and (>= ch #\a)(<= ch #\z)))) (define (correct-name str) (define count (string-length str)) (define (iter n) (if (>= n count) str (begin (define ch (string-ref str n)) (if (not (or (char-numeric? ch) (char-alpha? ch))) (string-set! str n #\-)) (iter (+ n 1))))) (iter 0)) (define (datetime) (correct-name (datetime->string (current-datetime)))) (define (analyse-run) (set-selection-auto)(sleep 100) (background-exclusion)(sleep 100) (exp-analyse)) (define (analyse-run2) (set-selection-manual)(sleep 100) (shapes-load "c:\\fytoscope\\maskbar.sel") (background-exclusion)(sleep 100) (exp-analyse)) (define (exp-measure protocol) (gui-set-page 0) (simple-measure protocol) (if analyse-run2-enabled (analyse-run2)) (save-exp (create-exp-name path (datetime) ".tar"))) (define (check protocol) (if (empty-protocol? protocol) (set! protocol (open-protocol))) (if (empty-protocol? protocol) (throw -1 "Protocol is EMPTY")) (if (not (path-exists? path)) (set! path (select-dir))) (if (not (string? path)) (throw -1 "Path is EMPTY"))) (define (start) (check protocol-a) (scheduler-start sh)(start)) (try/cc start) ;(if analyse-run2-enabled (analyse-run2)) ;(create-exp-name (datetime)) ;(shapes-load "c:\\fytoscope\\npq.sel")