1 / 15

Channel Access in Tcl/Tk

Channel Access in Tcl/Tk. Contents. Tcl/Tk overview Graphical user interfaces pep pvAssign SLS widgets Direct EPICS access pvget, pvput, pvmon Problems References. What is Tcl/Tk?. Tcl is a scripting programming language. Tk is a widget toolkit, available for Tcl and other languages.

chick
Download Presentation

Channel Access in Tcl/Tk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Channel Access in Tcl/Tk Advanced EPICS Training, Dirk Zimoch 2008

  2. Contents • Tcl/Tk overview • Graphical user interfaces • pep • pvAssign • SLS widgets • Direct EPICS access • pvget, pvput, pvmon • Problems • References Advanced EPICS Training, Dirk Zimoch 2008

  3. What is Tcl/Tk? • Tcl is a scripting programming language. • Tk is a widget toolkit, available for Tcl and other languages. • It provides a command line shell: tclsh • And a GUI shell: wish • And a help program: tclhelp • Tcl can be extended with so called "packages". • We provide an EPICS package for Tcl/Tk. • We also provide special widgets for Tcl/Tk. • Tcl is really well supported by the controls section. Advanced EPICS Training, Dirk Zimoch 2008

  4. Tcl/Tk quick start • Tcl is easy • Tk makes GUI creation simple • Type: wishbutton .b -text "Press me!" -command {puts "Hello world!"}pack .b • Press button • Look in tclhelp for: button, puts, pack • Write the program in a file and add first line:#!/usr/bin/wish • Make file executable: chmod +x filename Advanced EPICS Training, Dirk Zimoch 2008

  5. Graphical user interfaces in Tcl/Tk: pep • pep -mc X11MA-ID1-CHU1:I-SET • connects magnet control widget to X11MA-ID1-CHU1:I-SET • pep X11MA-ID1-CHU1:I-SET • asks what widget type to connect to X11MA-ID1-CHU1:I-SET • pep –f configfile • loads configfile.prc from . or $SLSBASE/sls/config/panel • Try files from /work/sls/config/panel • Also see "How to use pep" item in Help menu. Advanced EPICS Training, Dirk Zimoch 2008

  6. Beyond pep: Write your own Tcl-GUI with pvAssign • Start wish and load pvAssign package package require pvAssign • Create Widget label .temperature pack .temperature • Connect EPICS channel pvAssign .temperature MTRT1-TEMP:READ • Enjoy the features • See value and alarm updates • Try right click and middle click Advanced EPICS Training, Dirk Zimoch 2008

  7. Standard Tcl/Tk widgets label display string/number entry set string/number checkbutton set bit menubutton set enum with menu scale set number with slider Special SLS widgets formattedlabel display formatted number with units comparelabel display = or ≠ (compare to 0) wheelswitch set number led show bit as LED choicebutton set enum with row/column of buttons Load widget packages package require Wheelswitch Supported widget types Advanced EPICS Training, Dirk Zimoch 2008

  8. SLS Widgets types: Formattedlabel • Use standalone Formattedlabel package require Formattedlabel formattedlabel .fl -bg paleGreen -format "%9.4f mA" pack .fl .fl set 3.14159265359 • Use Formattedlabel with EPICS package require pvAssign package require Formattedlabel formattedlabel .temp1 -bg paleGreen pack .temp1 pvassign .temp1 MTRT1-LI-COOL:TEMP1 Advanced EPICS Training, Dirk Zimoch 2008

  9. SLS Widgets types: Wheelswitch • Use standalone Wheelswitch package require Wheelswitch wheelswitch .ws -bg paleGreen -format 9.4 -label mA \-min -100 -max -100 -command puts pack .ws .ws set 3.14159265359 • Use Wheelswitch with EPICS package require pvAssign package require Wheelswitch wheelswitch .limit -bg paleGreen pack .limit pvassign .limit MTRT1-LI-COOL:LIMIT Advanced EPICS Training, Dirk Zimoch 2008

  10. SLS Widgets types: Led • Use standalone Led package require Led led .led -color red pack .led • Use Led with EPICS package require pvAssign package require Led led .status pack .status pvassign .status MTRT1-LI-COOL:SW Advanced EPICS Training, Dirk Zimoch 2008

  11. Beyond pvAssign: direct EPICS access • Load EPICS package (which is also used by pvAssign) package require Epics • Read value pvget MTRT1-LI-COOL:TEMP1 pvget MTRT1-LI-COOL:TEMP1 -format • Write value pvput MTRT1-LI-COOL:LIMIT 10 • Crate monitor pvmon MTRT1-LI-COOL:TEMP1 updateTemp1 • Monitors need a callback procedure (here: updateTemp1) proc updateTemp1 {iostate value sevr stat time} Advanced EPICS Training, Dirk Zimoch 2008

  12. Monitor example #!/usr/bin/tclshpackage require Epics proc updateValue {channel iostate value sevr stat time} {if {$iostate != "OK"} { puts "$channel disconnected" return } if {$sevr != "NO_ALARM"} { puts "$channel has $sevr alarm because of $stat status" } puts "$time $channel = $value"} set device MTEST-VME-T1foreach property {UPTIME LOAD WD} { set channel $device:$property pvmon $channel "updateValue $channel"} vwait forever Advanced EPICS Training, Dirk Zimoch 2008

  13. Frequently asked questions about monitors • Why can't I simply call pvget in a loop? • This creates much network overhead. • It keeps the program and the IOC busy. • But what about a delay in the loop? • Then you increase latency when something happens. • You still have much overhead. • I don't understand how the monitor function gets called. • Monitors work much the same as for example mouse clicks. • On value change, monitors are called as soon as the program is idle. Advanced EPICS Training, Dirk Zimoch 2008

  14. Problems with Tcl and EPICS • What if package require Epics (or pvAssign) fails? • Check environment variable TCLLIBPATH echo $TCLLIBPATH /usr/lib/tcl /work/lib/tcl • Check that EPICS is installed in /usr/local/epics and /work or /prod is mounted. • Why does pvmon not work in tclsh? • Monitors need an idle loop to work, wish has one, tclsh not. • Add vwait forever to the end of the script and it works. Advanced EPICS Training, Dirk Zimoch 2008

  15. Where can I learn more about Tcl/Tk? • First try tclhelp • Look at www.tcl.tk • Ask one of the Tcl experts: • Werner Portmann • Elke Zimoch • Dirk Zimoch Advanced EPICS Training, Dirk Zimoch 2008

More Related