-
Posts
1,981 -
Joined
-
Last visited
-
Days Won
183
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by drjdpowell
-
For example, my Interface in JSONtext (if JSONtext were based in 2020 rather than 2017) would just implement "To JSON" and "From JSON" methods, whose default implementations would just use the standard flattening of the class in a JSON string. I've have been holding off implementing this as a parent class because I was waiting for interfaces. Should I just go ahead and make this a Class? Note that a User could not use your Lineator to actually do the conversion to JSON, as they cannot inherit off your Lineator if they are already inherited off my Class. If Interfaces were used, they could use your Lineator to produce JSON inside my JSONtext subVIs.
-
Just top-level parent classes that inherit from LVObject, then? If LVObject gets private data, even an inheritance-based serializer will fail. I haven't looked at your "lineator" in a long time, but I feel there must have been some architectural choices made that other developers may have reasons for making other choices. Thus, there is a need to be able to support more than one type of serializer in the same class hierarchy. Thus interfaces, maybe?
-
I am just starting on trying to be able to use Python code from a LabVIEW application (mostly for some image analysis stuff). This is for a large project where some programmers are more comfortable developing in Python than LabVIEW. I have not done any Python before, and their seem to be a bewildering array of options; many IDE's, Libraries, and Python-LabVIEW connectors. So I was wondering if people who have been using Python with LabVIEW can give their experiences and describe what set of technologies they use.
-
You can add them to classes whose ancestors have no data (such as LVObject). You might have a "Flatten to JSON" interface and a "Flatten to XML" interface and a "Store in My Special Format" interface, and can decide which formats to implement. Inheritance only works once.
-
Q: How to list all IMAQ images in memory
drjdpowell replied to drjdpowell's topic in LabVIEW General
Code for this posted at NI: https://forums.ni.com/t5/JDP-Science-Tools/IMAQ-Images-Monitor/m-p/4131248#M31 -
Q: How to list all IMAQ images in memory
drjdpowell replied to drjdpowell's topic in LabVIEW General
Update: I used the dll call from the link @dadreamer provided, and made a Messenger-Library "actor" that I can use for debugging. Already found a couple of bugs with it. -
I assume you've seen my conversation: https://lavag.org/topic/21651-git-cant-be-this-terrible-what-am-i-doing-wrong/
- 26 replies
-
- source code control
- subversion
-
(and 3 more)
Tagged with:
-
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.
-
How much of a performance loss would you be prepared to take to fix this bug?
-
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.
-
Looking for option to speed up my usage of SQLite
drjdpowell replied to Thang Nguyen's topic in Database and File IO
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-byte pixels? -
Looking for option to speed up my usage of SQLite
drjdpowell replied to Thang Nguyen's topic in Database and File IO
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 benchmark." That prototype would be a simple loop that gets data, compresses, and saves to db. -
Q: How to list all IMAQ images in memory
drjdpowell replied to drjdpowell's topic in LabVIEW General
I would much rather than IMAQ references behaved the same as other LabVIEW references, like Queues. -
Q: How to list all IMAQ images in memory
drjdpowell replied to drjdpowell's topic in LabVIEW General
How to get a list of image buffers? Thanks! That's great. -
Q: How to list all IMAQ images in memory
drjdpowell replied to drjdpowell's topic in LabVIEW General
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): -
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.
-
Looking for option to speed up my usage of SQLite
drjdpowell replied to Thang Nguyen's topic in Database and File IO
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" without measuring performance. **Using the "Quick Timer" from "Cyclic Table Probes". -
Objects Containing References - Discussion
drjdpowell replied to TomOrr0W's topic in Object-Oriented Programming
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. -
Thanks. I have often considered providing a flattening-based implementation for arbitrarily large clusters, but have always paused because of the big step change in performance.
-
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".
-
Sets and Maps are 2019, so I'm not sure they can be supported till JSONtext is in 2019.
-
I'm afraid it uses Malleable VIs that were introduced in 2017, meaning it can't, as a whole at least, be back ported.
-
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.
-
Not sure I understand the question. Can you rephrase it?