Jump to content

Francois Normandin

Members
  • Content Count

    1,142
  • Joined

  • Last visited

  • Days Won

    31

Francois Normandin last won the day on June 6

Francois Normandin had the most liked content!

Community Reputation

154

1 Follower

About Francois Normandin

  • Rank
    Son of Scotland
  • Birthday 02/26/1975

Profile Information

  • Gender
    Male
  • Location
    Montreal, Canada
  • Interests
    LabVIEW (!!!), Astrophysics, Science-Fiction, Kilts.

LabVIEW Information

  • Version
    LabVIEW 2017
  • Since
    1999

Contact Methods

Recent Profile Visitors

7,995 profile views
  1. Version 1.2.0.6 released. https://github.com/LabVIEW-Open-Source/DataManipulation/releases/tag/1.2.0.6 Added support to return a list of Event reference types (class of event) for Event Registration Refnums Controls, Panes, Splitters, VI References and Application References. Array is empty for all other datatypes. ** Please note that this does not drill into clusters of Event Registration Refnums. This is only one-level deep. I have not tried, but I assume that getting the cluster elements and then looping on those should work...
  2. They show up as Generic Refnums. (0x08) If they are named refnums, they should show up as in this example where "This VI" is the label. You can tell if they are named references by the 0x40 flag. If your events are named, they will show up in the list. The type of event is set in the last long byte in the "First Element" highlighted in green in the screenshot. (xA4 10) xA4 = VI reference, x10 = Key Down. I'll add this support to the OpenDescriptor. That is definitely useful info to get! I'll report here when done.
  3. The ~5% slower Map vs Variant Attributes is consistent with what @altenbach reported in his NI Week presentation, for very large datasets. Since one set is ordered, the other is not, it might be interesting to benchmark the "delete" operation and see if it is symmetrical. My intuition here would be that finding the key and deleting it would be ~5% faster in favor of Maps (for large datasets). Since I rarely deal with large sets, I'm egotistically happy with NI's choice to make those sets and maps ordered.
  4. You can extract the labels from the type descriptor, once you know where to find them in the array. I added support for it in this open source DataManipulation library. Check out the OpenDescriptor palette. You can install the latest release (1.1.0.5) from here: https://github.com/LabVIEW-Open-Source/DataManipulation/releases/tag/1.1.0.5 (download VIP file and install with VIPM). Once installed, you'll find the "List Element Names" method under Addons>DataManipulation>OpenDescriptor palette. (It can list enums and cluster elements as well, although those are natively supported under the Variant Utilities palette.)
  5. I don't have a scoop on that, other than they extended the conference by half a day and there will be a public Engineering Impact Award ceremony (whereas before it was a closed event for the nominees only). I don't know if there are more changes to the formula.
  6. Not sure that's the issue, but lags can sometimes occur because the installed code is not compiled for the current version you're using. If you're using VIPM to install the package, make sure your options are set not to prevent compiling after installation. Alternatively, browse to the installed package folder and force it to mass compile. I've seen this behavior for code that installed under Tools menu (under LabVIEW 20xx/project) which were not compiled, so there was always a lag the first time you load it in memory. Being being installed in a non-write accessible folder, it would cause the same issue the next time you'd open LabVIEW and brought the code back into memory.
  7. I agree with James. That could be achieved through composition and adding an abstraction layer. (Sink and Source in the diagram below)
  8. Bonjour Antoine, I'll take a look at this. Can you tell me which version you've installed?
  9. If you need to track frequency in a noisy realtime environment, I've seen Kalman-based filtering being used. Unfortunately, I don't have an implementation example to provide. NI has this discrete filter in the Control Design and Simulation toolkit... which does not come cheap.
  10. It's been moved to another website: http://vfpsoft.com/aes/aes_home.html
  11. The Message Enqueuer instance is created within Actor.vi and encapsulates the receiving queue of the actor. The Actor launcher does not expose any way to specify a more specific type of message enqueuer, so I'm afraid that even though you wish to extend this class, it is impossible to instantiate it with your child type. The reason the Message Enqueuer does not let you access its private data is that it is specifically meant as a wrapper to prevent anyone from accessing the Priority Queue class. I assume the intent is to make sure you cannot mess with the message delivery principles such as rerouting messages before they arrive at the Actor Core. If it were allowed, it could cause thread safety problems, security issues (possible hacking target) or mess with the #1 feature of actors: trust that messages are processed by the core in the order the messages were enqueued.
  12. Hi Diego, to speed things up, you should consider separating the TCP read and the file writing in two separate loops. For example, if you make two parallel loops: one that reads and adds data to a queue, and a second which reads the queue and writes to file, then you can read multiple datapoints at once and write less frequently to the file. Investigate the use of a Producer-Consumer architecture. I took the liberty of reorganizing your example to demonstrate the concept. I'd probably approach your task where your Python code is the client that publishes data and LabVIEW would act as a server (instead of the other way around), but I wanted to keep with the spirit of your example. Client.vi
  13. to the OP: Be mindful that the "Traverse for GObjects" serves the array in the reverse order from Panel:Controls[] method, probably because of the way it stores the references in the recursion loop. @infinitenothing You're totally right. Tab order it is, with newly created controls added at the end of the list.
  14. The method you invoke on the Panel reference always returns the Controls in the order that they were created. aka. If you delete the second element and create a new one (even with same label), it will be added to the end of the list.
  15. Indeed, not a State Machine... "JKI State Machine Objects" gets its name from the use of "JKI State Machine" as its core "Process.vi", which is not a state machine. It is an Event-driven Queued Message Handler (QMH). State Machine was a misnomer and the name stuck around as it was (still is) a very popular template.
×
×
  • Create New...

Important Information

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