Jump to content

drjdpowell

Members
  • Posts

    1,964
  • Joined

  • Last visited

  • Days Won

    171

Posts posted by drjdpowell

  1. Here is something that I often have problems with and have no good solution:

    Often I have floating or modal windows, and another modal window opens (either from the VI that is the first window or another async-running component) and the active modal window ends up behind the first window.  Often this second window is the file dialog.  The User ends up unable to click on the active modal window, and unable to move any other LabVIEW window.  They think the application has hung, which effectively it has.

    Really, of course, I want the active modal window (that is blocking the User from all other windows) to always be on top.   How do other people get around this problem?

  2. I've done a 3D-points-cloud type application in the past.  I used SQLite to store and analyse the data, using the RTree feature to store points (the RTree is designed for fast lookup of multi dimensional mapping data).  One can do max/min, mean, std dev, etc user various filter conditions in SQLite much easier than in LabVIEW arrays.

    For display I used the 3D Picture Control.

    Both these techs involve a steep learning curve but are very useful for your type of application.

  3. I have application where the User provides files from another program, which are typically 10 Mb, but with no real limit on their size.  One User managed to generate a 900+ Mb file and caused an out-of-memory condition which caused my app to fail.  Rather than the annoying "Out of memory" dialog that pops up, I would much rather get a standard error that I can handle (by telling the User that file is too big to load and then returning to normal operation).  So I have been trying to think of a way to attempt to allocate a very large string with a graceful way to fail if there is not enough memory.   Has anyone else found a way to do this?

  4. I've had a google and you're right, there are uses of "priority queue" for structures that are not analogous to common meaning of "queue".  Wikipedia even labels a stack with priority as being a "priority queue".  Personally I think this counterproductive when used with frameworks as only a subset of users will know the secret language.  Surely we can use English words with their standard meanings.

  5. 46 minutes ago, ShaunR said:
    1 hour ago, drjdpowell said:

    What is a "framework" but a tried and tested template for design combined with a support library and hopefully some productivity tools and documentation?  

    Exactly, but according to your definition it would be "accidental complexity".

    No, my original claim (that Daklu reacted against) was that a good framework reduces complexity.  Working without a tried and tested...something (could just be a standard way of working that you are very expert in, but a "Framework" adds a library that supports that standard) leads to code that has extra complexity in it.  Often that extra complexity is not obvious, but that's the worst kind of complexity.  A particular bugbear of mine is NI templates like "QMH" and  "Continuous Measurement and Logging" template/example that come with LabVIEW, which you might think are simple.   I consider them very over-complicated.  I've given more than one talk pointing out weaknesses in CM&L.  

  6. I think Daklu meant when your program is more complex than the problem it is solving.  My problem with calling this "accidental" is that it sounds easy to avoid if you're careful, when really it is very hard to avoid lots of extra complexity.  

    An example that comes to mind is shutdown/cleanup code.  A good framework will handle cleanup simply and easily (this is an area I think Messenger Library is strong).

  7. 2 hours ago, Daklu said:

    One of the reasons I don't use frameworks is because they force developers to fit the application into the framework and tend to impose architectural decisions that are better left to the system designer.  The best frameworks (again, IMO) do not impose undesirable architectural decisions on the system designer.

    Yes, I try to do that with "Messenger Library".  Unfortunately, I find that if I stress that it is a library of messaging (with optional "actor" templates) that it gets dismissed as not to be considered when comparing "frameworks", but if I present the whole thing as a "framework", then people assume it is very restrictive.

  8. Here is a beta version, 1.11.0, with changes to TCP Messengers to support the various TCP options about ports and the like.  Also adds a Keep-alive to detect half-open connections.  Bitbucket Issues 26, 27, 33.  I have not had time to do more than a basic test; it would be a help if someone could give it a try.   Note that I've replaced some of the creation VIs for TCP Messengers in the pallette (originals should still work, but I wanted to change VI names).

    drjdpowell_lib_messenging-1_11.0_116.vip

    • Thanks 1
  9. Does your variant have a name?  If it doesn't that's why it's name is "".

    Re attributes, you have to provide a variant containing default values of those attributes.  This is because the JSON doesn't contain the LabVIEW type information (can't tell a string from a timestamp from an enum).  I realize this is not the answer someone who uses variant attributes wants to here.  Personally, though, I use sub-JSON instead of variant attributes, with cluster elements that are strings with the <JSON> tag in its name.

  10. 21 minutes ago, Neil Pate said:

    The one thing that always confused me was writing the actual image to the terminal. If it was purely reference based there would be no need to sequence it as I have done it in my demo.

    Worse, writing the image ref only triggers the need for a refresh of the control; the actual read of the data is asynchronous (like all LabVIEW indicators) and happens a short while later, possibly after the image has been changed.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.