Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 11/03/2022 in all areas

  1. That was the best presentation content I've seen from NI for many-a-year. Cheekily mentioned (almost under his breath) he'd found a way to use the Match Pattern to replace Regex. I too use Match Pattern instead of regex because it beats the hell out of it for performance but it's never as generic as the regex. I need to know more (with code). Never liked (or used) the Error Constant ( or AF for that matter). Never used PPL's either but I do use lvlibs with the VI's in an LLB - mainly for ease of distribution rather than load performance. The single execution while loop to force clumping was an eye opener. I've never suffered from that but that's gone in my long term must-know memory. Xnodes were always too complicated for me so never used them. Interesting he didn't mention XControls. VIM's I liked until they formalised it and then they did not propagate the type downstream (so I couldn't make my "named events"). So don't make any of those anymore. I agree with his view of text vs VI's. But not for the same reasons. I'm a huge fan of polymorphic VI's with a menu, for example. However. I can read a diagram of VI's I am familiar with (and with good icons) in one glance but I'm not a speed reader. He just doesn't seem to like doing icons whereas I find it a cathartic distraction when stuck on a problem. My obstinate work flow and dumb preferences seem to insulate me from a lot of the issues that others find.
    2 points
  2. Class constants and controls have black background when they contain non-default values: Class constants (and controls) always have the default value of their private data control unless you explicitly create a non-standard constant like in the example above. It is updated every time the private data control is changed. This is why VIs containing the class are broken until the changes to the private data control are applied. That is correct. It does not. The default control does not actually contain a copy of the private data control, but a value to indicate that it returns the class default value. Even if you make this value its default value, it is still just a value that indicates that it returns the class default value. Only when the background turns black, you have to worry. By any chance, do you write values to class controls? This can result in undesired situations when combined with 'Make Current Values Default':
    2 points
  3. Today I told NI, that I am not willing to join a subcription program, in which NI can increase the pices as they want or to shutdown my software and that LabVIEW 2022 will be my last version. I just can encourage all other guys to do the same and to not accept such a pricing model.
    2 points
  4. new release in my fork : https://github.com/AntoineChalons/lv-toml/releases/tag/releases%2Fv2.3.2 what's new : I've improved the error reporting when there is a typo in the value, ex : [cluster] some-numerial-value = 10 other-numerial-value-with-a-typo = 10s The error source will quote the line at fault and give you the line index, something like "Parsing error at line 3 : 'other-numerical-value-with-a-typo = 10s'
    2 points
  5. Hello, LAVA. My team at SpaceX is looking for LabVIEW developers. We have two job reqs open, one for entry-level developer and one for senior. Ground Software is the mission control software for all Falcon and Dragon flights. Every screen you see in the image below is running LabVIEW. Our G code takes signals off of the vehicles, correlates it for displays across all our mission control centers and remote viewers at our customer sites and NASA. It's the software used for flight controllers to issue commands to the vehicles. This is the software that flies the most profitable rockets in the world, and we're going to be flying a lot next year and in the years to come. If you'd like to get involved with a massively distributed application with some serious network requirements, please apply. You can help us build a global communications platform, support science research, and be one of the stairsteps to Mars. Entry level: https://boards.greenhouse.io/spacex/jobs/6436532002?gh_jid=6436532002 Senior level: https://boards.greenhouse.io/spacex/jobs/6488107002?gh_jid=6488107002
    2 points
  6. There was a couple, but I never used any of them. I think BLT is one that meets the needs, and I think Wirebird Labs had one, but that hasn't had any update in forever.
    2 points
  7. Hey let's not get hasty now. But honestly this has bitten me on a few occasions as well, so don't feel bad.
    2 points
  8. Is this a sequence editor? If so I don't see the tab design being very scalable. Here is a screenshot of something we do. It has a tree control on the left with all the different step types, with categories for them. Then the user can drag and drop an icon over to the right. Once they do a dialog will come up with the settings for the step they selected. They can also double click a step on the right for the settings for that step to come up again. There's lots of extra stuff like custom step limits, which is a slide out, and visual arrows if a step has a condition for jumping. Loops are seen as a tree on the right where you can drag and drop into or out of loops, and rearranging steps is also a drag and drop. There is also columns for icons that can be clicked, which is actually two picture controls because you can't have multiple glyphs in a tree, and if you can hack that in the icon size has to be real small. Each step has a typed cluster with the settings for it, that get flattened to a variant. You might not need to get this fancy, but a listbox of step types, and a listbox for the sequence might be a good start.
    2 points
  9. DSNewPointer can create a pointer to an array. It's in VIlib\Utility\importsl. You can then use the GetValueByPointer XNode to retrieve the array (or Moveblock if you need speed).
    1 point
  10. Your doing it in the UI thread (that would have been my number one guess). Switching threads is one of the few things that can be multi-millisecond expensive. Switch the Call to "any thread". Edit: actually, even a thread switch shouldn't take 40 milliseconds, but give it a try anyway.
    1 point
  11. UI Element Property Nodes ALWAYS execute in the UI thread. This applies to VI server nodes operating on front panel and control refnums (and almost certainly on diagram refnums too, but this would be pure scripting so if you do anything time critical here, you are definitely operating in very strange territory). CLFN is Call Library Function Node. These calls can be configured to run either reentrant or in the UI thread. If set to run in UI thread and it is a lengthy function (for instance waiting for some event in the external code) it will consume the UI thread and block it for anybody else including your nice happy property nodes! Now don't run and change all CLFN to run reentrant! If the underlaying DLL is not programmed in a way that it is multithreading safe (and quite some are not) you can end up getting all sorts of weird results from totally wrong computations to outright crashes! So your VI may have worked for many years by chance. But as we all had to learn for those to nice to be true earnings from investments, results from the past are no guarantee for the future! 🙂
    1 point
  12. You don't need that. That is the API that you could create TPLAT with. This is the basic procedure Create a product definition (Using LFEdit or via the Softwarekey web page). Create a licence file for the product (Using LFEdit). Apply the licence to the lvlib (Using TPLAT in advanced mode. This will give you a Licenced version of your code.) Point VIPM to the licence when you build the distribution (If you have the full VIPM, it can also apply it instead of using TPLAT above). This is the full licencing process (excluding the VIPM). You can also buy the licensing server from Softwarekey for installation on your own network, if you want everything in-house rather than using theirs (or NI's)
    1 point
  13. This is the process for adding licencing to addons. You only need "Protection PLUS 5 SDK" if you want Advanced licencing features or your own SOLO server. The licence file (*.lf) created by TPLAT can only create a licence for "Standard" and you cannot change the SOLO server location (NI's SOLO server). In advanced mode you can choose a pre-created licence file (created with LFEdit from the Protection PLUS 5 SDK) which can have a different SOLO Server URL and more advanced features. What happens if you click on the "New to Solo Server" on the TPLAT dialogue? Is there no link to sign up? (I don't have TPLAT installed for 2022 at present).
    1 point
  14. Actually, BOTH behaviours with or without "ignore errors inside node" set are different from error-chaining the individual subVIs (which is how I would argue stacked Property Node should behave).
    1 point
  15. That is very unlikely. It would turn classes into interfaces, which is a major breaking change.
    1 point
  16. Just in case you are looking for a solution that doesn't have to work in runtime, there is this property for class libraries.
    1 point
  17. Interfaces have no private data control, which means you can just check if such control exists in memory. The original VI is available on GitHub: https://github.com/logmanoriginal/labview-composition ("Is Interface Or LabVIEW Object.vi")
    1 point
  18. Hello Youssef, As Shaun and Brian mentioned, BLT is a toolbox allowing you to distribute commercial LabVIEW applications with just a few easy steps. However it is limited to LabVIEW executable running on Windows. So this will not cover your need for licensing LabVIEW source code. If you are looking to sell LabVIEW applications running as executable on Windows computers with advanced licensing scenarios, you should definitely look into BLT for LabVIEW. You can try BLT for free with no time limitation, with all the features, and distribute 1 application on up to 5 computers. After that, there are some fees associated. BLT does not only provide licensing features, but also auto-update capabilities, usage tracking and remote debugging tools. You can get a lot of information regarding BLT for LabVIEW at https://BLTforLabVIEW.com and also by looking at the product documentation at: http://help.studiobods.com/bltforlabview If you have any further questions feel free to send an email to contact@studiobods.com Best regards.
    1 point
  19. Yes. I think it was the Studio Bods one I was thinking of. Looking at it now it seems to be geared towards executables and not sure if it will suffice for source code.
    1 point
  20. Interesting. This is could be due to their new subscription method. It might be worth finding out whether that is the case as there will be other caveats like you need to maintain a subscription Indeed. I vaguely remember a third party that was offering an alternative solution that was implicitly geared towards LabVIEW and used the TPLAT. But I can't remember who it was or how it worked.
    1 point
  21. Glad I could help. I don't think the "app store" like model is something NI is willing to invest effort on, they seem happy to let the community deal with it, from what I could see NI did the bare minimum - which is already not too bad - to give the community a reasonably good solution to handle licenses. Again I've not used it myself, but I've seen people use, I hope it works out well for you. I strongly encourage you to contact NI, and more specifically Nancy Henson or Eric Reffett (look them up on linkedin to see their role at NI) to give them feedback about the developer center on community.ni.com.
    1 point
  22. check to make sure that the input terminals are the same setting as well: "required, recommended, optional." This matters
    1 point
  23. The toolkit will lock the libraries and produce a licence file which you can browse to and select in VIPM. NI have a SoftwareKey Server that they use for Tools Network offerings but you can buy and install your own from SoftwareKey.
    1 point
  24. I'm not sure it's all up to date, but from the link I gave in my first response you should find all the existing doc & tutorials. https://forums.ni.com/t5/Developer-Center-Resources/VI-Package-Manager-Licensing-a-Package/ta-p/3491276 I've never had to go through this process, but I know many people who have. Good luck to you!
    1 point
  25. I would attack it differently. Send that reboot command to the application itself, let it clean everything up and then have it reboot itself or even the entire machine.
    1 point
  26. Mostly we use 3 levels for the instrument driver (InstrumentBase <- InstrumentType(e.g. PowerSupply) <- RealInstrumentDriver (but also a simulated type) We currently have 398 classes in our instrument hierarchy, 60 different InstrumentTypes such as: (TemperatureControllers, Robots, WeldingLasers, GlueDispensers, StepperMotors)
    1 point
  27. This functionality is a post LabVIEW 8.0 feature. The original config file VIs originate from way before that. They were redesigned to use queues instead of LVGOOP objects, but things that were supposedly working were not all changed. Also using the "create or replace" open mode on the Open File node has the same effect. Still something else is going on here too. The Config file VIs do properly close the file which is equivalent to flushing the file to disk (safe of some temporary Windows caching). Unless you save this configuration over and over again it would be VERY strange if the small window that such caching could offer for corruption, would always happen at exactly the moment the system power is failing. Something in this applications code is happening that has not yet been reported by the OP.
    1 point
  28. 🤷‍♂️ I came up with this without swearing, though. In truth I still have to test it for real (meaning, that it really compiles smoothly on a target, not just no broken arrow). My goal was to get the job done, not to learn the theory of Xnodes....
    1 point
  29. I think that is the point he is trying to make though (based on the title of the thread); that LabVIEW should let us specify which plot we are working on when setting a property without it being overruled by what is done elsewhere as long as that is not actually on the same plot. If e.g. you have one location where you want to set the property of plot 2 and you also have some code in parallel working on a a property of plot 4 they should be able to declare/access the separate plots *without the risk of a race condition*. I agree with @infinitenothing, it is a bad design (I have not checked if anyone has already asked for a change of that in the idea exchange though. It would be a good idea to post there.)
    1 point
  30. Well you have a clear race condition here when setting the "ActPlot" property in two parallel running loops, so I do not see how the behavior you describe is a surprise. It is working completely as one should expect.
    1 point
  31. Hi Sam, After the startup.rtexe is deployed into your cRIO, and reboot it, with the Run As Startup option selected from the LabVIEW Project Explorer, you can use these commands from the terminal: /etc/init.d/nilvrt stop ==> to stop the RT App. /etc/init.d/nilvrt start ==> to run the RT App. Hope this helps.
    1 point
  32. Mise en cache des fichiers - Win32 apps | Microsoft Learn
    1 point
  33. Regarding which port was used it should be possible to get that information from winsock library on Windows. I think the answer can be found here: https://forums.ni.com/t5/LabVIEW/Is-it-possible-to-extract-the-local-port-associated-with-a-TCP/td-p/459672
    1 point
  34. I found this DMC slide. I wasn't quite sure when to use Floating vs Modal, and this helped me a bunch. In my situation right now, I like and am going to use Hoovahh's code to set to modal through VI server. Graceful. I really do appreciate this code that you shared. https://www.ieee.li/pdf/viewgraphs/user_interfaces_in_labview.pdf
    1 point
  35. That is working to measure loop iteration time. Stores the initial time in a shift register. Then each iteration takes the current time and subtracts the previous, while also storing the current time in the register for use in the next iteration.
    1 point
  36. This announcement might be of interest: https://create.vi/ni-and-jki-partnering-on-package-management-in-labview-d243b13ae3a6 "Features in VIPM Pro 2023+ (Paid): NI Third Party Licensing and Activation Toolkit (TPLAT) Integration"
    1 point
  37. 1 point
  38. This is pertinent to the discussion on Unicode, but more related to the meme - https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
    1 point
  39. The .rtexe is actually not an executable file. Rather, it is a "bundle" that contains your compiled VIs. The real executable is /usr/local/natinst/labview/lvrt -- This executable loads your .rtexe bundle and runs the top-level VI(s) from the bundle. The lvrt program checks a config file -- /etc/natinst/share/lvrt.conf -- to find out which .rtexe it should load. So, in theory, you could edit this file and then shut down the VIs that are currently running. This causes lvrt to re-launch, and it will read your updated config file and load your new .rtexe. Notes: Only 1 rtexe can be active at a time. If you simply kill lvrt (as opposed to triggering a proper shutdown from within your .rtexe), LabVIEW thinks that it crashed. By default, LabVIEW will enter Safe Mode after 2 crashes: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000kFQ6SAM
    1 point
×
×
  • Create New...

Important Information

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