BACK TO INDEX

VEE 3.0 Introduction Notes (feb 95)

VEE 3.0 Introduction Notes (feb 95)

last upate 28 aug 98 / greg goebel / public domain / vwv_3_0

* This document provides the introduction note for the VEE 3.0 release in early 1995.


[1] OVERVIEW
[2] NEW VEE USER INTERFACE
[3] USER INTERFACE OBJECTS
[4] KEYBOARD CONTROL OVER VEE PROGRAMS
[5] I/O ENHANCEMENTS
[6] VARIOUS NEW OBJECTS & CHANGES
[7] BUGS FIXED IN 3.0

 BACK TO INDEX

[1] OVERVIEW

* As of February 1, 1995, HP VXD is introducing the latest version of the VEE programming language. The 3.0 release of VEE brings VEE up to date across all platforms -- UNIX(tm) on S300, S700, and Sun workstations, and Windows on personal computers -- and includes extensive user-interface enhancements.

Changes include:

One thing that the new version does not provide is Plug-&-Play driver capability; this is because the PnP spec is still being refined. A minor revision of VEE will be introduced later when the spec solidifies.

 TOP OF PAGE

[2] NEW VEE USER INTERFACE

* The new VEE user interface is derived from the old -- that is, it isn't a complete rewrite -- but it has been extensively modernized ... for example, all objects have a more MS-Windows-like cosmetic appearance and operation (adding resize borders so you can change the shape of an object with a click-and-drag mouse operation, instead of having to select a menu pick as with previous versions of VEE).

A particular enhancement has been to allow the user to perform VEE configurations interactively that required modifying the VEE.INI file. This is done (primarily) through the "Edit Default Preferences" entry in the VEE "Files" menu; click on this, and you get a dialog box that resembles a tabbed folder:


   +-----------------------------------------------------------+
   |                    Default Preferences                    |
   +-----------+-----------+-----------+-----------+-----------+
   |  General  |  Colors   |   Fonts   |   Number  | Printing  |
   |           +-----------+-----------+-----------+-----------+
   | +- Environment ------------------------------+            |
   | | [x] Auto Line Routing                      |            |
   | | [x] Delete Globals At Prerun               |            |
   | | [ ] Save Default Colors/Fonts with Program |            |
   | +--------------------------------------------+            |
   | +- Debug Animation ------------+ +- Trig Mode ---+        |
   | | <*> Data & Execution Flow    | | <*> Degrees   |        |
   | | < > Data Flow only           | | < > Radians   |        |
   | | < > Execution Flow only      | | < > Gradians  |        |
   | | Data Flow Rate:  [    6    ] | |               |        |
   | +------------------------------+ +---------------+        |
   +-----------------------------------------------------------+
   |   [   OK   ] [  Save  ] [ Reset  ] [ Cancel ] [  Help  ]  |
   +-----------------------------------------------------------+  

This panel of the dialog provides essentially the same option settings as provided by the older "Preferences" menu entry, if in a more concise form. However, you can use the "Colors" panel to set colors for various elements on the VEE display:


   +-----------------------------------------------------------+
   |                    Default Preferences                    |
   +-----------+-----------+-----------+-----------+-----------+
   |  General  |  Colors   |   Fonts   |   Number  | Printing  |
   +-----------+           +-----------+-----------+-----------+
   | +-------------------------------------------------------+ |
   | |       Screen Element  [         Detail View         ] | |
   | |          Color Value: [XXXX] Lightest Gray            | |
   | +-------------------------------------------------------+ |
   |                                                           |  

The "Screen Element" box provides a pull-down list of the various screen elements available; the "Color Value" button pops up a dialog with a palette to allow you to select the desired color for that element. You can also set fonts using the "Fonts" panel:


   +-----------------------------------------------------------+
   |                    Default Preferences                    |
   +-----------+-----------+-----------+-----------+-----------+
   |  General  |  Colors   |   Fonts   |   Number  | Printing  |
   +-----------+-----------+           +-----------+-----------+
   | +-------------------------------------------------------+ |
   | | Screen Element    [       Tool Bar Title Text       ] | |
   | | Font Value:       [             Arial,18            ] | |
   | +-------------------------------------------------------+ |
   |                                                           |  

Again, you can select the "Screen Element" with a pull-down list, and set the "Font Value" with a dialog box ... the dialog allows you to set font type, style (normal, bold, or italic), and font size -- and provides you with a preview sample to allow you to find out if it's a proportional font and so on.

The "Number" panel also provides options settings previously obtained through the "Preferences" menu:


   +-----------------------------------------------------------+
   |                    Default Preferences                    |
   +-----------+-----------+-----------+-----------+-----------+
   |  General  |  Colors   |   Fonts   |   Number  | Printing  |
   +-----------+-----------+-----------+           +-----------+
   | Integer:  [ Decimal  ]                                    |
   | Real:     [ Standard ]   Significant Digits: [  4  ]      |
   |                                                           |  

Finally, the "Printing" panel allows you to specify the grayscale level of elements of a VEE program according to your particular preferences:


   +-----------------------------------------------------------+
   |                    Default Preferences                    |
   +-----------+-----------+-----------+-----------+-----------+
   |  General  |  Colors   |   Fonts   |   Number  | Printing  |
   +-----------+-----------+-----------+-----------+           |
   | +-------------------------------------------------------+ |
   | |  Screen Element:           [       Detail View      ] | |
   | |  B&W Printer Darkness:     [           10%          ] | |
   | +-------------------------------------------------------+ |
   |  Print Magnification:  [  75  ] %                         |
   |                                                           |  

Note that if you refer back to the "General" tab panel in this folder, there is an entry called "Save Default Colors/Fonts with Program". This allows you to define a color scheme and then distribute it with your VEE program to other VEE installations.

This "tab folder" approach is now used for configuring all objects; in general, you can set fonts, colors, icon, and specific properties for that specific instance of an object using the tab folder.

* Other general user-interface changes include:

 TOP OF PAGE

[3] USER INTERFACE OBJECTS

* User-interface objects have been enhanced in the following categories:

* The Toggle button has been generalized to allow it to represent virtually any kind of two-position switch; you can not only select from a variety of useful predefined appearances -- a simple button or check box (its only appearances in previous versions), or Paddle, Rocker, or Slide switches in both vertical and horizontal orientations -- but you can make a custom switch by providing it with two bitmaps, one for the "on" state and one for the "off".

If you select one of the predefined Toggle objects, pull down its object menu, and select its "Edit Properties" menu, you get a tab folder:


   +----------------------------------------------------------------+
   |                       Default Preferences                      |
   +------------+------------+------------+------------+------------+
   |  General   |   Colors   |    Fonts   |   Custom   |    Icon    |
   |            +------------+------------+------------+------------+
   |  Title: [V.Paddle                   ]                          |
   | +- Open View --------+ +- Debug ----------------+              |
   | | [ ] Show Title Bar | | [ ] Breakpoint Enabled |              |
   | | [ ] Show Terminals | |                        |              |
   | +--------------------+ +------------------------+              |
   | +- Format ---+ +- Execution --------+ +- Initialization -----+ |
   | | Button     | | [x] Wait for Input | | Initial Value: [ 0 ] | |
   | | Check Box  | | [ ] (Auto Execute) | | [ ] Init at PreRun   | |
   | | V Paddle   | +--------------------+ | [ ] Init at Activate | |
   | | H Paddle   | +- Layout -----------+ |                      | |
   | | V Rocker   | | [ ] Scaled         | |                      | |
   | | H Rocker   | | [x] Show Caption   | |                      | |
   | | V Slide    | |                    | |                      | |
   | | Hal Slide  | |                    | |                      | |
   | | <Custom>   | |                    | |                      | |
   | +------------+ +--------------------+ +----------------------+ |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+  

Most of the stuff is more-or-less typical of any object menu -- Colors, Fonts, and Icon settings, fields for setting debugging, option, and layout options -- but there are a few special fields in this case. First, you can set the Toggle to "Wait for Input" -- in which case the Toggle will not generate an output until you actually click on it with a mouse. (This new feature applies to all "auto-execute" objects.)

Second, you can select the Toggle style -- Button, Check Box, Paddle, and so on -- which is no big deal since you have access to the different styles from the VEE menu ... except for the "<Custom>" entry, which allows you to build your own Toggle style. Click on this and then select the "Custom" tab in the tab folder and you get:


   +----------------------------------------------------------------+
   |                       Default Preferences                      |
   +------------+------------+------------+------------+------------+
   |  General   |   Colors   |    Fonts   |   Custom   |    Icon    |
   +------------+------------+------------+            +------------+
   | +- On Picture -------------------+- Preview -+                 |
   | | exclam.gif                     |           |                 |
   | +----------------+---------------+           |                 |
   | | (None)         | +-----------+ |           |                 |
   | | arrow.gif      | | Browse... | |     !     |                 |
   | | basic.icn      | +-----------+ |           |                 |
   | | beep.icn       |               |           |                 |
   | +----------------+---------------+-----------+                 |
   | +- Off Picture ------------------+- Preview -+                 |
   | | question.gif                   |           |                 |
   | +----------------+---------------+           |                 |
   | | (None)         | +-----------+ |           |                 |
   | | arrow.gif      | | Browse... | |     ?     |                 |
   | | basic.icn      | +-----------+ |           |                 |
   | | beep.icn       |               |           |                 |
   | +----------------+---------------+-----------+                 |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+  

This panel allows you to select and preview a pair of bitmap files that will be alternately displayed in the Toggle in its On and Off states. The files can be GIF, Windows BMP, or X11 ICN files.

* Previous versions of VEE had a single indicator object -- the Meter; VEE 3.0 provides minor enhancements for this object, such as choice between horizontal or vertical orientation, with the options set by the following dialog box:


   +----------------------------------------------------------------+
   |                        Meter Properties                        |
   +----------------+---------------+---------------+---------------+
   |     General    |    Colors     |     Fonts     |     Icon      |
   |                +---------------+---------------+---------------+
   |  Title: [ Meter                     ]                          |
   | +- Open View ---------+ +- Debug ----------------+             |
   | | [x] Show Title Bar  | | [ ] Breakpoint Enabled |             |
   | | [ ] Show Terminals  | |                        |             |
   | +---------------------+ +------------------------+             |
   | +- Initialization ----+ +- Layout ---------------------------+ |
   | | [x] Clr at PreRun   | | <*> Horizontal [x] Digital Display | |
   | | [x] Clr at Activate | | < > Vertical                       | |
   | +---------------------+ +------------------------------------+ |
   | +- Sub-Range Configuration ----------------------------------+ |
   | | Enable                                       Min     Max   | |
   | | [x]  [RRRR] Warning Red                    [-1   ] [-1   ] | |
   | | [x]  [YYYY] Yellow                         [-0.8 ] [0.8  ] | |
   | | [x]  [GGGG] Green                          [-0.5 ] [0.5  ] | |
   | +------------------------------------------------------------+ |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+  

Unlike the earlier implementation of the Meter object, you not only can set the orientation (and turn off the digital display if you want it to update faster) but you can also select the colors for each of the ranges; click on the defined color on the dialog and you get a dialog to allow you to select the color.

You can programmatically set the Min or Max values of the Meter object; the other attributes are not programmable.

The Meter object was the only indicator object available in previous versions of VEE; VEE 3.0 adds four more: FillBar, Thermometer, Tank, and ColorAlarm.

The FillBar is a simple bar indicator that can be set to provide different colors for three ranges; the Thermometer is just a FillBar with a bulb on the bottom, and the Tank is a fat FillBar. All of them use the same configuration dialog to set their properties, which is similar to that for the Meter:


   +----------------------------------------------------------------+
   |                       FillBar Properties                       |
   +----------------+---------------+---------------+---------------+
   |     General    |    Colors     |     Fonts     |     Icon      |
   |                +---------------+---------------+---------------+
   |  Title: [ Fill Bar                  ]                          |
   | +- Open View ---------+ +- Debug ----------------+             |
   | | [x] Show Title Bar  | | [ ] Breakpoint Enabled |             |
   | | [ ] Show Terminals  | |                        |             |
   | +---------------------+ +------------------------+             |
   | +- Initialization ----+ +- Layout ---------------------------+ |
   | | [x] Clr at PreRun   | | <*> Horizontal [x] Digital Display | |
   | | [x] Clr at Activate | | < > Vertical                       | |
   | +---------------------+ +------------------------------------+ |
   | +- Limits ---------------------------------------+             |
   | | High Color:  [RRRR]  Warning Red               |             |
   | | High Limit:  [ 66     ]                        |             |
   | | Mid Color:   [YYYY]  Yellow                    |             |
   | | Low Limit:   [ 33     ]                        |             |
   | | Low Color:   [GGGG]  Green                     |             |
   | +------------------------------------------------+             |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+  

The major difference is that the range bounds on these three objects are single-ended, while for the Meter there are bounds on both the negative and positive extents of each range. You can set the Min and Max values as well as the High and Low limits programmatically; the other attributes are not programmable.

The ColorAlarm provides essentially an "LED indicator" that changes color (and optionally provides a different text prompt) when the input value crosses into a particular range; it can have a circular or square appearance. The configuration dialog is similar to that of the FillBar except that it allows setting text values for each range and provides different layout options:


   +----------------------------------------------------------------+
   |                      ColorAlarm Properties                     |
   +----------------+---------------+---------------+---------------+
   |     General    |    Colors     |     Fonts     |     Icon      |
   |                +---------------+---------------+---------------+
   |  Title: [ C.A.                      ]                          |
   | +- Open View ---------+ +- Debug ----------------+             |
   | | [x] Show Title Bar  | | [ ] Breakpoint Enabled |             |
   | | [ ] Show Terminals  | |                        |             |
   | +---------------------+ +------------------------+             |
   | +- Initialization ----+ +- Layout ---------------------------+ |
   | | [x] Clr at PreRun   | | < > Rectangle  [x] 3-D Border      | |
   | | [x] Clr at Activate | | <*> Circle     [ ] Digital Display | |
   | +---------------------+ +------------------------------------+ |
   | +- Limits ---------------------------------------------------+ |
   | | High Text:   [ High   ]   High Color:  [RRRR]  Warning Red | |
   | | High Limit:  [ 66     ]                                    | |
   | | Mid Text:    [Mid     ]   Mid Color:   [YYYY]  Yellow      | |
   | | Low Limit:   [ 33     ]                                    | |
   | | Low Text:    [Low     ]   Low Color:   [GGGG]  Green       | |
   | +------------------------------------------------------------+ |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+  

You can programmatically set the High, Mid, and Low limits and text on the Color Alarm object; the other attributes are not programmable.

* The Enum object has also had a facelift in VEE 3.0. In earlier versions, VEE had a single Enum object that could be configured to as a set of "radio buttons", a cyclic list, or simple list. This usage was obscure so the Enum object was renamed as a "Selection Control" and the menu now provides a list for each different configuration: Radio Buttons, Cyclic Button, List, and two new variations -- Drop-Down List and Pop-Up List, which act pretty much as their names imply.

* Two new objects, the Label and Picture objects, help you to build cleaner user interfaces.

The Label object is much like a Text Constant object; it allows you to display a string of text. The distinction is that when you merge a Label object to your Panel View, it doesn't show a border -- the text appears as part of the Panel View.

While you could integrate bitmaps into earlier versions of VEE, they could not be loaded by a program at run-time; you had to integrate them into the program ahead of time. The new Picture object allows a program to load bitmaps at run-time, as well as stretch, size, and tile them.

There's not much to it ... all the properties are set by the Picture object tab folder:


   +----------------------------------------------------------------+
   |                       Picture Properties                       |
   +----------------+---------------+---------------+---------------+
   |     General    |    Colors     |     Fonts     |     Icon      |
   |                +---------------+---------------+---------------+
   |  Title: [ Picture                   ]                          |
   | +- Open View ---------+ +- Debug ----------------+             |
   | | [x] Show Title Bar  | | [ ] Breakpoint Enabled |             |
   | | [ ] Show Terminals  | |                        |             |
   | +---------------------+ +------------------------+             |
   | +- Picture --------------------------+ +- Preview -----------+ |
   | |[(None)                            ]| |                     | |
   | +----------------+  +-------------+  | |                     | |
   | | (None)         |  |  Browse...  |  | |                     | |
   | | arrow.gif      |  +-------------+  | |                     | |
   | | basic.icn      |   <*> Actual      | |                     | |
   | | beep.icn       |   < > Centered    | |                     | |
   | | blank.gif      |   < > Scaled      | |                     | |
   | | build.icn      |   < > Tiled       | |                     | |
   | | bust.gif       |                   | |                     | |
   | +----------------+-------------------+ +---------------------+ |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+  

You can bring out pins to clear the Picture object or load a new bitmap. GIF, X11 icon, and Windows BMP files are supported.

* While you could build popup dialogs in earlier versions of VEE, assembling a dialog by hand was a pain and something better was needed. VEE 3.0 allows you to invoke predefined pop-up dialogs that provide most of input functionality that a VEE user requires -- including the ability to browse through the file system to select files, a capability that was sorely needed in earlier versions of VEE:

The Message Box allows you to pop up standard Windows-style alert dialogs; it is configured with an object with the format:


   +---------------------------------------+
   |              Message Box              |
   +------------------------------+--------+
   | Message  [ User Message    ] |   OK   |
   | Symbol   (i) [ information ] |        |
   | Buttons  [    OK Cancel    ] | Cancel |
   | Default  [       OK        ] |        |
   +------------------------------+--------+  

This object allows you to provide:

The message, symbol, and default button can be set programmatically by bringing out input pins to the object. You can also use the object's "Edit Properties" tab folder dialog to set colors, fonts, and a timeout; setting a timeout adds another output pin. When the object is pinged by a program, it pops up a dialog formatted as specified.

The Text Input, Integer Input, and Real Input dialogs are controlled by objects with some general similarities to the Message box:


   +-----------------------------------------------------+
   |                   Text Input                        |
   +--------------------------------------------+--------+
   | Prompt/Label     [ Enter Text:           ] | Value  |
   | Default Value    [                       ] |        |
   | Value Constraint [ strLen(value) > 0     ] | Cancel |
   | Error Message    [ You must enter text.  ] |        |
   +--------------------------------------------+--------+

   +------------------------------------------------------------------------+
   |                           Integer Input                                |
   +---------------------------------------------------------------+--------+
   | Prompt/Label     [ Enter Integer Value:                     ] | Value  |
   | Default Value    [ 5                                        ] |        |
   | Value Constraint [ 0 <= value AND value <= 10               ] | Cancel |
   | Error Message    [ You must an integer between 0 and 10.    ] |        |
   +---------------------------------------------------------------+--------+

   +------------------------------------------------------------------------+
   |                              Real Input                                |
   +---------------------------------------------------------------+--------+
   | Prompt/Label     [ Enter Real Value:                        ] | Value  |
   | Default Value    [ 5                                        ] |        |
   | Value Constraint [ 0 <= value AND value <= 10               ] | Cancel |
   | Error Message    [ You must a real number between 0 and 10. ] |        |
   +---------------------------------------------------------------+--------+
 
They're a little simpler to configure -- you can specify a prompt, a default value, a value constraint, and an error message (all these values are programmable); they return a value unless the user cancels the dialog or it times out. The "Edit Properties" object tab folder allows you to specify a timeout, change the button labels (the default values are "OK" and "Cancel"), and specify "password masking", which prevents the input from being displayed as it is typed in.

The List Box object allows you to pop up a dialog with a list:


   +----------------------------------------+
   |               List Box                 | 
   +-------------------------------+--------+
   | List Entries       [ Item 1 ] |  Text  |
   | Default Entry      [ Item 1 ] | Index  |
   |                               | Cancel |
   | [ ] Allow Multiple Selections |        |
   +-------------------------------+--------+  

The input fields allow you to specify the list, the default entry from the list, and whether to allow multiple selections from the list; the output consists of the text and array index of the selection (if multiselection has been set, these are both arrays) or a cancel output. You can specify the list array and the index of the default selection as inputs. The "Edit Properties" tab folder allows you to select the number of items to be displayed before the list requires scrolling, a timeout, and custom button labels.

Finally, the File Name Selection box allows you to give the user a standard file browser and get a file name back:


   +---------------------------------------------------------+
   |                  File Name Selection                    |
   +---------------------------------------------+-----------+
   | Prompt/Label           [ Enter File Name: ] | File Name |
   | Initial Directory      [ VEE_USER         ] |           |
   | Initial File/Wildcard  [ *.*              ] |   Cancel  |
   | Select File For:       [      Reading     ] |           |
   +---------------------------------------------+-----------+  

You can specify a prompt, the initial directory, a wildcard pattern, and select for reading or writing; all these features are programmable. The dialog returns a filename or generates a cancel output.

 TOP OF PAGE

[4] KEYBOARD CONTROL OVER VEE PROGRAMS

* VEE 3.0 allows a user to control a VEE program from the keyboard. Programs can be run and controlled via the following control key sequences:


   CTRL-G:    run program
   CTRL-V:    continue
   CTRL-T:    step
   CTRL-C:    stop program  

You can use the Tab key to move around a user interface, skipping from input object to input object; Shift-Tab moves you backwards. You can select a button by pressing the space bar.

The most useful element for building such a user interface is the OK button; not only is its operation more straightforward than other input devices, but it has a special feature that make it suited to the role: you can assign an OK button to a function key, the Enter key, or the Escape key.

You can configure this feature by bringing up the OK button's object menu:


   +----------------------------------------------------------------+
   |                         OK Properties                          |
   +----------------+---------------+---------------+---------------+
   |     General    |    Colors     |     Fonts     |     Icon      |
   |                +---------------+---------------+---------------+
   |  Title: [ OK                        ]                          |
   | +- Open View ---------+ +- Debug ----------------+             |
   | | [x] Show Title Bar  | | [ ] Breakpoint Enabled |             |
   | | [ ] Show Terminals  | |                        |             |
   | +---------------------+ +------------------------+             |
   | +- Function Keys ------------+ +- Panel View Operation ----+   |
   | | [x] Assign to Function Key | | [ ] Assign to [Enter] Key |   |
   | | [           F1           ] | | [ ] Assign to [Esc] Key   |   |
   | +----------------------------+ +---------------------------+   |
   +----------------------------------------------------------------+
   |                [   OK   ] [ Cancel ] [  Help  ]                |
   +----------------------------------------------------------------+ 

You set the appropriate flags to assign a function key, the Enter key, or the Escape key to the button; note that you could in principal assign a function key, the Enter key, and Escape key to the same OK button, though all three don't make much sense; generally you want to assign the Enter key to one (and only one) "default" button (possibly also mapped to a function key), and assign the Escape key to some "emergency" button (also possible mapped to a function key.

The following program demonstrates how to use keyboard input through a set of OK buttons; all it does is allow you to press buttons and get a different text output in an AlphaNumeric display object:


  +-------+
  | Until +--+----------+
  | Break |  |          |
  +-------+  |    +-----+-----+
             | OK | F1: Test1 +-----+
             |    +-----------+     |
             |                      |
             |                   +---+---+
             |              Text | TEST1 +----+
             +----------+        +-------+    |
             |          |                     |
             |    +-----+-----+               |
             | OK | F2: Test2 +------+        |
             |    +-----------+      |        |              +--------------+
             |                       |        |              | AlphaNumeric |
             |                   +---+---+    +-->+-----+    +--------------+
             |              Text | TEST1 +------->| JCT +--->|              |
             +-----------+       +-------+    +-->+-----+    +-------+------+
             |           |                    |                      |
             |    +------+------+             |                  +---+---+
             | OK | F3: GetVal  +--+          |                  | Next  |
             |    +-------------+  |          |                  +-------+
             |                     |          |
             |             +-------+-------+  |
             |             | Integer Input +--+
             |             |  Dialog Box   |
         +---+---+         +---------------+
      OK | Quit  +---+
         +-------+   |
                     |
                 +---+---+
                 | Stop  |
                 +-------+  

All objects whose type is not obvious in the above diagram have their types listed to the left of the object. The four OK buttons are assigned keys as follows:


   [ F1: Test1 ]      F1 function key and Enter key.
   [ F2: Test2 ]      F2 function key and Enter key.
   [ F3: GetVal]      F3 function key and Enter key.
   [ Quit ]           Escape key. 

A panel view for the program can be set up as follows:


   +-----------+  +-----------+  +------------+
   | F1: Test1 |  | F2: Test2 |  | F3: GetVal |
   +-----------+  +-----------+  +------------+
  
                 +--------------+
                 | AlphaNumeric |
                 +--------------+
                 | TEST2        |
                 +--------------+

                     +------+
                     | Quit |
                     +------+  

You can press CTRL-G to run the program, use Tab and Shift-Tab to move among the OK buttons, and select a function with the Space bar. You can select any of the three buttons at top by pressing the appropriate function key; note that F3 selects the "GetVal" function, which pops up a Dialog box to get a numeric input ... you can navigate through the fields of the Dialog box with Tab / Shift-Tab and select a button with the Space bar, just as you do with the rest of the user interface.

If you press Enter, you get the default button, which is "[F1: TEST1]"; if you press the Escape key, you quit the program.

It is recommended that the OK buttons and dialog boxes be used to set up the keyboard-controlled user interface; other input devices can be used, but suffer from a number of limitations:

It is not recommended that you set up multiple threads in programs designed for keyboard control! They can be made to work but getting them to do so is counterproductively tricky.

 TOP OF PAGE

[5] I/O ENHANCEMENTS

* There are several significant I/O enhancements in VEE 3.0:

* One of the most useful VEE 3.0 features is the Multidevice Direct I/O object; this enhances the earlier Direct I/O object by allowing a single transaction object to communicate with multiple instruments.

The Multidevice Direct I/O object looks much like a Direct I/O object until you try to specify a transaction; then you get a dialog like this:


  +-----------------------------------------------------------------------+
  |                          I/O Transaction                              |
  +-----------------------------------------------------------------------+
  | [ WRITE ] [  3478  ] [ Default Address ] [  TEXT  ] [a              ] |
  | [   DEFAULT FORMAT  ] [ EOL ON ]                                      |
  |                                                                       |
  |                                                                       |
  |                    [   OK   ] [  NOP  ] [ Cancel ]                    |
  +-----------------------------------------------------------------------+  

You can click on the instrument field to select another instrument from those you have configured under VEE:


    [ WRITE ] [  3478  ] [ Default Address ] [  TEXT  ] [a              ] 
              +--------+
              | 3478   |
              | 34401  |
              | E1300  |
              | E1326  |
              | 54600  |
              | Serial |
              +--------+  

You can also specify a different address in a transaction if you like:


    [ WRITE ] [  3478  ] [ Address: ] [723  ] [  TEXT  ] [a              ]  

Once you have set up transactions they take the form:


   +-------------------------------------+
   |      MultiDevice Direct I/O         |
   +---+-----------------------------+---+
   |   | WRITE 3478 TEXT A EOL       |   |
   | A | READ 34401: 720 TEXT X REAL | X |
   |   |                             |   |
   +---+-----------------------------+---+  

* Workstation-based versions of VEE now support interprocess communication (IPC) through a new transaction object named To/From Socket. (PC VEE will not support this until after Windows95 is introduced.)

A "socket" is a network connection and is much more convenient than the named-pipe scheme used for IPC in previous versions of VEE. In general terms, it makes a networking connection between two different machines look just like a file, with communications taking place between a "caller" program and a "receiver" program. (Windows users will find the scheme similar to DDE, though sockets are a much more reliable mechanism.)

Socket communications require that the receiver has selected a "port number" -- a more or less arbitrary value in the range of 0 to 65,535 -- through which it can be accessed and is waiting to accept a remote connection. The caller will then try to connect to the receiver through through the receiver's Internet address and the socket number.

Note that I said that port numbers are "more or less arbitrary" ... the reservation in that statement refers to the fact that port numbers between 0 and 1023 are reserved for the operating system, and port numbers from 1023 to 5000 are reserved for commercial purposes. Port numbers above 5000 are open for general use; ports above 5000 are referred to as "transient".

The To/From Socket object allows you to configure both ends of the socket connection; for example, consider transferring a string from an arbitrary caller to a receiver on a host named "hpislmmc" that has bound itself to port number 5001:


   +------------------------------+     +------------------------------+
   |         To/From Socket       |     |         To/From Socket       |
   +--------------------------+---+     +---+--------------------------+
   |[Connect Port][   5001   ]|   |     |   |[  Bind Port ][   5001   ]|
   |  Host Name:  [ hpislmmc ]|   |     |   |  Host Name:  [ hpislmmc ]|
   |   Timeout:   [    60    ]|   |     |   |   Timeout:   [    60    ]|
   +--------------------------+ X |     | A +--------------------------+
   |[WRITE TEXT A STR EOL    ]|   |     |   |[READ TEXT x STR         ]|
   |                          |   |     |   |                          |
   |                          |   |     |   |                          |
   +--------------------------+---+     +---+--------------------------+
              caller                                receiver  

The To/From Socket object allows you specify whether you want to connect to a port (from a caller) or to bind to a port (on a receiver) and specify a transaction timeout as well. Note that there is an EXECUTE transaction that allows you to specifically terminate a connection.

Remember that when you do a "Bind Port" that your VEE program will hang on that object and wait for something to happen (at least for the timeout interval).

* Other I/O enhancements include:

 TOP OF PAGE

[6] VARIOUS NEW OBJECTS & CHANGES

* The following minor enhancements have been added in VEE 3.0:

 TOP OF PAGE

[7] BUGS FIXED IN 3.0

* The following bugs were fixed in 3.0 VEE:

 TOP OF PAGE


 BACK TO INDEX