Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Important: OpenVisualizer is sensitive to its directory structure. OpenVisualizer displays any potential errors that a mote may throw over serial or IP. It does this efficiently by scanning the openWSNopenwsn.h file for error codes. The best way to make sure that this setup works, is by simply checking out the entire OpenWSN project from the SVN. Otherwise, please make sure that the following holds:

OpenVisualizer should be placed in: (your openWSN openwsn-sw directory)/software/openvisualizer/bin/openVisualizerGui/

openWSNopenwsn.h should be located in: (your openWSN openwsn-fw directory)/firmware/openos/openwsn/

The OpenVisualizer Window is depicted on the right. By default, the right pannel is closed. The numbers under the graph at the 16-bit short identifiers of the nodes connected via USB to the application. Click on any checkbutton will open the corresponding frame in the right panel. Each of these frames shows the internals of the nodes, including a few button to force it to send an ICMPv6 echo, a UDP or a TCP packet. In each table, the line which was just updated is displayed with a yellow background. The lower-left part of the window contains the errors reported by the nodes.

...

The image to the left shows how the code is organized. Each rectangle represents a file in the OpenVisualizer directory:

  • openVisualizeropenVisualizerGui.py is is the master module. It lists all the connected nodes (either directly through a serial on remotely over a UDP socket) port and, for each, spawns a different execution thread.
  • openSerialmoteProbe.py and openNetwork.py contain  contains the code which is executed by each thread. The former is used when the mote is connected locally through a serialport, the latter when connected remotely through a UDP socket. Whenever data is received from the mote, it is passed along to openRecordParser.py.openRecord
  • Parser.py stores dispatch all the data it receives in a dictionary named recordElements. Everytime the dictionary is updated, openRecordto respective parser module. In case a frame of Status/Error/ErrorCritical is received from the serial port, ParserInfoErrorCritical.py calls the corresponding display* function from openDisplaymoteState.py. In case it receives a request to send data from a mote (see OpenSerialToMote), it asks the correct openSerial.py thread to answer accordingly.openDisplay
  • moteState.py handles handles everything which is related to the graphical user interface. It is solely based on TkInter, the graphical interface which ships by default with Python. A single semaphore is used to arbitrate the access to the graphic elements.
  • sharedopenType.py  lists the variables which need to be accessed by multiple modules, such as the handlers of the different threads.
  • openTranslatorStackDefines.py is is used by openRecordby ParserInfoErrorCritical.py to translate error and status code into human-readable text.

OpenVisualizer Probes

As new feature added as of r707 are OpenVisualizer probes. The idea is that is that the interface can now display status information coming from motes attached to different computers/OpenLBRs. This feature is included in the default OpenLBR configuration (see OpenLbrRunIt).

...

  • .