Hello,

I am working on a software tool for my Masters thesis / project using OpenDX. I am currently going through all the OpenDX documentation (users guide, programming reference, etc.) and examples, and though it is extensive, I am still coming away with uncertainty regarding the best approach to use for my implementation. Before I start any massive coding effort on the visualization portion of the tool, I'd like to solicit some guidance from more experienced users / developers. So here we go....

My situation is the following: I have a tool that is collecting some data, written entirely in C++. I'd like to have this tool be able to send the data to DX (directly via shared memory or a socket, but not a file). This tool does not need to provide any visualization or GUI interface; rather, it only translates my data into data objects for use by DX. Then, I plan to have a separate viewer (different OS thread / main) that will interface with DX and be able to visualize this data concurrently with the data being sent by the above tool. So, to summarize, there are two threads: from one side, DX is receiving data from a tool, and the other side, a viewer is allowing the user to visualize / manipulate the data as it arrives. Obviously, it is ultimately necessary to have the arriving data also sent to a file for off-line visualization, but what I'm trying to stress is that I'd like to visualize data as it is received by DX.

Is this scenario possible? I would imagine it is, but I'm thrown off by the various libraries available (DXlite, DXcallm, DXL), and which to use for the tool->DX connection, and the DX->viewer connection. I parsed and run several DX samples, but still cannot ascertain the best approach. For the tool->DX connection, it seems the DXlite should be used per the programming guide since it is primarily meant to interact with the data model. Does this then allow my viewer to run in a separate thread to visualize this same data as it arrives? For the DX->viewer connection, I have wavered which library (DXcallm or DXL) should be used (#2 below).

Uncertainties / wish list:
1. It would be nice to have the ability for the viewer to connect to DX either via shared memory (faster if viewing on same machine as tool is running) OR socket (for remove viewing).....and to be able to select this at run-time.

2. By using the DXLink library, it looks like any C/C++ code will interface via script commands to DX. Conceptually, this seems slow because of the parsing that must be implemented by DX (versus direct DX library calls to achieve the same functionality). However, I like the idea of DXL because it means I can take advantage of the DX Executive caching, etc. This is in contrast to the DXcallm lib, where I don't get the benefits of the DX Executive, but I have this non-script C++ interface to use. Could really use some guidance on this.

3. On a somewhat unrelated topic, during this process of visualizing while data is received by the viewer, is it possible to remove data points from the data model? In other words, the plan is to have data sent to DX from the tool, which is adding data to the data model (concurrent with visualizing the constantly updated data model).....but is it possible for the tool to also remove data points from the data model as well, without corrupting DX?

4. For the viewer, I am looking at using Trolltech Qt for my GUI interface. I saw an opendx-users from 2003 where Alan Scheinine was attempting this also. I am just saying this as an FYI, since maybe that throws a monkey wrench in the system that I am not aware of. Obviously, I'm planning to use Qt for its clean GUI and internal interfaces, and relatively good GUI builder. Also, if anyone has any advice re: using Qt & DX, I'd appreciate it (as I really only found the two opendx-users posts via Google on the topic).


Again, any guidance or suggestions (or even sample code) would be greatly appreciated. Thanks in advance for taking the time to read all this.

Best Regards,

Matt Genovese
University of Texas at Austin
--

Reply via email to