Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


drjdpowell last won the day on February 19

drjdpowell had the most liked content!

Community Reputation



About drjdpowell

  • Rank
    <customize this text>

Profile Information

  • Gender
  • Location
    Oxford, UK

LabVIEW Information

  • Version
    LabVIEW 2017
  • Since

Contact Methods

Recent Profile Visitors

10,112 profile views
  1. Actually, I missed the "doesn't pause till lower loop is stopped bit"; that can't be a compiler issue (unlike updating the indicator after the breakpoint) so seems to be a bug.
  2. How much of a performance loss would you be prepared to take to fix this bug?
  3. I would guess it is a compiler optimization, where the terminal points to the same memory location as the output tunnel. It is arguable that some breakpoint weirdness is better than the forced memory copies just in case a breakpoint might be added at some point (given the huge number of places a breakpoint could be added). Alternately, it could be something to do with "chunking"; dividing a VI into executable chunks. I wouldn't be surprised if a breakpoint can only pause between chunks. Exiting the loop and writing to the indicator terminal could be one chunk.
  4. Saving your images directly in a binary file would probably be the fastest way to save. Not the best format for long-term storage, but if you only keeping them temporarily so they can be read and compressed later then that doesn't matter. I would first consider your Compression step; can you make that any faster? You only need it 33% faster to get 150 FPS. Is this your own developed compression algorithm? How much CPU does it use when it is running? If only one CPU then there are parallelization options (such as compressing multiple images in parallel). BTW: do you really have 8
  5. Best to state performance numbers in per operation. I assume these are for 5528 images, so the "Drop Table" is 50ms each time? Try eliminating the Drop Table and instead just delete the row. If that works then your remaining dominant step is the 10ms/image for Compression. I think your initial mistake was to go, "Since we want to speed up the process, <we do extra steps and make things extra complicated and in parallel modules in hopes that will be faster>." Better to have said, "Since we want to speed up the process, we will make a simple-as-possible prototype VI that we can b
  6. I would much rather than IMAQ references behaved the same as other LabVIEW references, like Queues.
  7. How to get a list of image buffers? Thanks! That's great.
  8. As a side question, how do people deal with the non-standard way that IMAQ image references work (alway globally named; don't clean up when owning VI goes idle)? For background, I am currently trying to get a large amount of non-reentrant image analysis code to work reentrantly, and have to deal with preventing one clone of a VI modifying an image inadvertently shared with another. I am attacking the problem by auto-generating image names based on call site (ie, a pre-allocate clone that uses its own clone id in the image name):
  9. Is there any way to list all IMAQ images currently in memory? This is as a diagnostic and code check, rather than to actually use this in code.
  10. I note that you haven't given any performance numbers. If I were looking at slow code with four steps, I would have learned how long each step roughly took within a few minutes**. It is not uncommon in such cases for one step to be the bottleneck, taking significantly longer than all the other cases put together. In that case, it does not help to try and do steps in parallel, and you should instead try and improve the performance of that one step. I will withhold any other suggestions, as I think you are possibly just digging a hole for yourself by layering on "performance improvements
  11. It's the inconsistent state that is the problem, where the by-value bit is inconsistent after the by-ref bit is changed in parallel. That doesn't always happen; sometimes either the value or the reference bit never changes. But one needs to be aware of this issue.
  12. In the LAVA-CR is a 1.14.5 version that includes a service-discovery implementation using UDP messages. See the example "Example Reconnecting TCP Client with UDP Service Discovery.vi".
  13. Sets and Maps are 2019, so I'm not sure they can be supported till JSONtext is in 2019.
  14. I'm afraid it uses Malleable VIs that were introduced in 2017, meaning it can't, as a whole at least, be back ported.
  15. Ah, you mean this then: http://json-schema.org/understanding-json-schema/, and you want a function that converts a LabVIEW Cluster/Array to a basic JSON Scheme. That does not exist in JSONtext but could at some point.
  • Create New...

Important Information

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