Jump to content

drjdpowell

Members
  • Posts

    1,989
  • Joined

  • Last visited

  • Days Won

    183

Everything posted by drjdpowell

  1. Past versions are all archived on LAVA.
  2. The current LabVIEW version for this JSON package is 2011, but I am considering switching to either 2013 or maybe even 2015. What versions do people need?
  3. How do they manage not to (implicitly, at least) queue up "events" that affect a serial-access resource? Real-world events do have time-ordering (pick up the ball, throw the ball, catch the ball) so I'd be surprised if it would be useful to be agnostic about this. Other LabVIEW features, like parallel calls on non-reentrant subVIs or DVRs, are all implicitly queued.
  4. JKI State Machine “states” are actions that are executed internally by the loop. Unless one deliberately calls the “idle” state, “macros” of states execute in an atomic and isolated manner. That is not the same as sending a set of messages to another process, where you have no control over what other messages are executed intermixed with yours.
  5. If a component doesn’t have a UI (including a “debug UI”), and doesn’t use DAQmx or IMAQdx (which interface with Events), and doesn't have a reason to want multiple incoming message channels (you can’t wait on multiple different Queues like you can with Event-registrations), then I often use a Queue. Though the benefits of using a Queue are, to my mind, very minor even in that case. Queues are slightly faster, and have extra features that I either usually don’t really need or I actively think should never be used with interprocess messages (like enqueuing on front or flushing).
  6. Just an aside, but I almost never use User Events as 1:N. I use both Events and Queues as N:1 message carriers. Each receiver creates the communication method it prefers, preloads any initial messages, and then passes it to the sender(s). For 1:N I use arrays of these Events/Queues.
  7. My two thoughts on this were: 1) is this actually a bug? Having the top end of a range be exclusive is not unusual, I think (if unintuitive at first). and 2) who uses this function? I can’t think of a use case.
  8. Latest version has an improved Object Cyclic Probe that uses XML flattening to display the contained data in arbitrary objects. An example is below, where I am debugging the command pattern in the Cyth SQLite Logger:
  9. Can I see some code? I’m having a hard time understanding because an Error is “something goes wrong” which then needs to be handled. If something has gone wrong with your POST response then you should already have an error, and either you pass that through Read Array.vi or you just leave the Error out of Read Array.vi unwired (since it will return an empty array).
  10. Can you go into why you want this behavior? An empty string is not a JSON value of any kind, so the error seems appropriate. I can see some possible value in accepting null as being equivalent to an empty array or empty object, but why is entering nothing not an error?
  11. Possibly related (if you use ACBR): https://labviewcoder.com/2016/07/06/quick-tip-asynchronously-launching-vis-the-right-way/
  12. It’s at https://bitbucket.org/lavag/json-api-labview now.
  13. The technique works up to 255, but I have yet to summon the effort to do that many cases.
  14. In Messenger Library, under the Utility sub pallet, I have an "Array of Variants to Cluster” VI that will dynamically handle the number of elements (up to 100). Useful in reuse code where you don’t know the specific number of elements.
  15. It’s unclear to me what people in this conversation are meaning by the “server”. If the OP means a LabVIEW program that is serving up data via a created OPC server, then that same program should also be able to connect to other servers via the OPC client VIs.
  16. LabVIEW bug would be my guess, as I don’t think those OpenG VIs use any references.
  17. Experimenting some more. I don’t really like either of my switch designs, as they seem too flat to identify as controllable objects. So I’ve worked on a new one (second from the left, below). This seems “just enough” non-flatness to aid in identifying it as a switch.
  18. Thanks. Is there anything you could suggest to improve things (new examples, for example)?
  19. I don’t think you can meaningfully get a generic system, beyond a straight “front-panel manager” thing that has no concept of anything beyond front panels. You’ve already mentioned specific concepts like “launch” and “done” and assigned Panel Close to meaning some kind of “cleanup” is required. Any implementation of that, however done, will make your framework non-generic. I looked into the VIBox XControl that smithd linked to, and I could not use it because it has specific assumptions and implementations of “stoping” a VI. My own Front Panels that go in subpanels-that-look-like-tabs are a mix of Messenger-Library actors, on the one hand, and subVIs with no internal loop on the other, so no system that assumes Front Panels be “launched” or “done” can ever be generic enough for me to use. Now you COULD do a framework for "actors with one front panel each (not necessarily AF Actors)”.
  20. Can the User even close a VI in a subpanel? What are you wanting an event for?
  21. Do you still have that code?
  22. Nope. Painfully tedious manual steps. Trial and error learning all the weird LabVIEW minutiae. I aint doing this twice.
  23. Here’s a similar set of checkboxes. All very clear, though my latest ones are resizable, which is an advantage if the system one is too small. Google icon one is nice but based on PNGs and not resizable. Trouble with Switches (with checkboxes).vi
  24. I include a radio group with buttons in the package (calling it "Selection Buttons”). It also works well if you use icon decals instead of text. Can’t do the nice borders like in that package, unfortunately. That’s an example of something that (to me) should be a checkbox, since it is part of a form that must be submitted. Part of the reason I chose not to add the ‘X' is that it makes it more like a checkbox: check for true and nothing for false. But that requires the User to learn what the funny circles are, and what “white circle to the left” means.
×
×
  • Create New...

Important Information

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