Jump to content

drjdpowell

Members
  • Posts

    1,969
  • Joined

  • Last visited

  • Days Won

    172

Posts posted by drjdpowell

  1. Anyone an expert in the (complex, poorly-documented) 3D picture control?

     

    I am using Text to label an axis (see image) inside a semitransparent open cylinder (actually a mesh with texture).  The axis (made of boxes) shows up through the cylinder wall, but the Text does not.  See how 7", 8" and 9" show up, but 10" and higher don't.  

     

    I cannot figure out why, or how to fix this.  Any ideas?

     

    post-18176-0-51813500-1426072152.png

  2. Also, when using the explicit variety, does LabVIEW handle cleaning up the control/indicator reference?  It's my understanding that if you create a reference to pass to an implicitly linked property node you need to close it to free up the reference. 

     

    No.  Those are static references that don’t need to be closed (closing them does nothing, so don’t bother closing them).  You can tell if a reference is static by probing it to see if it changes on each call (if it doesn’t, it’s static).

  3. In 8 years, that's the first time I've heard the cluster/array request. It comes in sometimes for DVRs and for VI Server class refnum types, but infrequently enough that NI has never acted on it.

    To be clear: it is doable, there just hasn't been pressure to do it.

     

    I made the request for it to work for Variants, which would include the cluster support CharlesB wants, and also support mixed clusters of objects and primitive types.

  4. I’m afraid the "terminal thralling†(as NI calls it) only works on LVOOP objects directly.  Not even arrays of objects, which is what I would particularly like.


    BTW, “Preserve Run-Time Type" is usually not necessary, as the compiler can trace the object identity through the subVI.  Only if the output type could change, do you consider forcing it not to with â€œPreserve Run-Time Typeâ€.

  5. placement of a fixed maximal number of replicas of the element cluster on FP, and visibility of those needed (will become inconvenient for large numbers); 

     

    This will work with very large numbers of elements, if you keep the full set of data as an array and only write the visible portion of the array into clusters (where there need only be 50 clusters to fill the screen).  Use a separate vertical slider whose Value Changed event triggers a rewrite of a subarray of data into the clusters, complete with disabling selected controls.  One can also change colours or other attributes this way.  

  6. I'm with paul on this one. I think I said this earlier in the thread but my group ran into some of the same issues on a project and ended up in a pretty terrible state, with things like the excel toolkit being pulled onto the cRIO. Careful management of dependencies is pretty easy to ignore in LabVIEW for a while but it bites you in the end.

     

    But these aren’t real dependancies.  "A calls B which calls C†is a dependency of A on C.   “A calls B which is in the same library as X, which calls Y, which is in a library that also has Z, which calls C†is not.  I have no interest in managing false dependancies introduced by lvlibs.  

    • Like 1
  7. Suggestion: can the event structure just compare New Value to Old Value and ignore if they are the same?  That will filter all duplicates.

     

    BTW, if I were doing this from scratch I would have the 3rd party app set a single (hidden) “Message†control, that would be a cluster of desired control name and control value.  The “brat†would pool for new messages and then do Value(signaling) on the named control (which it would lookup in a list created at initialization of all the available controls).

  8. I find myself in this situation a lot, where I have an Actor that inserts itself into a subpanel. I want to look at what's going on in the Actor Core block diagram.

     

    Typically I'd stick a breakpoint there so that the particular Actor clone's BD will pop up. But in that case, the front panel also opens, which very often leads to buggy behavior or errors when the Actor later tries to stick itself into a subpanel.

     

    Anyone have some workaround suggestions for this? I run into the problem a lot and always slug through somehow but I figure someone's got a better procedure.

     

    I (not AF, but similar) set the subpanel option “Allow User to Open Block Diagramâ€.  Then I open the block diagram from the subpanel, once the actor’s FP is loaded into it.   Even when the actor leaves the subpanel the diagram stays open (this is a bit strange, since I have open block diagrams with no front panel open).   Much more convenient that having to use breakpoints.

  9. Hi, Why my software is slow? it need about 1s to insert 10 record. Thanks Boone

     

    Most likely because you are not wrapping your INSERTs in a “BEGIN†and “COMMITâ€, so they are all separate transaction.   Each transaction requires verified writing to disk (to ensure no corruption if the computer losses power), and as hard disks only spin at 50-100 Hz you can only get 10-30 transactions/second.   Execute BEGIN before the INSERTs and COMMIT after, then you have only one transaction.  See the Examples (Search SQLite in the example finder) to see how this is done.

     

    In the latest version of the package (coming out soon) I’ve added “BEGIN†and “COMMIT†subVIs to make this easier.

     

    — James

     

    Note for other readers: this package is now available on the LabVEIW Tools Network as "SQLite Libraryâ€.

  10. I'm using non OO based actors and I don't know the issue you are talking about.  Are you you talking about when one actor will keep the application from closing?  A global shutdown command that is a high priority user event takes care of that for me.  One major reason I dislike the official Actor Framework is the reentrant-ness which forces you to other debugging techniques (setting break points in the VI saving, waiting for a clone to be made and stop, then being unable to remove that breakpoint while running)

     

    I mean the “root loop†needed to do an asynchronous call that is blocked by the User having a menu open.  

     

    I personally have had little problem debugging shared reentrant actors.  I just send them a message to show their front panel.  I can even then add probes and restart the program to observe the startup behavior, as the same clone is always reused.  No breakpoints needed.   But there is a learning curve to this, which I’d rather eliminate by making it possible to have non reentrant actors.

×
×
  • Create New...

Important Information

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