Monday, August 1, 2005

Integrated Discrete Event Systems Software

For the latest, visit the DES Lab.

IDES Software

Distribution Package
Source Code

IDES Installation

After the download is complete unzip the package to your C drive. For an alternate installation location, see shortcut notes below.

To run the program, double-click the IDES shortuct IDES Shortcut. You should be able to make copies of this shortcut for your Start Menu, Desktop or TaskBar. This software has only been tested on WinXP and will not run on a non-windows system. You need different dlls (or the equivilant) for different systems.

IDES Shortcut is a windows shortcut file (.lnk) with C:\WINDOWS\system32\javaw.exe -Djava.library.path=C:\IDES\dlls -jar C:\IDES\IDES.jar as its target. This means it invokes javaw.exe with two parameters: -Djava.library.path=C:\IDES\dlls tells it where it should look for the required dll files, and -jar C:\IDES\IDES.jar tells it that the main class is in a jar file at the given location. If you wish to put the package elsewhere on your computer, you'll have to change these parameters.


In this document the words edge and transition are used interchangeably, as are the words node and state.

Java libraries take a long time to load. The first time you run the software, it may take 30 seconds to load. Also note, that the first node you draw, may take 5 seconds to appear. This is caused by loading libraries on demand.

Because of the screen capture process used in making these tutorials, some of the cursors in the images look skewed.


Toolbar Options

New System unloads the current system, letting you start from scratch. If you have made any changes to the current system, you will be prompted to save first.

Open allows you to load a previously saved system.

If you have made any changes to the current system, you will be prompted to save first.

We save the system as a simple text file with the extension "gml". These files do not rigidly follow the GML format. You can open them in a simple text editor like Notepad and modify them if you like.

Save allows you to save the current system to a file.

You will only be prompted for a file name if you are working with a new system, otherwise it will automatically save over the file of the current system.

We save the system as a simple text file with the extension "gml". These files do not rigidly follow the GML format. You can open them in a simple text editor like Notepad and modify them if you like.

Save As... allows you to save the current system to a new file.

You will be prompted for a new file name.

We save the system as a simple text file with the extension "gml". These files do not rigidly follow the GML format. You can open them in a simple text editor like Notepad and modify them if you like.

Export To LaTeX allows you to export a representation of your graph to LaTeX. It requires that you have first specified a "Print Area", and if one is lacking, you will be prompted for it.

Regardless of your system settings, a LaTeX code representation will be printed in the text area inside the "LaTeX Output" tab.

If you have checked the "Export LaTeX directly to EPS" option (from the "Options" menu) then the system will attempt to generate an EPS file which you may include in your LaTeX documents. You will be prompted for a save location for this file.

The following is example code for the inclusion of an EPS file in a LaTeX document scaled by a factor of 0.3:

\documentclass[12pt]{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[scale=0.3]{mygraph.eps}
\end{document}

Export To GIF allows you to save a representation of your graph in the GIF format. It requires that you have first specified a "Print Area", and if one is lacking, you will be prompted for it.

This process is imperfect. The export will fail if the selected "Print Area" is not entirely visible on your screen at the instant you click the export button (i.e. hidden by other windows, scrolled off screen etc.). Also note that in WinXP, you may need to refresh your Windows Explorer view before you are able to open the exported GIF file.

Undo has not been implemented as a real undo. Every five "actions" (loosely defined) the system remembers a snapshot of what you have done. These are saved in the IDES/system folder. Undo therefore does let you back-up, but not ideally.

Redo has not been implemented as a real redo. Every five "actions" (loosely defined) the system remembers a snapshot of what you have done. These are saved in the IDES/system folder. Redo lets you moves forward through these snapshots when you have moved backwards through them using Undo. Note that if you Undo, then make any change (even just clicking on a node) you may lose the ability to Redo.

Copy lets you copy the selected graph elements (which appear drawn in dark red). Note, that regardless of your group of selected elements, edges will only be added to the copied group if both of their nodes are included in the selection. In this software, an edge cannot exist without a starting and ending node.

Paste adds copies to the graph of whatever graph elements you last copied. If you use paste from the main menu, toolbar or CTRL+V shortcut, the new elements will appear centered on the screen. If you use paste from the right-click popup menu, the new elements will appear centered at your click location.

Delete permanently deletes the selected graph elements (which appear drawn in dark red). You will not be warned or prompted for confirmation. If you use this tool accidentally, The Undo tool may assist you, although it will go backwards farther than you last action.

Connect attempts to initialize communication over the COM1 port on your computer. This should always succeed, regardless of whether or not there is any external device attached to COM1. When connected, the button is drawn in a "depressed" mode and reads "Disconnect". You may click it a second time to disconnect.

Trace allows you to initiate an animated trace of transitions in your graph. You must be "connected" in order to initiate a trace. When you initiate a trace, the button is drawn in a "depressed" mode and the start state of your graph becomes highlighted in blue. The system then listens for transitions. When they occur, the blue highlight animates across that transition to the appropriate state. You can stop a trace at any time by clicking the trace button a second time.

The Alpha button is a hack. As described in the trace tutorial below, it allows you to fake the existence of an external device sending transitions to the active trace.

Grid Options controls the "snap to grid" feature. The left half is a toggle button which determines whether the grid should be drawn or not. The right half is a drop down list which determines the scale of the grid. The current grid options are saved and loaded with your system. The last used grid option is remembered for use in any new systems you create. Note that some actions run considerably slower when the grid is visible.

Show All Edges is a program option that is not saved or loaded with your system, but is constant across all systems and is remembered for successive uses of the software. When selected, it causes all edge curves to be drawn in the "modifiable" mode. This can save you time if you intend to customize several edge curves at once, but it becomes very cluttered in complex graphs.

Show All Labels is a program option that is not saved or loaded with your system, but is constant across all systems and is remembered for successive uses of the software. When selected, it causes all edge labels to be drawn in the "modifiable" mode. This can save you time if you intend to customize several edge labels at once. It also clarifies which labels belong to with edges.

Zoom is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

Zoom allows you to zoom in and out five steps in either direction. Left click on the graph to zoom in, and right click on the graph to zoom out. Note that the zoom is centered around the mouse click. The zoom effect causes a repositioning of your graph, you can adjust this using the scrollbars, or the "Move" canvas tool.

Create Nodes or Edges is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

This tool lets you draw nodes and edges in your graph, and it is the default selected startup tool. Please read the "Drawing a Graph" tutorial.

Modify Nodes, Edges or Labels is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

This tool lets you modify the positions and shapes of nodes and edges and labels in your graph. It also lets you specify/edit/create labels. Please read the "Modifying a Graph" tutorial, and the "Dealing with Labels" tutorial.

Print Area is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

This simple tool lets you specify a rectangular print area which is necessary for export to LaTeX and GIF. It is discussed further in the "Simple Tools" tutorial.

Move Graph is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

This allows you to move the entire graph. It is kind of like a permanent scroll bar. Simply left-click, drag and release to move the graph. Note that if you drag the graph off screen, the scrollbars will adjust after you release the mouse button. Also note that this tool drags the grid as well as the graph.


Menu Options

The File menu contains exactly the same options as the File toolbar, except for Exit which shuts down the software. On exit, either by the File menu or by the X at the top right of the window, if you have modified the current system, you will be prompted to save your changes. Note that some of the options in the File menu also have keyboard shortcuts.

The Edit menu contains exactly the same options as the Edit toolbar. Note that some of the options in the Edit menu are also available in various right-click popup menus on the canvas. Note that some of the options in the Edit menu also have keyboard shortcuts.

The Graph Menu contains exactly the same options as the Graph toolbar, except the grid options are only available on the toolbar.

The Options Menu contains system settings. These not saved or loaded with individual graphs, but are constant across the software. They are remembered for successive uses of the software.

Send Error Reports: Regardless of this option, if a crash occurs the error message is printed to the console (if it exists), and is displayed in a popup window. If this option is selected, the software will attempt to spawn an internet browser to the address http://www.aggressivesoftware.com/research/ides/bugs/ (which no longer exists). You can also enter a description of what your were doing when the error occurred. All you have to do to submit the bug report is click the "Add" button at the right of the screen. You do not need to sign in to the webpage to add bug reports.

Use LaTeX for Labels: There are two options for drawing Labels: Glyphs and LaTeX. Glyphs are faster, native to Java and look nicer on the software screen and in exported GIFs. Glyphs only support regular keyboard symbols. LaTeX is slower, requires that you have GhostScript and MiKTeX installed, and look a little ugly on the software screen and in exported GIFs. LaTeX supports all LaTeX commands, so you are able to make much more diverse labels, and it works very well in the export to LaTeX -- meaning that even though it may not look pretty in this software, it will look good in the exported LaTeX. The only current bug with LaTeX labels is with line breaks in Node labels. Because line breaks are not supported in the picture environment, we fake it by breaking up the code and repositioning the fragments, and it doesn't work perfectly.

Draw a border when exporting: If this option is selected, there will be a black border around your exported GIF or EPS. If it is not selected, there will not be a border.

Use standard Node size: Currently node sizes are not customizable. If this is selected, all nodes adjust to the larges node size. This is helpful for symmetry if some of your node labels are larger than others.

The Help menu contains a link to this tutorial, and an message about the version and authors of this software.


Drawing A Graph

When you start the program, the Create Nodes or Edges canvas tool is selected by default. When you click on blank space on the canvas with this tool, a node is created roughly centered about the cursor (not the tip, the whole cursor, every action other than this uses the tip of your cursor). If you have a grid specified (20px is the default) then the origin of the node will snap to the closest grid location.

If you click with the pointer of the cursor inside (over top of) a node, then edge creation begins. When you are in the process of creating or modifying graph objects, they will be drawn in bright red. When creating edges you have two options. You may click-and-release to start the edge, then move your cursor, then click-and-release to finish the edge. Alternatively you may mouse-down to start the edge, then move your cursor, then mouse-up to finish the edge. While you are in mid-creation of the edge, its tail will be at the center of the start node, and its head will be at the tip of your cursor.

To finish the edge creation process, simply click on blank space. Another node will be created and the edge will be joined to it. The new node will be centered at the tip or your cursor.

To speed things up, you may double click on blank space. This both creates a new node and starts a new edge from it. To join an edge to an existing node, simple click with your pointer inside (on top of) the existing node.

This new arc was created by clicking first on the left hand node, then on the right hand node. Edges will attempt to automatically position themselves in a desirable manner. All edges by default travel directly between their source and destination nodes. In this example, the new edge noticed that another node was in the way and did its best to get out of the way. These positioning algorithms are imperfect.

To create a self loop you may start an edge in the usually way and simply choose the same node as the destination. To speed thing up, you may double click on a node to create a self loop.

This tool can also be used to disconnect an edge from a node and reconnect it elsewhere. To disconnect an edge, you must click with the pointer of your cursor on top of the arrowhead of the edge. This causes the edge to revert to the mid-creation state. You cannot disconnect an edge from its tail end; however you can use the right-click menu to reverse the direction of the edge and then disconnect it.

Here we have reconnected the edge to the center node. Note that both edges between the left and center nodes have repositioned to the best of their ability.


The Modify Tool

Since the default layout algorithms are far from perfect, you will need to custom position elements in the graph. The Modify Nodes, Edges or Labels canvas tool allows you to do this. You can mouse-down on a node, drag it around, and mouse-up to reposition it. All the edges connected to the node will adjust with your movement. Note that all elements being modified will paint in bright red.

To adjust edges you must first click on their arrowheads. This selects the edge and causes it to draw its anchors (four green circles). You may click on and drag the anchors to reposition them. The edge will update accordingly. Currently when you move one anchor, its attached anchor may also update. In most cases this makes adjustments easier and faster. In some cases this behaviour can be frustrating. If you're having difficulty with the anchors, try moving the "far-out" anchors closer to their relative nodes.

Once you have custom positioned an edge, later movements of its associated nodes will attempt to maintain your customizations. In some cases this is undesirable. You can use the right-click menu to "reset configuration" of an edge or a group of edges.

Self-loop edges are not fully customizable. You can use its arrowhead or single anchor point to rotate it about its node, nothing more.

The modify tool can also be used to group objects. Grouped objects paint in dark red. Whenever you click on an object, it becomes the active object and paints in dark red. At this point it is the only element in the group. You can hold the CTRL button and click on other objects to add or remove them from the current grouping. You can also mouse-down on blank space and drag the mouse to specify a new grouping.

When you release the mouse button, the bounding box of the group area will shrink to encompass the selected nodes.

When you have created a grouping with a bounding box (rather than creating the group via CTRL+click), you can drag the grouped elements. When you move your mouse over the grouped area the cursor will change to the "move" cursor. You can then mouse-down, drag and release to move all the objects in the selected group. Note that this is very different than using the move tool, and the grouped objects still snap to the grid if one is specified.

When moving the group, all affected objects paint in bright red. Note that the self loop doesn't paint as modified because it is defined at an angle from its source node which is not being changed. External edges connected to the group will update in the usual way, attempting to maintain their specified configurations. Note that you can use CTRL+click to add more nodes and edges to the group, but the bounding box does not change shape, because unselected nodes may exist in the intermediate space. Movement of the group will include all grouped elements, even those outside the bounding box. If you have added an edge to the group without adding either of its nodes, then the edge will not move when you move the group.


The Right-Click Popup Menus

When you right-click on the canvas with any tool except the zoom tool, you will get one of four popup menus. If you right-click on blank space inside the bounding box of a grouped area, you will get a popup with actions that will affect everything in the group.

Snap To Grid will cause all the grouped nodes to snap to the specified grid.

Reset Configuration will cause all edges attached to grouped nodes to revert to their default configurations based on the automatic layout algorithms.

Copy will make copies all grouped objects and store them in the edit buffer. Edges will only be copied if both their start and destination nodes are also in the group. Edges cannot exist in this software without both associated nodes.

Delete will delete all grouped objects. You will not be warned or asked for confirmation. If you make a mistake, the UNDO action can be helpful, but it will go backwards several steps. Note that if you delete a node, all attached edges will also be deleted. Edges cannot exist in this software without both associated nodes.

If you right-click on blank space (not inside a bounding box), you receive a popup menu with all applicable edit options.

Undo has not been implemented as a real undo. Every five "actions" (loosely defined) the system remembers a snapshot of what you have done. These are saved in the IDES/system folder. Undo therefore does let you back-up, but not ideally.

Redo has not been implemented as a real redo. Every five "actions" (loosely defined) the system remembers a snapshot of what you have done. These are saved in the IDES/system folder. Redo lets you moves forward through these snapshots when you have moved backwards through them using Undo. Note that if you Undo, then make any change (even just clicking on a node) you may lose the ability to Redo.

Paste adds copies to the graph of whatever graph elements you last copied. The new elements will appear centered at your click location.

If you right-click on a graph object regardless of whether it is inside a bounding box or not, you will get a popup menu that applies to that object only. The popup menu for nodes is described three slides ahead.

Here we see the popup menu for an edge. Note that we had to right-click on the arrowhead of the edge. Note also that right-clicking does not affect groupings. Before the next slide we left click on the arrowhead of this edge. This causes the grouping to be abandoned and selects the edge.

Now that the edge is selected it is painting its anchors. We can now right-click on any of its anchors to activate the popup menu. If this edge had a label we could also right click on that.

Label This activates the label chooser which can also be activated by double-clicking on the arrowhead or label of the edge. If no edge transitions have been specified, then this menu forwards you to the Graph Specification tab. Labels are described in detail in the next tutorial.

Reset Configuration will cause the edges to revert to its default configurations based on the automatic layout algorithms.

Straighten causes the edge to reconfigure as a straight line.

Arc More causes the edge to increase its arc. This is a primitive feature and doesn't work very well.

Arc Less causes the edge to decrease its arc. This is a primitive feature and doesn't work very well.

Reverse Direction causes the edge to reverse direction.

Delete removes the edge from the graph. You will not be warned or asked for confirmation.

The node popup has four options.

Start State sets this node as the start state of the graph. Only one node can be the start state, if another was previously set as the start state, its setting is revoked. The start state is designated by an incoming arrow symbol. This symbol can be rotated about the node by clicking and dragging it with the modify tool. You can also use this menu to uncheck this option.

Marked State sets or unsets this node as marked. Marked nodes draw with a double line.

Reset Configuration will cause all edges attached to this node to revert to their default configurations based on the automatic layout algorithms.

Delete will delete the node and all attached edges. You will not be warned or asked for confirmation. If you make a mistake, the UNDO action can be helpful, but it will go backwards several steps. Edges cannot exist in this software without both associated nodes.


Dealing With Labels

There are two options for drawing Labels: Glyphs and LaTeX. Glyphs are faster, native to Java and look nicer on the software screen and in exported GIFs. Glyphs only support regular keyboard symbols. LaTeX is slower, requires that you have GhostScript and MiKTeX installed, and look a little ugly on the software screen and in exported GIFs. LaTeX labels supports most LaTeX commands, so you are able to make much more diverse labels, and it works very well in the export to LaTeX -- meaning that even though it may not look pretty in this software, it will look good in the exported LaTeX. The only current bug with LaTeX labels is with line breaks in Node labels. Because line breaks are not supported in the picture environment, we fake it by breaking up the code and repositioning the fragments, and it doesn't work perfectly.

The Use LaTeX for Labels option is selected by default when you first install the software. The first time you run the software, if it can't find the locations of MiKTeX and GhostScript, it will ask you for them. If you cancel out of the dialogue, or give false information, Use LaTeX for Labels will be automatically deselected. We cannot embed LaTeX in the software unless you give us the necessary information.

To add or edit the label for a node, simply double-click the node when the modify tool is selected. This opens a popup window where you may type the text for the node. When you are done, simply click back anywhere on the main window, or hit ENTER. It was our assumption that most labels would be a single line. If you want multiple lines, hold CTRL when you hit ENTER and you will get a new line instead of closing the popup.

In this and the last slide, we have Use LaTeX for Labels deselected and are therefore using glyphs. This means that exactly what you put in the popup text box will appear centered in the node.

Now we switch to LaTeX labels. Notice that the previously specified glyph labels immediately disappear. Glyphs and LaTeX are stored separately and cannot be intermixed. If you switch back to glyphs, your previously specified values will not be forgotten. It is the intention that for any system, you will only use one or the other label types.

The add/edit interface is the same for LaTeX; however, the contents of the popup text box is the LaTeX code, whereas what appears in the graph is the rendered LaTeX. Note that you must use \\ in order to achieve a new line in the rendered LaTeX, but you still use CTRL+ENTER for a new line in the text box.

This is the rendered LaTeX from the previous slide.

Edge labels are very different from node labels. You still have the same glyph/LaTeX options and behaviour, but you must specify transitions in the Graph Specifications tab before you can add labels to edges.

Name, Description, Machine Code and Properties are optional meta-data.

Symbol is the value used for glyph labels. LaTeX is the value used for LaTeX labels. If you are using LaTeX labels, the rendered version of the code will appear to the right of the LaTeX specification, otherwise that area will state that LaTeX rendering is disabled.

To specify transitions, simply enter values into any of the boxes and click "Save As New". To edit existing transitions, click on a row in the table. This will populate the top edit area with the selected data. After making your changes, click "Save Changes".

Once you have specified transitions, it is very easy to specify edge labels. You may use the label option from the edge's right-click menu, or if you have the modify tool selected you may double-click on the arrowhead or on an existing label. All these actions activate the transition chooser popup.

This is simply an array of toggle buttons, as you switch them on and off, the respective values will appear near the edge. When you are finished, simply click anywhere off of the popup chooser.

We have now switched back to glyphs. Notice that the selections in the chooser have not changed. The only difference is that the displayed values are derived from the symbol field in the specifications table, instead of the LaTeX field.

Note that you can reposition the label with the modify tool by clicking on it and dragging it. If you're having trouble repositioning the label, try clicking more centrally on it.


The Simple Tools

Show All Edges is a program option that is not saved or loaded with your system, but is constant across all systems and is remembered for successive uses of the software. It is the second tool from the left, on the second row. Note that it is currently depressed, meaning selected. When selected, it causes all edge curves to be drawn in the "modifiable" mode. This can save you time if you intend to customize several edge curves at once, but it becomes very cluttered in complex graphs.

Show All Labels is a program option that is not saved or loaded with your system, but is constant across all systems and is remembered for successive uses of the software. It is the third tool from the left, on the second row. Note that it is currently depressed, meaning selected. When selected, it causes all edge labels to be drawn in the "modifiable" mode. This can save you time if you intend to customize several edge labels at once. It also clarifies which labels belong to with edges.

Print Area is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph. The print area is necessary for export to GIF or LaTeX. When selected, you can click and drag on the canvas to specify a bounding box for the print area.

Once an area is specified it can be moved. With the print area tool still selected, when you mouse over the print area, the cursor changes to the "move" cursor, and you can click and drag to move the print area.

You can also adjust the bounds of the print area by moving the cursor over the borders. The cursor will change to a directional cursor and you can click and drag to adjust the borders. Note that to get rid of the print area, you can click and release outside of the specified area.

Once a print area is specified, you are able to export to LaTeX and/or GIF. These actions are available on the top toolbar, fifth and sixth from the left, and in the File menu under Export.

The Draw a border when exporting option affects your export. If this option is selected, there will be a black border around your exported GIF or EPS. If it is not selected, there will not be a border. The border would appear exactly where the print area bounds were specified.

When you export to GIF, you will be prompted for a save location. If your graph has a name, the filename will be pre-filled. This process is imperfect. The export will fail if the selected "Print Area" is not entirely visible on your screen at the instant you click the export button (i.e. hidden by other windows, scrolled off screen etc.).

When you export To LaTeX with the "Export LaTeX directly to EPS" option selected, you will be prompted for a save location. If your graph has a name, the filename will be pre-filled.

The following is example code for the inclusion of an EPS file in a LaTeX document scaled by a factor of 0.3:

\documentclass[12pt]{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[scale=0.3]{mygraph.eps}
\end{document}

Regardless of your system settings, a LaTeX code representation will be printed in the text area inside the "LaTeX Output" tab. When you export To LaTeX with the Export LaTeX directly to EPS option not selected, you will be forwarded to this tab. This code is a complete LaTeX document from beginning to end. Note that at the labels are defined at the bottom of the code. For example \put(291,186){hello} renders the string "hello" with the bottom left corner of its bounding box located at (291,186). If you find that some labels are slightly displaced, you can modify them here.

Grid Options controls the "snap to grid" feature. The left half is a toggle button which determines whether the grid should be drawn or not. Note that some actions run considerably slower when the grid is visible.

The right half is a drop down list which determines the scale of the grid. The current grid options are saved and loaded with your system. The last used grid option is remembered for use in any new systems you create.

Move Graph is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

This allows you to move the entire graph. It is kind of like a permanent scroll bar. Simply left-click, drag and release to move the graph. Note that if you drag the graph off screen, the scrollbars will adjust after you release the mouse button. Also note that this tool drags the grid as well as the graph.

Zoom is a canvas tool. Only one canvas tool can be selected at a given time, and it determines what the mouse can do to the graph.

Zoom allows you to zoom in and out five steps in either direction. Left click on the graph to zoom in, and right click on the graph to zoom out.

Left click on the graph to zoom in, and right click on the graph to zoom out. Note that the zoom is centered around the mouse click. The zoom effect causes a repositioning of your graph, you can adjust this using the scrollbars, or the "Move" canvas tool.

Note that you are still able to perform all functions regardless of your current zooming state.


Trace

Trace is a primitive feature that could use a lot of work. It basically allows you to animate a series of events occurring in the system.

In the Graph Specifications tab, you will note that each transition is optionally associated with a machine code. This feature was developed for use with custom external hardware representing a real "plant". The external hardware was designed to transmit single bytes representing events as they occurred in the plant. The bytes were transmitted over a serial cable using the rs232 protocol. Here we may specify which bytes (machine codes) map to which transitions in the graph model. A hack of the trace feature is also available. In the text box at the bottom of the window, one can specify a sequence of machine codes to be "faked". Machine codes must be positive integers, and any sequence specified in the trace text box must be comma delimited with no spaces.

Note that if you actually use this feature with external hardware, the IDES software echoes back any received transition byte that it actually followed in the graph. Hence if the external hardware is designed to prevent any event that is not echoed back by the IDES software, then control is achieved.

Regardless of whether you are using the trace with real hardware, or just the faked string, you must first connect. Connect should succeed whether or not there is hardware attached to COM1. It merely confirms that COM1 exists and is useable. If you design hardware to communicate over COM1, note that the IDES software assumes: 9600 baud, 8 data bits, no parity, 1 stop bit, no flow control. When you connect, it will say "Connected" in the bottom left hand corner of the screen.

The start/stop trace toggle button begins and ends the tracing animation. You must be "connected" to start a trace. There must be a start state defined to start a trace. The trace will start at the start state, highlighting it in blue. When you start a trace, it will say "Trace Started" in the bottom left hand corner of the screen.

Once a trace is started, the software listens to COM1 for incoming transition codes. Any received codes will appear in bottom right hand corner of the screen. If a code is received and there exists an outgoing transition from the current trace node that bears the received transition code, then the trace will animate across that transition, and the code will be echoed back out COM1.

As mentioned earlier, you can fake incoming transition codes using the "Alpha" button. The trace text box in the graph specifications tab can be considered as an integer array. When a trace is started a pointer is initialized to the first element of that array. Each time you click the Alpha button the current element of the array is "faked" and the pointer in incremented.

Machine code 2 representing transition B is the first element of the trace text box in this example. When Alpha is clicked, the trace animates from the start state to the "hello world" state.

During the animation, a beep is sounded. After the animation, "hello world" is the current trace node.

des
{ "loggedin": false, "owner": false, "avatar": "", "render": "nothing", "trackingID": "UA-36983794-1", "description": "", "page": { "blogIds": [ 238 ] }, "domain": "holtstrom.com", "base": "\/michael", "url": "https:\/\/holtstrom.com\/michael\/", "frameworkFiles": "https:\/\/holtstrom.com\/michael\/_framework\/_files.4\/", "commonFiles": "https:\/\/holtstrom.com\/michael\/_common\/_files.3\/", "mediaFiles": "https:\/\/holtstrom.com\/michael\/media\/_files.3\/", "tmdbUrl": "http:\/\/www.themoviedb.org\/", "tmdbPoster": "http:\/\/image.tmdb.org\/t\/p\/w342" }