Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 11/24/2018 in all areas

  1. 11 points
    You know how you can change the wire appearance for a class in the class properties? As it turns out, LabVIEW internally allows for more flexibility than that dialog gives you. So I made an advanced wire editing tool...and unlike a lot of stuff I post, you can actually use this for serious projects, because it does not use any private/unsupported LabVIEW functionality! With this tool, you can set wire size without limits (with results similar to this), customize both wire layers with any 8x8 monochrome pattern, and also mess with different draw options. Strangely, a few of these settings seem to have no effect, and many of the options for one of them actually crash LabVIEW. (These ones are disabled in my tool, but you can re-enable them by editing a typedef.) Given that this is actually a documented, supported property that's officially supposed to work, I've reported this as a bug to NI; if any NI engineers see this and feel like investigating, you can refer to service request #7762024. Latest version: Wire Studio 2.zip Old versions: Revision 1
  2. 7 points
    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
  3. 7 points
    There are a bunch of objects in LabVIEW that aren't exposed in the default palettes, and are normally inaccessible except through scripting. I made a Quick Drop plugin that exposes all of these. Many of these are no longer supported, and others never were supported in the first place. Hidden ones are displayed with an "X" next to them to warn you: as I often say, be careful with these, and don't use them in any code you care about, as they can cause crashes, data corruption, and who knows what else! Download the LLB below and place it in your <LabVIEW install dir>\resource\dialog\QuickDrop\plugins folder. Then press Ctrl+Space, Ctrl+S to open this dialog. Select an item from the list and click OK, and there you go. There's some interesting/strange stuff in here! EDIT: Couple things I forgot to mention. The first time you open this (and whenever you rebuild the list) it uses two private properties on the app reference, to get the list of controls and indicators in the palette. Since this is just a property read, I'm sure the worst that could happen is a crash when you try to open the dialog, but I can't make any guarantees. Also there's some false positives for hidden items, mainly with front panel controls/indicators that come in different styles. Place by Style.llb
  4. 6 points
    I just started down the rabbit hole of making a new XControl recently. Oh man such a pain. Here is a little graph I made complaining about the XControl creation process, and the time needed to make something useful. Any alternative is appreciated.
  5. 5 points
    We'll grow into it eventually 😋
  6. 5 points
    After I made this post I decided to bring the LabVIEW Wiki back online. It was not easy and took several days of server upgrades and hacking. The good news is I was able to bring up all the original pages.. The even better news is I talked with @The Q and @hooovahh and we are all on the same page as to how to move forward. @The Q did a great job of stepping forward and trying to fill the void that the LabVIEW Wiki's absence had left. He's agreed to migrate all the new content he created over to the LabVIEW Wiki, from Fandom and continue to develop new articles and content moving forward on the new site. He will also help in moderating the Wiki and will be promoted to Admin rights on the Wiki. His help is much appreciated. The LabVIEW landing page created here on LAVA is awesome but the forums don't lend themselves to static content creation. Instead @hooovahh has agreed to move the old landing page to here. That will be the new home for the landing page. This will become a valuable resource for the community and I hope all of you start pointing new people in that direction. With many editors, it can only get better and better over time. Where do we go from here: Logging in. - The old accounts are still there. If you're a LAVA old-timer, then you can try to login using your LAVA username. If the password doesn't work then reset it. You can also create a new account here. I'm going to announce a day when new accounts can be created. I'm limiting it for now because of all the spam accounts that can be potentially created. There's an issue with the current Captcha system. if you are super-eager to start creating content now and want to help, send me a direct message on LAVA and I can manually create an account right away. - New account creation is now open. Permitted content: - I'm not going to put restrictions on content at the moment. Obvious vandalism or offensive\illegal content will not be tolerated of course. However, the guidelines will be adjusted as time goes on and new content is created. There's just not enough content right now to be overly concerned about this. We need content. Discussions about the Wiki. - Each article page has an associated discussions page where you can discuss issues related to that article. Please use that mechanism (same etiquette as wikipedia). General Wiki issues\questions and high level discussions can be done here. So now, if you need to add content, you can do it yourself. Feedback as always is welcome.
  7. 5 points
    I think this is a valid comparison: (from https://forums.ni.com/t5/LabVIEW/Global-Variables-Are-Better-than-Functional-Globals-So-There/td-p/1528392/page/5) You are either Novice or Guru 😋
  8. 5 points
    The best thing about a UDP joke is I don't care if you don't get it.
  9. 5 points
    The preference to use init methods instead of non-default class constants is so strong, LabVIEW NXG is planning to never support the feature. Any class constant there will always have only the class’ default value.
  10. 5 points
    I found it! Unfortunately it's deprecated. It takes dotted inputs as either names or ID codes.
  11. 5 points
    Proud to say that lavag.org and labviewwiki.org both get an A rating from an SSL labs security check. Even better than ni.com which is getting a B rating. 😎
  12. 4 points
  13. 4 points
    Writing the notes forced me to watch the videos closely. I'm going to use the notes as a quick-ref whilst getting started and hoped others might have a go if they had them too. Feel free to make changes/fix wrong stuff in whatever way you like - expect you're a busy man. I'm happy to own the doc and expand it given the info. It's written in libreoffice writer, which exports a good pdf. Now looking fwd to cooking up a few actors. LabVIEW_Messenger_Library_-_Programmers_Notes_v1.7.pdf LabVIEW_Messenger_Library_-_Programmers_Notes_v1.7.odt
  14. 3 points
    My first ever meme prompted from this post
  15. 3 points
    NI is bringing 2 NI myRIO devices for Door Prizes.
  16. 3 points
  17. 3 points
    Dating will always be a problem for software engineers.
  18. 3 points
    I agree with James. That could be achieved through composition and adding an abstraction layer. (Sink and Source in the diagram below)
  19. 3 points
    1. Place a control refnum 2. Right-click, Select VI Server Class, Generic, GObject, Control, Pixmap 3. Now it's a "Pixmap Refnum". Right-click again, Show Control 4. Drag the control out. Unfortunately, I first noticed this control in the VI Scripting style ring, where it was labeled as "warning: dangerous" or something like that. But the class isn't marked private, and it can be placed in the manner I described without any kind of warning, so maybe that warning is obsolete and it's been fixed? Then it would probably be in the palette, I guess, but I'm curious to hear what NI has to say. Maybe it's a bug that it can be placed that easily without generating any warnings. :p
  20. 3 points
    Let's take a look inside labview.rsc first... Four of the connector pane patterns actually have names: 4833: "monnie pleaser" 4834: "super monnie pleaser" 4835: "monnie would be pleased-er" 4836: "add supports 2 ddt" I guess this book wasn't lying. Two cursors with rather...interesting names: 64: "order sucker" 65: "order squirter" Someone at NI has a dirty sense of humor 😛 There's some resources that correspond to the style values for VI scripting. Some of them aren't in the style list; unfortunately attempting to use these just gives an error: 2051: "Comment Node" - says "Case" in the data, and gives "Unable to create new object" instead of the usual "object not found" error 2358: "Line of Script" 3902: "Growable Node with Header" 3905: "ExtFuncTerminalTipStrings" - data says "External Function Node", and has names for "path in", "path out", and the standard error in/out terminals 9008: "Select Menu Item" - with all the menu nodes. Looks like at one point they were working on a primitive for programmatically activating menu items. Someone found some hidden structure types a while back. All but one of them didn't work, and that other one is now an official part of LabVIEW. I found the image for the "Race Structure", which I've posted to that thread: There's also this super-minimalist "Alternate Splash Screen": And some monochrome sprite sheets—looks like the old Boolean constant graphics are still there. From what I know about internal VI data structures, I wouldn't be surprised if those were still used if you load a VI created in an old version of LabVIEW. Just thought I'd share. Curious if anyone has seen these before!
  21. 3 points
    Hello everybody! During a few last years I received multiple appeals to release AES library that I developed in 2011 into open-source. So, I've just done exactly this: https://github.com/IgorTitov/LabVIEW-Advanced-Encryption-Standard I released it under MIT license (which means that there are no restrictions whatsoever). No VI passwords, no uglification. LabVIEWishly Yours, Igor Titov.
  22. 3 points
    Loving this central location of organized and searchable LabVIEW knowledge! (Just like LAVA.😁) I've made a couple of small contributions to this so far. Mostly clicking on "Random Article" and reviewing it for typos and broken links. I set somewhat of a personal goal of trying to do this at least once per workday. Every little bit helps, right? Granted, they're not contributions on a grand scale yet, (i.e I'm not creating articles, etc.) but maybe I'll get there. This is my first time contributing to a Wiki of any kind, so I'm a n00b at it.
  23. 3 points
    Does anybody know how to get a LabVIEW built application to ignore the scaling setting in Windows? I have some code designed to fit nicely in 1280x1024 pixels, but some of my customers say that even on a 1920x1080 display the menu bar at the top is cut off. I guess this is probably because their windows scaling is set to some number other than 100%. In my experience LabVIEW looks really rubbish when run on Windows 10 with this setting to anything other than 100% (blurry and inconsistent). I suppose is to be expected from an application like LabVIEW that is approaching retirement age! Am I missing something obvious here? Although I always set my Windows scaling to 100% on all the PCs I control it is not really practical for me to expect ask my clients to change this setting as some of them have probably gotten used to seeing Windows text nice and big at 125 or 150%. Edit 1 I have done quite a bit of googling and not really come across anything LabVIEW specific. The closest I got was some NI KB about LabWindows. Edit 2. Success! https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000004A7eSAE Note a newer Windows update adds a few more options which are now tucked away in a separate dialogue. I have not tried playing around with the other options yet as this fix works fine on my PC. Edit 3. And this is how it can be done programatically: https://blogs.technet.microsoft.com/mspfe/2013/11/21/disabling-dpi-scaling-on-windows-8-1-the-enterprise-way/ (i.e. as part of an installer action)
  24. 3 points
  25. 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
  26. 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.
  27. 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
  28. 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.
  29. 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.
  30. 2 points
    Apollo 13? (It's a NASA saying)
  31. 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.
  32. 2 points
    PS: Did I mention that the design of these things was arcane and bad? Yes? Ok. 'Cause it's true. I have a long list of lessons I hope NXG learns.
  33. 2 points
    XControls work just fine... if you dance with them the way they were intended. *head bang* If you don't want data to be saved, one way is to not put it in the State data. If you only need the data in the facade, add a shift register. But if you need it lots of places, put a global unique ID (GUID) in the XControl's state data, something that never changes after creation, and create an LV-2 style global with a lookup table from the unique ID to the data. You can create GUIDs on any LV OS using: LabVIEW 2017\resource\Framework\Providers\API\mxLvGenerateGuid.vi Changing the state shouldn't cause the VI to need to be saved unless it needs to be saved. So, yes, sure, in the IDE in a directly called VI, yes, changing state dirties the VI. But obviously that doesn't happen in a built app. AND, importantly, it doesn't happen in the IDE for any dynamically loaded VI (unless you are adding the 0x1 flag to track changes, in which case you get what you requested). If you're loading the hosted VI into a subpanel, that means you're working with it by VI Reference. So load it using Open VI Reference (without the flag) and the problem of being prompted to save should go away.
  34. 2 points
    am I doing this right?
  35. 2 points
  36. 2 points
    Short version - you're running a 32 bit process on a 64 bit OS which causes a mess as to how to correctly run LPR. Here are a couple of relevant links: https://knowledgebase.progress.com/articles/Article/Running-OS-COMMAND-LPR-EXE-from-within-32-bit-OpenEdge-the-Procedure-Editor-fails-on-64-bit-Windows https://docs.microsoft.com/en-us/windows/desktop/winprog64/file-system-redirector The first one suggests a solution, although I haven't tried it myself.
  37. 2 points
    Try this. Windows User Login 2017.zip
  38. 2 points
    Why would you need an Open Sourced LabVIEW for something like that? This was possible in the Control editor since LabVIEW 3!!! (Discloser: the Browse button in the Path control was not added before somewhere around version 6 to 8 but the principle worked in LabVIEW 3). 1) Place a path control on your front panel 2) Right click on it and select Advanced->Customize => The path control opens in the control editor 3) Right click on the browse button and select Advanced->Customize => The browse boolean control opens in the control editor 4) Save this as your Browse Boolean.ctl file or whatever you want to call it. 5) Use as you wish and enjoy that it automatically adapts to the platform style for the system you run it on Browse.ctl
  39. 2 points
    Here is a small and borderless picture frame, along with smaller array. https://forums.ni.com/t5/LabVIEW/One-pixel-frame-for-picture-control/m-p/3716581#M1046089
  40. 2 points
    Thanks for the interesting conversation. I've resolved the issue however, in a roundabout way and by cleaning up my code. The UDP communication code in question is a model written in LabVIEW running on VeriStand, which is essentially a bunch of LabVIEW RT timed loops running on a Phar Lap target. So the model essentially opens a UDP connection, sends the message, then closes the connection. This is done at a rate of 50Hz. I changed the code so that it opens the connection at the start of the test and the model just continuously sends the message at the 50Hz rate, then at the end of the test I close the UDP connection. This resolved the issue because now the ARP is not sent anymore, like at all. Well, maybe at the start? But I haven't checked that, so I should do that later. The explanation I can come up with is, I was closing the connection every 20ms, so the OS considered the port closed, so it took that time to do the normal housekeeping of sending the ARP? But since the port was always open to a known IP address (and thus mac ID), it didn't need to do the ARP. I don't know, just my guess. Ok, so bring on the comments about, why I would keep opening and closing the port. Bring it on, I can handle it... 😀
  41. 2 points
    You know the 3D Picture control? I was messing with it and I noticed there wasn't any way to merge objects together except by chaining "Add Object" subVI's, which can be annoying if you have a whole lot of objects. I was thinking it could be a good idea to have a growable node to do it, so I decided to make one. Yes, a simple For loop (perhaps in a subVI) combined with a Build Array node would work just as well—and would really have simplified the code generation if I had thought to do it before—but I like making XNodes, and thought this would be a fun one. And yes, the usual disclaimer about XNodes applies—use it at your own risk; XNodes aren't supported by NI. Merge 3D Objects.zip
  42. 2 points
    I agree. Ben works on making a language safe for references. I work on making a language without references. Our goals are the same: a world where data can be trusted.
  43. 2 points
    Wait, what about the person who already had the name Bryan?
  44. 2 points
    You can also use Quick Drop Replace to replace multiple items at once. Select all the controls you want to replace > Ctrl-Space > Type name of new item > Ctrl-P to replace them all.
  45. 2 points
    Do you have the Desktop Execution Trace utility? The first thing I would do if I had an out-of-memory would be to use this to look for "leaked" references. I once had a failure after 4 weeks of running that was caused by an unclosed .NET reference in a once-a-second loop.
  46. 2 points
    update to this thread: we got it working on the cRIO 9068. See this thread https://sourceforge.net/p/labview-zmq/discussion/general/thread/87780372ed/ for details. Thanks to everyone here and Martijn Jasperse for all your help.
  47. 2 points
    I"m not sure it's conflation only. Many seem to be focused specifically on the fact that LabVIEW GUIs don't look like the latest hyped Office version, which of course will be again different over 2 years when yet another modern style design guide claims that everything needs to be high contrast again, or maybe alpha shaded with psychadelic animations (you need to find reason to sell high end GPUs to spreadsheet jugglers). Your second point is indeed one thing I feel LabVIEW could have made more advances. Dynamic control creation while indeed complicated to get into the dataflow paradigma of LabVIEW would be possible with the VI Server reference model, although it would not be classical dataflow programming anymore for such GUIs at least for the part that you use such dynamic instantiation in. XControls was a badly executed project for an in principle good idea, Splitters are a God send for more dynamic UIs together with Subpanels, but to try to edit splitters once they are placed on a frontpanel really can be an exercise in self control. In doing so I feel the same frustration as when I'm forced to edit some Visio drawings. The editor almost seems to know what you want to do, because it always does the opposite of that, no matter what.
  48. 2 points
    The context help for the "RemoveXnode" method says "Removes the XNode from the diagram. The contents of the diagram of the XNode are merged with the diagram" However if you try it, it may or may not work. That's because this method just calls the "ReplaceSelf" ability; so if an XNode doesn't have a "ReplaceSelf" ability, the "RemoveXnode" method will do nothing. So if you want your XNode to work with the "RemoveXNode" method, you must create a "ReplaceSelf" ability. Fortunately doing so is very trivial: Your ReplaceSelf ability only has to call the "GenerateCode" Ability; like this: Paul Cardinale P.S. Note that the "ReplaceSelf" ability of some NI Xnodes doesn't work properly. For instance if you call "RemoveXNode" on the "Match Regular Expression" function, it will make a mess, breaking the VI.
  49. 2 points
    Maybe it's a new version of the Marshmallow test.
  50. 2 points
    Check out the awesome home page updates that @The Q has made. Huge improvement. I love it! https://labviewwiki.org


×
×
  • Create New...

Important Information

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