Jump to content


Popular Content

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

  1. 6 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
  2. 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.
  3. 5 points
    We'll grow into it eventually 😋
  4. 3 points
    My first ever meme prompted from this post
  5. 3 points
  6. 3 points
    Dating will always be a problem for software engineers.
  7. 2 points
    LV 2019 augments the right-click menus for class wires/terminals to provide a method list you can drop, which should alleviate this issue. I found a way to make the right-click menu plug-in able to add the graphical palette menus and then built a right-click plug-in that builds the method palette on the fly if the class doesn't already have its own default palette.
  8. 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.
  9. 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.
  10. 2 points
    am I doing this right?
  11. 2 points
  12. 2 points
    That's good to hear, I guess I don't need to use this meme.
  13. 2 points
    So, I've gotten word that some of y'all are concerned about me because in the last year, I basically vanished from both the LAVA forums and the NI forums other than the Idea Exchange. One person at the CLA Summit in Europe last week wondered if I'd died. Honestly, I had no idea that I'd dropped my post frequency down so low. What happened was that in May the forums that I monitor exploded with content. This is generally a good thing -- says the community is vibrant. But it meant that I went from having tens of posts in each forum to hundreds of posts, and the deluge overwhelmed me, and I started ignoring the backlog. That's just turned into a natural attrition. I'm going to try to get back to reading (and posting) the forums. I doubt I get back to the high rate of read that I had before -- I've got a lot more internal-to-NI stuff that I deal with on a daily basis these days -- but I intend to get back to posting at least every couple days instead of every couple months. And, just to be clear: no, I'm not dead. :-)
  14. 2 points
    Here's a shortcut menu plugin I wrote that does something I've found myself needing every now and then. You select some objects, right-click, select "Ad-Hoc Scripting", and then it'll open a new VI with pre-populated refnums in a cluster. All selected objects with a label (even a hidden one) will be included in the cluster, as will a refnum to the VI, its panel, and its diagram. Ad-Hoc VI Scripting.llb
  15. 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.
  16. 2 points
    Try this. Windows User Login 2017.zip
  17. 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
  18. 2 points
  19. 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)
  20. 1 point
    That may be a while - but the package file itself in the top of the thread.... Edit: Thinking about, because I'm dependent on the ZMQ bindings which are not available on the NI Tools network, I'm not sure I can put this package (and the SHA-256) library on the NI Tools network either - so it will always need to be installed from manually downloaded vipm files.
  21. 1 point
    Ok, bit of Easter holiday coding today. Version 1.1.0 should allow connections to remote and already running kernels (well it does for me), and will only issue kernel shutdown messages if it started the kernel itself. To connect to a remote kernel, you can either manually fill in a cluster of port numbers etc, or simply paste the json from the connection file or (if you have an existing front end to the kernel) do: from ipykernel.connect import get_connection_info print(get_connection_info()) If starting kernels on another machine, remember to tell them to bind to an IP address that isn't localhost e.g. ipython kernel --ip=u.x.y.z and make sure the firewall will let the ports through.
  22. 1 point
    There is a private method called 'User Interaction:Compare VIs XML' which is able to compare VIs and generate an HTML report. I didn't test it too thoroughly but I think it's worth looking at. I currently do not have LabVIEW 2012 and do not know if it is available in this version. Compare_Private_17.vi Compare_Private_12.vi
  23. 1 point
    I mostly post these over on Twitter, but here's some LabVIEW memes I've made: LabVIEW Style Checklist: "Size the block diagram window no larger than the screen size." Me: ✅
  24. 1 point
    Not the words I would've used There has to be a meme that can link GoT and NI inter-departmental politics.
  25. 1 point
    To provide the obligatory quote... " It just so happens that your friend here is only MOSTLY dead. There's a big difference between mostly dead and all dead. Mostly dead is slightly alive. With all dead, well, with all dead there's usually only one thing you can do. Go through his clothes and look for loose change. "
  26. 1 point
    Are there plans to fix all the bugs? I've just spent a month writing two xcontrols and all that was mainly finding workarounds to the bugs (and I still don't know why some of the work-arounds actually work)
  27. 1 point
    There are multiple ways actually. Here are a few that come to mind: Let it run faster by adjusting the code inside the loop accordingly Split it into multiple loops to utilize more cores of your CPU Buy a faster computer Note that there is a limit to how many concurrent threads LV supports: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000PARmSAO&l=en-US The maximum speed of a while loop is only limited by the speed of your CPU at 100% load (and of course the way your operating system shares the CPU between processes and threads). That is assuming your loop does nothing, which makes it pretty useless. Of course, if your computer has multiple cores, you can run multiple loops in parallel to make use of them. This is contradictory to your first statement. I suppose you mean to increase the loop speed, right? If your code is simple, it should be easy to optimize for speed or to run multiple instances concurrently if applicable.
  28. 1 point
    In the compiler doc here (https://www.ni.com/tutorial/11472/en/) theres mention of a yieldIfNeeded block which is inserted into loops which allows for coordination with the rest of the runtime. If you just have the one while loop, you are still having to check against the runtime engine if you should keep running or if you need to pause and let other code run. Its not just a simple jump. tl;dr I dont think there is any way to do this with a regular loop. A timed loop may work. The overhead should be minimal compared to any actual code you wish to run in the loop, and if that isn't true labview is probably not the tool for the job.
  29. 1 point
    The being simple doesn't mean it's going to execute fast, I think there is more to optimise in the code inside the loop than anything else. That said, one thing that might help (again depending on what's in the loop) is to change the while loop for a timed loop to which you can give the highest priority. Also if you have some NI Hardware available you could use the clock as the reference for the loop, but that would probably improve jitter more than raw speed.
  30. 1 point
    Since it is just a raw printer commands file, you can do the following (I have done it in the past with Zebra and TSC label printers): 1. Share the printer. On Windows, its Printer properties, sharing and create a share. 2. Test by running the following command: copy <filename> \\<hostname>\<sharename> . You can use localhost, if it is on the local PC. 3. In Labview, use the .NET Copy command, as LV copy doesn't support local shares for some reason.
  31. 1 point
    Setting "Verify" to false just turns off the certificate check so that any old certificate is accepted without error. This is of course a security risk and should never be used outside of development. IIRC. The LabVIEW HTTP functions use cURL and the "ca-bundle.crt" located in \National Instruments\Shared\nicurl. It contains the certificates of the Authorities. Adding the servers' certificate or the servers' trusted root certificate to that list once you have ascertained the certificate is correct for that website; is the recommended procedure for adding ad-hoc certificates (thus keeping "Verify" = True).
  32. 1 point
    Daisy-chained / multi-dropped RS485 with a master-slave protocol? If you need an example of how that can be done in LabVIEW you can look at this one which is based on one of the industry-standard protocols for such communication - Modbus :
  33. 1 point
    What is your topology? Is it a single RS485 link per slave, or are they on the same bus? If they are on the same bus, you will have to think of the communication protocol, is it token based, is it CSMA/CD? That is up to you, as the designer.
  34. 1 point
    I'm curious; what's the use case you have?
  35. 1 point
    You will likely need a write (to request the data) and a read (to get the data) for each slave.
  36. 1 point
    What type of serial communication are you using? RS232, RS485, RS422, I2C, SPI, ETC? The type you are using will determine whether it's physically possible to have multiple masters/slaves on the same connection. If you're using a compatible serial connection, yes... LabVIEW can do what you're asking. As far as how... there are already lots of examples built into LabVIEW and on the internet.
  37. 1 point
    It is possible. You have to write VIs.
  38. 1 point
    View File Plasmionique Modbus Master This package contains an open source Modbus master library for LabVIEW. It has been developed by Plasmionique Inc. as a replacement for NI Modbus V1.2.1 and provide an open source alternative to the NI Modbus Community API. It supports RTU, ASCII and TCP modes with the following function codes: 0x01 - Read Coils 0x02 - Read Discrete Inputs 0x03 - Read Holding Registers 0x04 - Read Input Registers 0x05 - Write Single Coil 0x06 - Write Single Register 0x07 - Read Exception Status 0x0F - Write Multiple Coils 0x10 - Write Multiple Registers 0x16 - Mask Write Register 0x17 - Read/Write Multiple Registers 0x2B/0x0E - Read Device Identification Additional Features: Built-in resource locking simplifies the sharing of a serial port with multiple Modbus slaves or sharing a Modbus session across multiple threads. Examples are included in "<LabVIEW>\examples\Plasmionique\MB Master\": MB_Master Comm Tester.vi: Demonstrates usage of API to open/close connection and communicate with a Modbus slave device. MB_Master Multiple Sessions.vi: Demonstrates usage of API to open concurrent Modbus sessions. MB_Master Simple Serial.vi: Demonstrates polling of a single input register over serial line. User guide is included in "<LabVIEW>\help\Plasmionique\MB_Master - User Guide.pdf". Modbus COMM tester can be opened from the tools menu under "Tools -> Plasmionique -> Modbus COMM Tester..." Download a copy of the user guide here: MB_Master - User Guide.pdf Note that Version 1.3.4 of this library has been certified compatible with LabVIEW and has been released on the LabVIEW Tools Network: http://sine.ni.com/nips/cds/view/p/lang/en/nid/214230 The most recent version of this library will always be released on LAVA first before going through NI's certification process. ***This project is now available on GitHub: https://github.com/rfporter/Modbus-Master Submitter Porter Submitted 04/01/2016 Category LabVIEW Tools Network Certified LabVIEW Version  
  39. 1 point
    Well to be honest LLVM won't be able to process a header file that references other header files with declarations that are used in your header without access to them. It needs access to those referenced headers somehow too and I doubt it comes preinstalled with all Mac OS X, Windows SDK, etc. etc. headers so you end up installing them somehow to your disk too and pointing LLVM to them. The import library wizard has internally this informations too, but once you start going down the path of creating the wrappers with such advanced functionality through scripting you end up in hell. There is simply no way such a "Wizard" can really know how the different information in such structures may or may not interact with each other and with other things in the API so you end up with a overly complicated interface that is very difficult to understand and allows you to still do lots of illegal things. The purpose of a proper LabVIEW DLL wrapper is to simplify the API as much as possible for the user without saddling him with subtleties like if you want this function to return 1000 samples you have to set this numeric to 8000 AND also Initialize an array with 1000 double values in order for the call to not crash. Or to return a string from the function to require the user to even have to specify the size of the buffer as the function documentation specifies that the function requires a buffer of at least 256 characters to fill in. Even such a simple thing as an API where you pass in a buffer that the function should fill in with information and a second parameter that tells the function how big the buffer really is, is already a total nogo for even the most advanced wizard, since there is no way the C syntax can describe the specific dependency between these two parameters. So the wizard will create two controls on the front panel and the uninformed user will wire a 1000 to the buffer size but leave the string control that should now contain 1000 bytes at its default of an empty string and -> boom! We humans after quite some dealings with these kinds of APIs often can infer the correspondence between these two parameters because of a more or less useful naming correlation between the two but even that can often go wrong (is the number in bytes, characters or numeric elements of the array type?). The only real information comes from the documentation, which surprisingly often fails to document these things accurately too, and then the only thing that remains are hopefully sample source code that shows you how these parameters are supposed to be assigned.
  40. 1 point
    That's probably after unchecking "place terminals as icons" and is what I shout when disabling the 32&64 bit Web-servers that NI installs (that I didn't ask for)
  41. 1 point
    You are incorrect they do and it is amazing. Here is a slider that I made into a QControl and I have all the normal slider stuff, but then have the extra stuff I added. It isn't perfect, like you can see the "Scale" normally opens up another submenu but in this case it just returns a reference, but with this you can then do the same stuff. Or you can just reference the original control instead of this class and do things exactly like you always have but you won't have the new items.
  42. 1 point
    Attached is an updated one with classic and modern MCLB, transparent cells, and glyphs in all cells. MCLB Symbols In All Columns Transparent.vi
  43. 1 point
    I know this is a OOP question, but there are other ways of addressing your problem that use "duck typing", such as Shaun's SCPI instruments. In my case, there would probably be an "actor" somewhere that responds to requests for current readings, and any actor that responds to those same messages is capable of substituting for it.
  44. 1 point
    If the DVM and power supply are SCPI compliant; you only need to change the address of the command you send.
  45. 1 point
    I agree with James. That could be achieved through composition and adding an abstraction layer. (Sink and Source in the diagram below)
  46. 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.
  47. 1 point
    You can make interfaces with malleable VIs
  48. 1 point
    The best thing about a UDP joke is I don't care if you don't get it.
  49. 1 point
    Thank you for all of the hours and hard work you folks have donated to make this happen. As others do too, I appreciate your splendid efforts!! Randy
  50. 1 point
    QUOTE (Antoine Châlons @ Jan 22 2009, 07:25 AM) a) The term "application instance" is used in all public documentation, but in the LV C++ code, those same things are called "contexts". Because R&D folks occasionally post to customers without tech writers reading over our shoulders, we slip up and use the other term. So you should generally regard those terms as interchangeable, but know that "application instance" is preferred for a long list of (very good) reasons. b) An app instance is very nearly an isolated LabVIEW.exe. The VIs in one app instance cannot interact with the VIs in another context unless they do the same things that would be required to talk to a VI that was loaded on a separate machine entirely. So whatever you would do to talk to a network VI is the stuff you generally have to do to talk to a VI in another app instance. c) Application Refnums are the references to an app instance. Prior to 8.0, you would open an app reference to an entire LabVIEW execution system. Now you open an app reference to one app instance within the execution system. d) All LabVIEW files -- VIs, libraries, projects -- load into an app instance. The same file may be loaded into multiple app instances simultaneously. Editing one of the "reflections" (a term that R&D uses which is distinct from "clones" of a VI, which has to do with reentrancy) does not change the other reflections of that file until you synchronize the app instances (either by pressing that green arrow button that appears on the VI next to the Run arrow OR by saving the file). e) Projects are loaded into an app instance, but they also manage a set of app instances. The "My Computer" instance is the one that the project is actually loaded into. If you add any targets to a project -- an FPGA target, RT target, etc -- those are other app instances. *All* of the app instances that a project creates, including the "My Computer" instance, are life-time managed by the project, meaning that when you close the project, you close the app instance, which closes out all the VIs and Libraries loaded into those app instances. f) Any given app instance may be owned by zero or one projects, but not more. g) LabVIEW has multiple private app instances, including the "NI.LV.Dialog" app instance which is where VIs from the Tools menu run. These private contexts allow tools written with VIs to run without interfering with the user app instances, so there is never a chance of one of those VIs cross linking with user VIs or keeping a user VI from being able to load because a VI of that name is already in memory. Various parts of LV will create temporary app instances -- for example, AppBuilder creates a temporary app instance which it loads all the source VIs into so that it can rename them, strip diagrams, etc, without touching the user's original source files. h) Users can create their own temporary app instances. I believe the Open Application Refnum primitive can be used for this by providing a unique port number to the primitive. There are other methods as well. This is an area of LV where my knowledge is pretty weak and others may be able to fill in more details.

  • Create New...

Important Information

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