Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 05/27/2019 in all areas

  1. 9 points
    Hey folks. this year we're trying something new. All Videos for NIWeek 2019 can be found here: https://labviewwiki.org/wiki/NIWeek_2019 Feedback welcome. Thanks to @Mark Balla and other volunteers for recording the videos. Edit: We're starting to add the back catalog to YouTube. NIWeek 2018 videos are also up.
  2. 4 points
    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.)
  3. 3 points
    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...
  4. 2 points
    One possible option with a bad hardware driver is to make your actor an independent exe, using the NetworkMessenger for communication Then you can kill the entire exe and restart cleanly. I've never done that, though.
  5. 2 points
    So I got very excited when I saw that LabVIEW 2019 has a new native map type (aka hash array, associative array, dictionary) and so decided to have a play and see how it compared to my home-rolled LVOOP has array that uses variant attributes and I must admit that I'm slightly underwhelmed.... I've now benchmarked the 2019 native map class and a simple variant attribute by creating maps of 1 million elements of randomly generated 8 byte keys and then reading back 10,000 randomly selected elements and fairly consistently the native map is about an extra 50% slower than the variant attribute for both read and write operations. I'll admit my benchmark code is quite naive, but it's still a little disappointing that there is quite this performance hit.... Can any of the NI folks here comment on the performance - is it just that in fact variant attributes are blazingly fast? I know I shouldn't be churlish and it's really great that 2019 has so many new features and a native map and set type have been long overdue... Edit: and yes I've spotted that the variant type conversion was wired wrong and I should have been generating an array of 10000 I32 not error clusters - but no it doesn't make a significant difference....
  6. 2 points
    No problem, I just want to make sure people know the difference between "Darren the G programmer says _____" and "Darren the NI employee says _____". In my "Don't Wait for LabVIEW R&D... Implement Your Own LabVIEW Features!" presentation, after I clarify that I'm presenting my personal opinion and not an official NI position, I contraindicate XControls because of numerous stability issues I've seen with them in large applications over the years. You can see my slides and watch a recording of the presentation here: http://bit.ly/dnattlvhooks
  7. 2 points
    Have the topics been converted to the lava forum with the same topic id? If so, you can just enter the topic-id in the url and add a - with anything behind it https://lavag.org/topic/1524-anything-you-want works just fine
  8. 1 point
    Thanks. Issue 34 created.
  9. 1 point
    Circular Chart Base A flexible and easy way to create high quality circular charts with features such as anti-aliased and translucence, helps you to deal with the boring and time-consuming drawing details. http://sine.ni.com/nips/cds/view/p/lang/en/nid/217432 Features Chart Types : Supports multiple types of charts, e.g. , pie chart, doughnut chart, polar area chart, circular bar chart, circular slide, graduated gauge chart. Chart Elements : Multiple types of chart elements can be added to the chart, e.g. , legend, scale, grid, slider, digital, decoration. Slice Modes : Three modes for different overlapping and connecting relationships between slices. Customizable : Most properties of chart objects are customizable. Reusing & Sharing : Charts can export images for reporting, and their styles can also be saved as files for reusing and sharing. Quick-Start : Easy to use, and you can quick-start your development based on several build-in styles. How to Use Single Control : The Circular Chart Add-On is ultimately defined as a single control. Chart Styles : Being edited or loaded with different styles, the chart can be presented in the different types listed above, or even more. Style Designer : The chart style is configured by the Chart Style Designer dialog box, which can be displayed through the right-click menu of the chart, similar to the Properties dialog box of the LabVIEW controls. Auto Reload : After configured, the style can be saved into the chart instance in your VI and automatically reloaded the next time. Data Type : The data type of the chart is 2-D array of SGL numeric. Each row of the array corresponds to a slice in turn, and each column corresponds to a slice parameter you specify in the Chart Style Designer, the available slice parameters include start angle, end angle, inner radius, and outer radius. http://sine.ni.com/nips/cds/view/p/lang/en/nid/217432
  10. 1 point
  11. 1 point
    Yes, they are the built-in chart styles of this add-on, and users can modify the properties of these chart styles to get a new style. In addition, users can export images of charts directly from the context menu, without the need for screenshots.
  12. 1 point
    That's too complicated. Just wire the 3 to the Length and leave the Index unwired. Delete From Array will default to deleting from the end.
  13. 1 point
    Yes, I know, you wanted to do this some day too. So I did it for you. Just run (and then stop) the Main VI from the attached set (Saved in LabVIEW 2016 32-bit). I suspect (and hope) the numbers will be quite a surprise and even a shock, especially for the fans of one particular method and some very aggressively promoted frameworks which use that method. Fastest update of indicator from subVI.zip
  14. 1 point
    Of the messaging things plain queues should be the fastest message-oriented option because everything else (I think) is built on top. Notifiers, channels, etc use queues. All these options are pretty quick. >Last I remember reading, user event queues rely on some of the same underlying bits, but the UI-oriented and pub-sub nature of the code makes them a bit slower. Still generally fast enough for anything anyone ever uses them for. >>User events are completely nondeterministic (every option in this category is nondeterministic technically, but user events behave like garbage if you stress them). Property nodes obviously require locking the UI thread and suck, but control indices are sufficiently fast for most anything. If you eliminate the update-oriented part -- just sharing scalar values in other words -- then the fastest would be a global (requires a lock for write but I think the read side doesn't), then a DVR in read-only mode, then a standard DVR or FGV implementation (both need to lock a mutex). These are all faster than the message oriented variations, obviously, but thats because you get less than half the functionality.
  15. 1 point
  16. 1 point
    The link at the bottom will bring you to this page http://www.ni.com/en-us/support/downloads/software-products/download.labview.html#305508 You just have to select 2018 SP1 Patch and click download. This will download the f4 (latest) patch. The en-us version is pretty stable in my experience (except for a few dead links here and there). Can't say much about the others. I'm still surprised they bother to check the associated SSP. Considering that the License Manager checks it anyway.
  17. 1 point
    We're starting to add the back catalog to YouTube. NIWeek 2018 videos are also up.
  18. 1 point
    Hi Max, Recovering from a stuck hardware actor is often impossible, as it is some dll call that is stuck and LabVIEW cannot abort the call. Nor can the dll be reloaded without restarting the entire application. However one still needs to recognise and report the problem. I use the "Timeout Watchdog" recently added to the library. The main actor uses that on the handling of some message that periodically comes from the hardware actor. Now, another unreliable actor is one that handles potentially large blocks of memory. An out-of-memory error will abort the actor, invalidating it's address, and you can use an "Address Watchdog" to notify Main. In that case you probably can restart the actor and recover.
  19. 1 point
    Dr Powell, First of all thank you for developing a dream library (framework), I've been using it for 2 years already. It is incredibly powerful and elegant. There are no words to express my admiration of your work! For couple of days I've been thinking about one scenario: Imagine there are 5 actors, each of them is dedicated to one particular piece of hardware or software component. They are launched by Main actor. Each of 5 actors has a state and it is updated once action is performed. Now, what if one of the actors gets into an infinite loop (or an action that will make it stuck). In this case it won't be able to update it's state. However my Main actor doesn't know about it, it only remembers that the last state of that frozen actor was, for example "good". 1. How to make the Main actor realise that one of its sub-actors is frozen? 2. What to do in this case with a frozen actor? How to restart it? P.S. I've been thinking about using the "Watchdog" actor. Create 5 of them in Main actor and share with subactors. Then inside of subactors constantly reset the Watchdogs. If watchdog wasn't reset, Main actor gets a message. Not sure if this is the most elegant solution. And there is still question 2 left. It would be great if you could share your thoughts about this. Thank you! Kind regards, Max
  20. 1 point
    There doesn't appear to be a native way to do this, but if you write a VIM for this then you should be able to reuse that on any map type.
  21. 1 point
    The official VIs are different implementations. I imagine they're faster, since their implementation is simpler (they just wrap Spreadsheet String to Array and Array to Spreadsheet String). Also the new VIs have the standard connector pane and official icons. You shouldn't have any issue continuing to use the hidden gems if you prefer those.
  22. 1 point
    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.
  23. 1 point
    I would always recommend wiring up the output of the read nodes to an array indicator (outside the sequence so that it has no effect on timing). Compiler optimisations can do weird things when you're not actually wiring up certain outputs. For example, you're not using the data output of the variant but you are of the map. Not saying it explains the differences, but I've seen things like that wildly affect performance in the past. I would look at the code, but I'm currently trying to get 2019 installed in a VM.
  24. 1 point
    Someday, I really would like to take two months off of my main dev job to sit down with the developers of some app that uses all this ref stuff and really tear it apart. I've gone through smaller apps and been able to eliminate most of the references, achieving much better performance -- often with a significant decrease in memory and usually fixing a couple of race conditions along the way! But that's only for small apps, which leaves my theory that the big apps would be better off without the ref aspects as just that: a theory. I don't just need my time... I'd also need the time of the large app's developer(s) to provide the handholding to do the analysis. The work I did with Allen Smith on the AF was this weird moment of downtime for me at NI between two major projects, something that doesn't come around often. Until that next magical gap in my schedule, I'm just going to look at diagrams like the ones above and wince, whispering quietly, "We gotta find a better way..."
  25. 1 point
    PS: ShaunR's new XControl is pretty nifty.
  26. 1 point
    Copy cannot be auto-generated because your object might contain references and the copy routine has to decide whether to share or clone the references. Mikael’s answer is best. Obviously if the parent class doesn’t have a Clone method, then you cannot add one to the child.
  27. 1 point
    I would create a Clone method in the class. If you inherit any classes you need to also use the: "Call Parent Method", so the parent classes attribute will be clones as well.
  28. 1 point
    Screwdrivers are $29.99 though, that's how they get you.
  29. 1 point
    You can use the Index Array primitive function and use the 'index (page)' input to specify which page you want to extract from the 3D array. The example below is by no means efficient because it is not scalable, but it should help illustrate what to do: Extract from 3D Array.vi
  30. 1 point
    I'm pretty sure that you've built your block diagram incorrectly. Just do it right and it will work fine. (Since you didn't provide any code, I can't be more specific than that.)
  31. 1 point
    A LabVIEW programmable PLC for $99 + $59 per I/O module? This shouldn't be an April fool's joke
  32. 1 point
    Maps in LabVIEW 2019?
  33. 1 point
    Great to see the LabVIEW wiki alive and kicking again! Hope to have a bit of time to contribute sometime after NIWeek...
  34. 1 point
    Not quite a meme, but my attempt at an NI style April Fools product announcement (a fake fake product announcement?). See links at the bottom of post for a history of NI's real April 1st jokes. A history of NI's April Fools' courtesy of the Wayback Machine: "National Instruments Announces PC-Based Solution for Matrimonially Inept" (1998) "Spousal Acquisition Toolkit Version 2.0 -- Now Featuring Undo!" (1999) "New MXI Interface Kit for Palm Pilot IIIc" (2000) "President Bush Nominates Jeff Kodosky to Cabinet Post" (2001) "New eIeI/O Software Suite Introduces eFarming" (2002) "New PXI Module Transfers Engineering Knowledge into Marketing Brains" (2003) "National Instruments Releases LabVIEW 7 Espresso" (2004) "Use LabVIEW Graphical Programming to Complete Your Tax Return" (2005) "National Instruments Announces Plans for 'Engineer Barbie'" (2006) "National Instruments Re-Releases LabVIEW 2.0" (2007) "Elementary Students Use NI LabVIEW to Model Impact of Simultaneous Trigger of Rapid Flow Events" (2008) "NI LabVIEW R&D Team Responds to Rumors About Performance-Enhancing Substances" (2009) "National Instruments Develops Cybernetic Leadership Team" (2010) "Time Capsule Captures NI Founders' Technology and Cultural Predictions" (2011) "National Instruments Releases King-Sized Products to Address Big Data Challenges" (2013) "NI Announces New Certification Level: Certified LabVIEW Gladiator" (2014) (Wayback Machine didn't have this one archived. NI pulled it pretty quickly supposedly because people seemed to be taking it seriously) "NI drives time travel with stylish new cRIO module" (2017)
  35. 1 point
    am I doing this right?
  36. 1 point
    Just for others worried about CLA-R, be sure and look into the Recertify by Points, that Fab mentioned earlier. The CLA was so hard and I barely passed and never want to do it again. Luckily I'm certified until 2023, and already have some points towards certifying again. I realize not everyone wants to put in the time into getting points, and some don't have enough time to get them before certification expires. But if you have a local LabVIEW user group in your area you get 5 points for attending and 10 for presenting. You also get 15 points for participating in an NI beta. This means if you participate in 2 LabVIEW betas, and attend 4 user group meetings a year, you'll have enough points to recertify in 2 years. But of course valid criticism of NI's recertification is welcome.
  37. 1 point

    Version 1.0.0

    105 downloads

    There it is. The complete library for the MCP2221A. I2c adapter, I/O in a single IC. I love that one. Let me know if any bug is found. I try to make that library as much convenient as possible to use. Two version available 32 bit and 64 bit. little note: to open by serial number, the enumeration need to be activated on the device first. (open by index, enable the enumeration) It needs to be done only once in the life time of the device. PLEASE do not take ownership of this work since it is not yours. You have it for free, but the credit is still mine... I spent many hours of my life to make it works.
  38. 1 point

    Version 1.3.0

    675 downloads

    Package for working with JSON. Uses high-speed text parsing, rather than building an intermediate representation as with prior LabVIEW JSON libraries (this is much faster). Allows easy working with "subitems" in JSON format, or one can convert to/from LabVIEW types. Uses the new "malleable VIs" of LabVIEW 2017 to convert to any LabVIEW type directly. JSON text makes use of a form a JSON Path notation, allowing easy and rapid access to the subitems of interest. Requires LabVIEW 2017 and install by VIPM 2017 or later. Original conversation about JSONtext. Now on the LabVIEW Tools Network. Copyright 2017 JDP Science Limited
  39. 1 point
    For those who have been playing with malleable VIs, the Type Specialization Structure has probably become a common sight and much abused tool. The basic use of it is that if the action it performs is meaningless given one of the inputs, the included code will break and the next case will be tried. This is great, but sometimes, it can be difficult to think of all possible variants of an action, and in particular, if the action needs to be different for two or more types, but two or more types are compatible with different codes, how to make sure which code will be executed with what type? Enters the Types Must Match function: I found this little gem in... Hidden Gems, within an odd-looking VI which I felt compelled to check out, Debug Write.vim Open its diagram and light will shine, opening grandiose vistas and parallel universes remaining to be explored. Of course, as the comment on the diagram says: "This structure and the type-testing primitive functions it contains are not public LabVIEW features. They are experimental and should not be edited, copied, or used in other VIs without conducting extensive testing. See Context Help for details." Here is the context help for Types Must Match: My apologies if this all well-known among expert users, but I couldn't find it mentioned otherwise on the site...


×
×
  • Create New...

Important Information

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