Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 07/21/2019 in all areas

  1. 2 points
    I threw this together, and maybe someone will find it useful. I needed to be able to interact with cmd.exe a bit more than the native system exec.vi primitive offers. I used .NET to get the job done. Some notable capabilities: - User can see standard output and standard error in real-time - User can write a command to standard input - User can query if the process has completed - User can abort the process by sending a ctrl-C command Aborting the process was the trickiest part. I found a solution at the following article: http://stanislavs.org/stopping-command-line-applications-programatically-with-ctrl-c-events-from-net/#comment-2880 The ping demo illustrates this capability. In order to abort ping.exe from the command-line, the user needs to send a ctrl-c command. We achieve this by invoking KERNEL32 to attach a console to the process ID and then sending a ctrl-C command to the process. This is a clean solution that safely aborts ping.exe. The best part about this solution is that it doesn't require for any console prompts to be visible. An alternate solution was to start the cmd.exe process with a visible window, and then to issue a MainWindowClose command, but this required for a window to be visible. I put this code together to allow for me to better interact with HandbrakeCLI and FFMPEG. Enjoi NET_Proc.zip
  2. 2 points
    Some good stuff there, $15 gets you everything. https://www.humblebundle.com/books/data-analysis-machine-learning-books?partner=gamefromscratch
  3. 1 point
    The programming term you should look into is Futures and Promises. It is about handling results not yet received (such as defining their order, as you wish to do). Single-element Queues, as TomOrr0W suggests, is what I usually use.
  4. 1 point
    I don't know of any ready-built solutions, but I did come up with the idea below when you mentioned not wanting to reorder (there may be a way to do this with channel wires, but I am not really familiar with that feature) (vi is also attached, saved to LV2018): Parallel Processing Order.vi
  5. 1 point
    DVRs can be upcast and downcast with To More Generic and To More Specific. So if you have a public type that is the ancestor of the private one, you can upcast to the public one in public and then downcast when you need to actually use it. That's all completely type safe. (Note: DVR of LabVIEW Object works without you having to create a new ancestor class.)
  6. 1 point
    Rather than have a bunch of links floating around, I'm creating this "one stop shop" for my contributions to the LabVIEW community. This is my Cilino Suite aka "C Suite". Presentations My YouTube Channel of Presentations (bit.ly/ChrisCilino_Presentations) including: My LabVIEW Champion Interview NIWeek 2018 Keynote Presentation Soliton Customer Testimonial LabVIEW Architect's Forum Q3 2018 - LabVIEW Auto Documentation Software LabVIEW Architect's Forum Q4 2016 - Automated Build Process 2018 Certified LabVIEW Architect Summit - Everything a Software Engineer Needs to Know That Has Nothing to Do with Software Engineering My First Keynote Presentation at VIP Days in Germany Code - Reuse Libraries Automated Build System - Software Module Builder Summary: A system that turns source into exports. The exports can be of any type. Also determines build order of hierarchical modules, updates dependencies, and allows you to move the exports to the location you need for your end users to find and install the export and its dependencies. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/software-module-builder.git Dependencies LabVIEW Container (see link below) LabVIEW SCC API Summary: An API designed to abstract server based source code control providers. BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-scc-api.git Distributed as a part of the Automated Build system NI Package Manager Build Spec API Summary: An API to programmatically interact with and edit the LabVIEW NI Package Build Specification. BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/ni-package-manager-api.git Distributed as a part of the Automated Build system Software Module Template - NIPKG and VIP Summary: A template LabVIEW Project designed to be built into an NI Package and VI Package by the Software Module Builder (see above). With this template, a user need only put their code in the "source" directory and edit some build specification information and the build process will do the rest. Distributed with the Software Module Builder BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/software-module-template-nipkg-vip.git Watchdog Framework Summary: A software observer of "situations" that can notify when something of "interest" happens. The observer is the "WatchDog", the thing being observed is a "Perpetrator", and the notification is a "bark". Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-watchdog-framework.git Sequencer Summary: A simple design pattern that organizes code on a single block diagram without the inappropriate/excessive use of subVIs. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/sequencer-pattern.git Auto Documentation Summary: Think of this as Doxogen for LabVIEW. Given a Project, Lvlib or .class, this software generates report. The report is "printed" to a confluence page. The software is Object Oriented and designed to be extended through inheritance. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-auto-documentation.git Dependencies LabVIEW Atlassian / Confluence / Jira APIs Summary: An API that allows you to control Atlassian assets such as Confluence and JIRA from LabVIEW BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-atlassian-api.git LabVIEW Container Summary: A dynamic data structure that combines the strengths of a cluster and an array. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-container.git Custom Install Step Launcher Summary: Enables NI Package Manager to execute VIs as a Post-Install/Post-Install All/Pre-Uninstall action. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/custom-install-step-launcher.git History/Credentials/Social Media LabVIEW Champion Page LinkedIn LabVIEW Champion Badge Certified LabVIEW Architect Badge Twitter NI.com Profile
  7. 1 point
    Raw TCP. Make your application respond to SCPI commands and the other engineer can treat it like any other instrument. Can even be over a network (remote). It's a simple method which is programming language independent and can be added to existing applications without much problem. Also has no additional installation or distribution requirements.
  8. 1 point
    @hooovahh is right, this is not doable. Your executable doesn't contain the source code and without the source code you cannot compile the application. If the source code is lost, you can either re-program the application (probably very costly) or convince your IT department to allow installing the LV2009 RTE for this particular executable. That said, it is possible to copy the executable and the entire RTE to the target computer manually, for example as part of the "installer" for your executable (IT department mustn't know 😉). We have done so in the past (for the same reasons) and it works like a charm. Of course, this only works for utility applications. It doesn't work if your application depends on other drivers like VISA and the like. If this is not a problem for you, just copy the RTE folder from the NI installation directory ".\Shared\LabVIEW Run-Time\2009", put your executable inside and be happy. I just ran your application on a clean Windows 10 virtual machine and it starts without errors and terminates after a few seconds. It's worth a try in my opinion.
  9. 1 point
    No you can't do what you are asking. There are a few things you might want to know, but none will totally fix your situation. Starting in LabVIEW 2017 there is a forward compatible runtime engine. Meaning binaries build in LabVIEW 2017 can be ran in the 2018 or newer runtime engine. When you build a EXE there is an option to force it to run in that one version of LabVIEW, or the newest one installed. Then if you wanted to run a new version all you'd need to do is install the new RTE and it would run in that. Obviously that is a relatively new feature and not going to be useful for you now. Also there is the fact that LabVIEW 2009 while not official supported in Windows 10 will most likely run just fine. I've installed LabVIEW 7.1 in Windows 7 and had no issues, other than tracking down old drivers to support it. So you might be able to convince your IT team that the 2009 RTE should be used. Without the source that really is the only way to run that EXE. The binary is compiled for that RTE and can't be recompiled for another target or platform unless you have the source.
  10. 1 point
    You may want to consider using a Data Agnostic Smart Probe instead of a subVI. From that probe, you can get a reference to the calling VI. And I think there are ways to figure out which probes are on which wires, etc. Here's my nugget post on Data Agnostic Smart Probes: https://forums.ni.com/t5/LabVIEW/Darren-s-Occasional-Nugget-02-23-2018/m-p/3759109
  11. 1 point
    I don't know what the original file was but you are more than welcome to use the mine, if it is similar. Rolling Average.vi
  12. 1 point
    Transparency + overlapping objects can lead to a situation with constant redrawing. In this case (LV14 SP1) I was able to tame it by coloring the housing a solid color and then recoloring it transparent.
  13. 1 point
    Here is next version, compiled with LabVIEW 2018 SP1. LabVIEW Shell Launcher 1.1.1 The PreferredBitness key is now in LabViewShell.cfg, created if necessary on first launch.
  14. 1 point
    The LWZ Unpack algorithm is very slow in the OpenG implementation. I found this post over in the NI forums and tested it with your image... much faster. https://forums.ni.com/t5/Example-Program-Drafts/Read-GIF-File/ta-p/3514726 Edit: Set image to "-1" to load them all:
  15. 1 point
    All of this spam was created a long time ago when the site was more vulnerable. The wiki has been locked down since then, and this should not happen again (but some get through). I deleted the first list of pages you mentioned. The uploaded images are tedious to delete because there no simple tool I've found to do it on a mass scale. Since they're not linked anywhere then they don't do much harm except use up server space. It seems you have time. So I will connect with you directly offline to give you some rights.
  16. 1 point
    All very good points and good concerns. Personally I would capitalize Boolean, but I may forget occasionally. I would also prefer subVI as I've gotten used to the NI standard. I can see the confusion with LabVIEW and G, and often I go back to what the community at large uses. If I say "My programming language of choice is G" some may confuse this with GCode, or something else. If I say LabVIEW I think that conveys what I mean to the general public more. For this reason I default to "LabVIEW" but at times will say G. Public opinion may change, and that may mean updating the wiki. And if there are specifics I'd prefer separate pages for 20xx and NXG, but whatever. One thing you might not be aware of is that there is a place for page specific discussions on the Wiki Talk Page. You could make an edit, but leave a comment asking for direction or leave it open to preference. That being said I think the opinion of most moderators on the Wiki is more that getting something which is non-perfect, is better than having nothing. I'd encourage others to make pages and fill in what they can, even if they are unsure of how to handle some of these differences. Things can always be cleaned up and refined later.
  17. 1 point
    Time to wipe the dust off this one. I found myself in a similar situation as the OP where I want to exclude code using Conditional Disable Structures. In my project, I have multiple Build Specs and I wanted to change the Conditional Symbols based on which Build Spec I'm running. For example, I could have a Debug and Release Spec. I know that the IfDef.llb (LV\resource\plugins\Utility\) provides a SetSymbols.vi, so my first thought was to have a Pre-Build Action which calls SetSymbols.vi to set my key-value pair. That works fine. This could turn messy if there are multiple Symbols that might need setting for different Build Specs and instead of having lots of small vis that each set a single Symbol I want something a bit more manageable. So why not allow setting of the Symbols via the Build specification description? So I made a small vi that you can drop in your Pre-Build Action.vi, which reads this text and sets any of the symbols it finds. LcExtra_IfDefSetSymbols.viLcExtra_IfDefPreBuildDropIn.vi People who don't like this idea may want to replace reading the Build specification description with reading a separate .txt file which they include in the project that contains symbols for all possible build specs. There are many ways ... Of course, if you're in any way interested in this topic, the first thing you should do is support this idea in the LabVIEW Idea Exchange, which would make all of the above obsolete.
  18. 1 point
    Count me in too. Attached is my LabVIEW Project API, (I've posted bits before). Don't think its ready for prime-time either, but am happy to post as is. Tested only with LV2009 thus far. Cheers -JG jgcode_lib_labview_project_api-2.0.1-1.vip jgcode_rsc_jgcode_library_palette-1.2-1.ogp
  19. 0 points
    It has been a hot mess with trying to get 2019 installed on my laptop. It killed all DAQmx support for 2018, but had options for the other version installed. Then wouldn't uninstall correctly and the NI website has simultaneously revamped ni.com/downloads making a standalone nearly impossible to find. Can we have ni.com/src back?


×
×
  • Create New...

Important Information

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