Patch title: Release 92 bulk changes
Abstract:
File: /graphic/color/spectro.pli
Key:
    Removed line
    Added line
   
abstract
  [This program is handling the Minolta spectocolorimeter]


function percent f -> s
  arg Float f ; arg Str s
  s := (string (cast f*1000 Int)/10)+"%"
abstract
  [This program is handling the Minolta spectocolorimeter]


function percent f -> s
  arg Float f ; arg Str s
  s := (string (cast f*1000 Int)/10)+"%"


if false
  # Spectrolino interface

  module "/pliant/language/stream.pli"
  module "/pliant/language/stream/serial.pli"
  module "/pliant/linux/kernel/device.pli"
  
  function spectro_command s cmd -> a
    arg_rw Stream s ; arg Str cmd a
    s writeline "; "+cmd
    a := s readline
    console "; " cmd " -> " a eol
  
  function test
    kernel_make_device:"device:/ttyS0"
    (var Stream s) open "serial:0" "speed 9600 flowcontrol [dq]none[dq]" in+out+safe+cr+lf
    if s=failure
      console "no serial device" eol
      return
    s configure "timeout 30"
    if not ((spectro_command s "208 36") parse ": 209" any) # output status
      console "serial device is not a spectrolino" eol
      return
    part init
      spectro_command s "208 10" # set device online
      spectro_command s "208 12" # hold paper
      spectro_command s "208 11" # init spectrolino connection
      spectro_command s "90 1 4 5" # reset the spectrolino
      spectro_command s "77 155" # reflectance measure
      spectro_command s "22 0 1 3 0" # colorimetric parameters: white base is absolute
    part calibrate
      spectro_command s "208 6 0" # move to white reference
      spectro_command s "208 4" # move down
      if (spectro_command s "34 9 7")<>": 37 19" # white calibration
        console "white calibration failed"
        return
      spectro_command s "0" # query parameters: last should be 1 = no filter
      spectro_command s "208 3" # move up
    var Float x := 50 ; var Float y := 30
    if true
      if ((spectro_command s "208 7 "+(string x*10 "fixed 0")+" "+(string y*10 "fixed 0")) parse ":" "16" "9" "0" any:(var Str spec)) # move, down, measure, up
        var Int w := 380
        while (spec parse (var Float d) any:(var Str remain)) and w<=730
          console " " w ":" d
          w += 10 ; spec := remain
        console eol
    else
      spectro_command s "208 0 0 "+(string x*10 "fixed 0")+" "+(string y*10 "fixed 0") # move
      # if ((spectro_command s "208 5 0") parse ":" "209" "129" "0" "0" (var Int ix) (var Int iy) (var Int iz)) # query position
      #   console ix/10 " " iy/10 eol
      spectro_command s "208 4" # move down
      spectro_command s "32" # measure and read
      # spectro_command s "208 7 "+(string x*10 "fixed 0")+" "+(string y*10 "fixed 0") # move, down, measure, up
      if ((spectro_command s "184 9 0") parse ":" "185" "9" "0" any:(var Str spec))# read spectrum
        var Int w := 380
        while (spec parse (var Float d) any:(var Str remain)) and w<=730
          console " " w ":" d
          w += 10 ; spec := remain
        console eol
    part terminate
      spectro_command s "208 2" # move home
      spectro_command s "208 13" # release paper
      spectro_command s "208 11" # set device offline
    if s=failure
      console "broken stream" eol
  
  test