Jump to content


Popular Content

Showing content with the highest reputation since 04/26/2019 in all areas

  1. 3 points
    NI is bringing 2 NI myRIO devices for Door Prizes.
  2. 2 points
  3. 2 points
    Since the Gingerman is no longer in downtown Austin the a consensus has been formed and many of the LV enthusiast will be meeting at BANGER'S SAUSAGE HOUSE AND BEER GARDEN Sunday evening. This is a few blocks from the convention center opposite direction of 6th street. Most people start arriving around 6:30-7 after dinner. Please come by if you are around Sunday evening. Banger's Sausage House & Beer Garden 79, 81, & 81.5 Rainey St. Austin, TX 78701 https://www.bangersaustin.com/#home
  4. 2 points
    Disclaimer The following details are oversimplified for the sake of clarity. Feel free to point out important details that aren't covered by this post. --- There is a higher chance of finding better results by searching for "labview reference". Here are a few examples. https://labviewwiki.org/w/index.php?search=reference&title=Special%3ASearch&go=Go https://labviewwiki.org/wiki/Control_References http://www.ni.com/example/28769/en/ That said, you should be familiar with the normal data flow in LabVIEW. Data goes from one end of a wire to the other. A branch in the wire will create a copy in memory if either branch of the wire is changed. Loosely speaking, a wire represents the data. A refnum on the other hand doesn't represent the data, but the location of the data in memory (*). It is similar to a pointer in C-like languages. This changes the behavior of the wire Data still goes from one end of a wire to the other. Each branch of a wire receives exactly the same value as the other (no copy is made). (**) In order to access the data you need to make use of Property Nodes, Invoke Nodes and more. The benefit is, that you can access the same value from different places in your program. Even better, this is not limited to controls. It works for controls and indicators, VIs, objects, the project, the whole application and everything. https://labviewwiki.org/wiki/Refnum http://zone.ni.com/reference/en-XX/help/371361R-01/lvconcepts/controlling_front_panel_objects/ However, it doesn't work for variables and due to its nature, race conditions can occur if you don't take care of the execution in your program. This is why for variables there is a more specialized type of reference, the data value reference (DVR). It allows you to access the same variable in memory from different places in your program. http://www.ni.com/product-documentation/9386/en/ There is obviously much more to it than these few points. However, the links above should give you some insight. (*) Here is some information about the memory structure of a refnum. https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019ZT5SAM&l=en-US (**) Technically speaking a copy is still made if you change the "value" on either branch of the wire, but since it is a pointer you shouldn't change it under any circumstances.
  5. 2 points
    It's a conjugation. I think Americans are the biggest perpetrators especially for "setted". They do other funny stuff like leaving out letters and putting dates the wrong way round
  6. 2 points
    I just post something along the lines of "can't find it right now" and usually someone with better organisation than me finds the link. Damn. giving away all my secrets.
  7. 2 points
    Well. I didn't even get one like, let alone 10 points
  8. 2 points
    Start with a control in your template. Get a reference to that control and cast it to VIRefNum. Then call the 'Make Strict Reference' method using a VI reference to the desired VI. Finally, get the Terminal reference of the VIRefNum and invoke the method 'Change to Constant'. The constant winds up in a different location, if you are OCD like I am then read the position of the control terminal before and write that position to the constant after. It is pretty common to have more scripting versatility with a control or indicator than the corresponding constant.
  9. 2 points
    Apollo 13? (It's a NASA saying)
  10. 2 points
    For a Door Prize, I have a LiftMaster MyQ Smart Garage Hub, donated from the Chamberlain Group
  11. 2 points
    Don't use KairosDB if you care for performance, use Cassandra directly. I've been working with it and it's nothing but problems. My advice is to use Cassandra directly and be done with it The first problem with KairosDB is that the documentation is awful. To be fair, Cassandra has some issues there as well though if you do work out how to do things in Cassandra, what it's good at and apply it to appropriate problems then I can't say I really have any reason to complain. Documentation with KairosDB is very vague and confusing about a lot of things such as how do tags work (does a match have to have all of the tags specified or only one), vague about performance and some parts I think might just be wrong. Smells are present in the API itself with things such as rather than using a type for alignment, having strange use of mutually exclusive keys implying type. It's not fast and it doesn't optimise things on top of Cassandra. It makes an effort to do this but it fails. The only thing it might be faster than is CSV or flat files. It's not Cassandra fast. Its query performance in anything but the most trivial of circumstances is absolutely appalling. It makes terrible use of Cassandra and you're liable to be able to do much better. It doesn't fully use indexes and just has one very simple crude schema that tries to do everything (it can't performance wise). It's three tables each with three columns, practically what you get if you search for blogs with tutorials on how to use Cassandra for time series. Almost everything is a blob (a couple are text). Some columns appear unused, they're just noise, junk data. If you use tags it has to scan all the tag values. It takes all the rows from Cassandra for a metric then scans the tags. If you do a query for the temperature over time in New York, it'll load every possible tag combination for the temperature metric from the database. This isn't lightweight either, it has to deserialize all the values using a custom scheme. It'll not only load combinations you don't need but will also load rows up to three weeks worth of tag combinations more than it needs. This isn't even getting at datapoints yet. They binary encode the values making it impossible to use things such as aggregate functions, instead KairosDB is replacing Cassandra for this and reimplementing the wheel. That means it must send every row, every data point back to KairosDB which must then aggregate those data points itself. If you use tags, then you will probably have big problems. If you use a lot of metrics then you might have problems. If you use aggregates or group by then you will probably have big problems. If you want something for very simple cases or where you don't mind terrible performance, instability in some scenarios, losing data (for a long time until it was fixed it was just dropping data), etc but only want ease of use then you might get by with KairosDB but if you're serious about your usage and big data, don't touch it with a barge pole. It also has a lot of problems with junk data. I've found databases 99.99% full of data put there by the KairosDB reporter. After the hell of clearing it all out (Cassandra really isn't really suited to mass deletes), turning off the reporter as the instructions state, it's still populating the database with GB of data. I cleared it all out, when and checked Cassandra to find that just a few days later over half the data was KairosDB's reporting junk. There's an public ticket from IBM about this (oddly they're using H2, not meant for production) you can find with a search and lots of people concerned about read performance which can get pretty bad in KairosDB. Data bloat can get hairy where it also stores all tag values and metric names ever inserted. There's not a brilliant set of strategies available for managing garbage collection of this data. I've implemented my own solution and it doesn't even need to use that table for anything any of my use cases with the exception of being able to know the metrics that are in the system without a full table scan. I replaced the KairosDB daemon with a client in my language that just connects to Cassandra directly, taking KairosDB out of the picture which is on average faster without optimizations. In the cases where it doesn't do as well I'm fairly certain that it's down to quirks in the Cassandra driver for the programming language I'm using. That language is much slower than Java and loses the benefit of not being a daemon, yet it's still faster on average, just porting is enough. Not being a daemon means it can't use resource pools so easily. It's not multi-threaded either but it's still faster. Profiling also seems to point to the Cassandra driver which probably needs a bit of tuning. It's very apparent KairosDB does very poorly at caching despite using a lot of memory and has a very poor ability to expose any opportunity to optimise. When I add a very basic cache for the first phase lookup my script always performs much faster for all of my benchmarks and stress tests. Ultimately I'll need to fix the schema in Cassandra to have full performance but even before then, adding a cache for data points will speed things up a thousand times as well as substantially reduce resource usage. Simply fiddling the queries for one data case will allow it to only fetch the rows it needs in the first stage. If I can use the KairosDB schema better than KairosDB does in a thousand lines of code then why am I using KairosDB at all? If I take it out entirely then I can also create a far better suited schema to my use cases. postgresql (perhaps with timescaledb), MySQL, Cassandra and MongoDB in my experience can all do not too badly for a range of use cases as long as you know their ins and outs, they're relatively flexible. From what I understand (I've only used it a little) things like Graphite will be very specific to certain use cases so you'd need to evaluate it for that. KairosDB suffers a similar problem though it exposes features it just can't handle internally while giving the impression of having at least a few decent features. Others, I don't know anything. If in doubt always check the source code to ensure it's sane and search for disaster stories.
  12. 1 point
    Here are some additional pointers that might be helpful LabVIEW Help : https://zone.ni.com/reference/en-XX/help/371361H-01/lvconcepts/custom_cont_ind_type/ UI Interest Group : https://forums.ni.com/t5/UI-Interest-Group/ct-p/7019?profile.language=en LabVIEW Playlist (see NI LabVIEW UI Tips videos) : https://www.youtube.com/playlist?list=PLE91C12E1A5E62F88 I also found a blog post with pictures that show the general process for customizing controls. https://www.dmcinfo.com/latest-thinking/blog/id/9428/basic-labview-ui-control-customization If you are interested to see what is possible with LV, search for "2016 NIWeek - Designing Advanced User Interfaces in LabVIEW". https://lavag.org/topic/20645-labview-videos-tecnova-download-site/
  13. 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.)
  14. 1 point
    As of the latest Tools Network version, the palettes should also appear in the "Flatten/Unflatten String>>JSONtext" palette, in place of the install link in LabVIEW 2019. It's programmatically added, so let me know if that doesn't work for you.
  15. 1 point
    https://www.ni.com/pdf/manuals/371780r.pdf yay! ๐ŸŽ‰ too bad nxg breaks the code
  16. 1 point
    Maps in LabVIEW 2019?
  17. 1 point
    Greetings Friends of LAVA, colleagues, cohorts, and Wireworkers Extraordinaire -- it's LAVA BBQ time! Date: Tuesday, May 21, 2019 Time: 7:30-10:00 pm Location: Uncle Billy's Brewery and Smokehouse, 1530 Barton Springs Rd, Austin, TX 78704 (1.5 miles from Convention Center) Cost: $25 Early Bird (through April 30th) $30 Regular Admission (through May 20th) $35 Door Price (May 21st) Meal Options: Expect to enjoy your choice of meats (brisket, turkey, ribs) with sides like street corn, cole slaw, and bbq beans. A vegetarian option is available when purchasing tickets. Cash beer bar. Who: Everyone is welcome, including spouses traveling with you. Even if it's your first time, expect to recognize many faces/names from the forums and NI R&D. What to wear: It's a covered, outdoor venue in Austin during Spring, so dress for the weather and comfort. Door Prizes: We will have a drawing to give away prizes. All attendees are eligible and will receive a door prize ticket upon entry. See below about sponsoring a door prize yourself to share the love. Hope to see you there! Chime in once you buy tickets to let everyone know you're coming. ------------>>------------>> Get LAVA BBQ 2019 Tickets Here <<------------<<------------ The venue is a 30 minute walk from the convention center, or a $6 Uber. Get together and carpool, people are typically gathering at Challenge the Champions in the Expo Hall, which is great fun. There is a free parking garage behind the building. We'd love for you to sponsor a door prize - Continue Reading: If you or your company want to sponsor a LAVA BBQ door prize, please post a reply below. You can also include a small blurb about your company and a link to your website in the post below. By donating a prize you and your company will receive a small announcement of your choosing, during the event. We will ask you to write the announcement on a post-it note and will attach it to the prize to be read before awarding it. We love the door prizes, but we love time for socializing too. Here are some guidelines to keep our event balanced and streamlined. Single item donations work best. If donating more than one item, then multiple identical items is strongly preferred. If donating non-tangible items or something that is not physically with you, then please bring a card with your contact info and instructions on how to collect the prize. This will be given to the winner. Donations are typically $25-$200 in value. Not recommended: Apparel (hats, t-shirts, underwear, etc.) - never the right size Software licenses (Toolkits, add-ons, LabVIEW) Branded trade show booth type giveaways (mouse pads, pens, keychains, etc.) Jokes or something meant as a gag and not a real prize
  18. 1 point
    Nope. You may want to extend that courtesy but it isn't required for BSD.
  19. 1 point
    It is open source. It is licensed under BSD, which in layman's terms means you can use it for personal or commercial use, and various attributes must remain in the source, and you can't sue the author (I am not a lawyer). I think the installed location is <user.lib>\_LAVA\VariantProbe
  20. 1 point
    Join us at NIWeek 2019! Contributors of labviewwiki.org, (including future contributors), can add to their ribbon collection by finding an admin during NIWeek or at the LAVA BBQ! See you there!
  21. 1 point
    Great to see the LabVIEW wiki alive and kicking again! Hope to have a bit of time to contribute sometime after NIWeek...
  22. 1 point
    Here is a quick and dirty edit. It allows for column separators to be moved, but I noticed that on resize it will set the column widths. So this means if you manually move the columns, and then resize the control it may change the columns in an unexpected way. But at that point you can manually move the separators again. I only have 2017 and 2018 so this is for 2017 and newer now. Variant_Probe-2.4.3-0.ogp
  23. 1 point
    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
  24. 1 point
    View File UpdateState Illustration I think I've finalized my example for the XNode UpdateState ability. This is a very important ability. Failure to properly manage the update process can have dire consequences. Submitter paul_cardinale Submitted 05/14/2019 Category XNodes LabVIEW Version 2018 License Type BSD (Most common)  
  25. 1 point

    Version 1.0.0


    I think I've finalized my example for the XNode UpdateState ability. This is a very important ability. Failure to properly manage the update process can have dire consequences.
  26. 1 point
    Perhaps this makes it clearer. What you are doing: What you want to do:
  27. 1 point
    The FP control is set to "Include Data Type" if the property node is "strict" and will be a boolean output from the property node. You will see a red cross in the bottom left corner of the control in this state. If "Include Data Type" is unchecked, there will be no cross and the output of the node will be a variant as no type information is defined for the control..
  28. 1 point
    There's a little bit of Rube Goldberg action going on here, but I think I follow what you are trying to do. I'd suggest precalculating what all the values are and put that in a subVI. Then call that subVI and index out the current step that you are on keeping track of it in something like a while loop and a shift register. Attached is a simple example. Have you taken any free LabVIEW training online? Here is some on the LabVIEW Wiki. Ramp Pattern.zip
  29. 1 point
    I should have seen from the original post that you are using the wrong function. The function you described takes an existing share (mapped network drive for example) and resolves the mapping (server name from mapped drive letter, for example). You are looking for the URI for a local file, there is a simple .NET function to do that.
  30. 1 point
  31. 1 point
  32. 1 point
    Thanks Antoine for your workaround to fix the Labview crash after installation of the version on also LV2018 SP1. Your tip just helped me, too. I had Labview crashing also with the previous version installation on LV2015 SP1, there for some reasons it helped to install all required packages package by package with the JKI VIPM. Apart from that recent installation issue the Control class UI Tools addon is a fantastic tool, and we use it frequently. Thanks Franรงois!
  33. 1 point
    It's like real life - overpromised and underdelivered. Now others have to fix it ๐Ÿ˜‹
  34. 1 point
    For the most part I just use Google, and the fragments of memory I have. Someone will post something and I'll be like "That sounds familiar, did I help answer a similar question once?" and I'll search "(topic idea) hooovahh site:lavag.org". Beyond that I do have a list of commonly asked questions that I bookmark. Chrome settings are synced if you are logged in so I have a few folders with common links to various threads that I add to from time to time. Sorry I don't have some super magical RSS tool.
  35. 1 point
    A while loop iterates once everything in the loop has completed. The event structure has a timeout (little blue box in the upper left corner of the structure) that defaults to -1 which is no timeout. So what is going on is the while loop is entered, the input path control is written to the output path indicator, and the event structure waits for something to happen. And waits. And waits. And waits. The while loop never iterates as the first iteration hasn't completed yet. With the probe, unless you have "Retain Wire Values" selected (icon up in the button bar of the block diagram) then the probe can be misleading. If you don't have it selected, the "not executed" really means not-executed-since-you-created-the-probe. Turning on "Retain Wire Values" before you run a VI changes that to a literal meaning.
  36. 1 point
    A Radio-button has a natural interlock mechanism. You can customise the booleans to be regular buttons and also change their positions to get a 2D grid type feel if that is what you want.
  37. 1 point
    You are right, that is the standard way to do it, if you know how many elements to remove. You can also utilize the Common Path returned by the compare function depending on what you need.
  38. 1 point
    It would really be nice to see some code or even like just the concept to see what you're talking about. Have you seen this VI? http://zone.ni.com/reference/en-XX/help/371361P-01/glang/stall_data_flow/
  39. 1 point
    Thanks for your help I will give your suggestions a try I appreciate your concern. I am not teaching lab view It is simply a test bench to develop and test different functions. This is just the main place to select different VI's you want to test is all. Again, i appreciate your help and concerns. I fully agree, im not teaching anyone labview lol im a matlab guy truthfully
  40. 1 point
    network functions have always accepted byte arrays and strings, I dont think this has changed: https://www.ni.com/documentation/en/labview/latest/node-ref/tcp-read/ The string/byte array conversions are in the original link under "working with different encodings" -- the node still exists, you just have to know whether the string is "extended ascii" or unicode: https://www.ni.com/documentation/en/labview/latest/node-ref/byte-array-to-string/ https://www.ni.com/documentation/en/labview/latest/node-ref/string-to-byte-array/ However I dont think this is the problem. I think Lois is conflating item (A) which is that NXG has changed the 'default' encoding for the string data type to be UTF8 with item (B) which is that NXG has removed a lot of meta-programming facilities including (I assume) a dependency of the OpenG data type parsing functionality and (I know) a dependency of every variant to X (xml, json, ini) toolset ever made for this language. It looks like at least some of the necessary components for the openg library do exist, though. To me (A) is a positive change, (B) is a breaking change that makes the language unusable for me until its resolved, and it sounds like at present NI has 0% interest in doing so.
  41. 1 point
    This smells a little bit like an X-Y problem. Can you clarify what you're ultimately trying to accomplish?
  42. 1 point
    @Dataflow_G You should revive this topic ๐Ÿ˜‰
  43. 1 point
    We'll grow into it eventually ๐Ÿ˜‹
  44. 1 point
    I agree with James. That could be achieved through composition and adding an abstraction layer. (Sink and Source in the diagram below)
  45. 1 point
    Could you use an adaptor around the DVM that inherits from the desired abstract classes? That has been my solution to this problem in the past.
  46. 1 point
  47. 1 point
    In case someone needs Jack's code here it is resaved to work on the latest LabVIEW.Robust TCP-IP (LV2016).llb
  48. 1 point



    There it is... finaly... Because the code given in the FTDI web page is not convenient, not working and haven't been developed by real LABview programmer, I decided to create a library for the I2C. a version for SPI will come soon. This library is free to use. If FTDI want's it in ther site, I do not allow you to publish it since you didn't help any of your customer with LABview. but of course feel free to publish this link.
  49. 1 point
    The hallmark of an experienced LabVIEW developer is the usage of their or others templates which prevent the ubiquitous blank block diagram symptom where time is wasted doing the same thing that they have done before. Attached and linked you will find the TLB` (prime) template which, after a little learning what the parts are, can take you from zero to 60 in no time the next time you need to create a Top-Level application or interface. This template can be used from the ultra simple UI to a fairly complex application. Many questions and comments have been made about the original design (TLB) which is located here http://lavag.org/topic/14164-discuss-tlb-top-level-baseline/ This reason for the update in this design is detailed in the presentation "Rebirth of the LabVIEW State Machine" which is accessible here http://lavag.org/topic/16091-ni-week-2012-videos/page__view__findpost__p__97844 Installing and Creating http://screencast.com/t/vtlFgLhQqT Review of Examples http://screencast.com/t/XLIN0yjS Structure of Code http://screencast.com/t/5RtMhPVujS Basic Flow of Operational Code http://screencast.com/t/1QGFRRuSf0nT Adding a control to the system http://screencast.com/t/IJTxEQ28 Adding an action to the system http://screencast.com/t/5984lGlMjM <More to come soon> QSM Evolution.zip Code used in presentation video detailing why the typical QMH is fraught with issues that we have all run into Credit to Daklu for it's creation and sharing ni_tool_tlb`- Most up to date version of TLB` Rebirth of the LabVIEW State Machine.pptx TLB` Application Template.vipc
  50. 1 point
    Norm - this is really cool. I think this part of the last video really hits home and defines the benefits of this design pattern, highlighting why using strings would cause an epic fail. I agree with Shaun in that strings are generally easier to read than integers in a Case Select, but in this case it doesn't really matter - the benefits are huge (you get some readability from the casted type anyways). I can see the benefit of this straight away esp for scripting, and will be adding this to my templates folder. Thanks for posting!

  • Create New...

Important Information

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