By Black PearlInstallation:
Copy the contents to LabVIEW xxxx/resource/plugins
Speed up creating new vi's from templates!
It's using the 'new vi'-hook to create the new vi from a custom template. A plugin architecture allows to map different templates to the keyboard.
For a quick-start, try Ctrl+N followed by 'H' (without releasing the Ctrl key).
New -> Blank VI from the Startup Window File -> New VI from the menu of any vi or the Ctrl+N shortcut the lv_new_vi.vi hook is called.
Releasing of the Ctrl key (when using the shortcut) uses the Default.vit. The next key-press k creates a new vi from the template [...]/plugins/lv_new_vis/templates/k.vit. This is case insensitve and only works with a..z and SPACE. If no template is found or if an error occures, the default action of LabVIEW (empty vi) is performed (Failsafe).
In addition to normal vi templates it supports global vi templates and control templates.
Even more customization is possible using special tags on the vi or vit. Use
[...]/plugins/lv_new_vis/tools/lv_new_vi__TagEditor to read and set them:
isBD_ToFront? bring the block diagram in front instead of the front panel isRunMe? will instead run the vi in the template folder. Use this for wizards, more sophisticated scripting and other dialogs.
Examples (V0.9.3: seperate ogp package):
Try the following keys to see the different possibilities:
f: normal vi, FP at front b: BD at front g: global vi c: control w: wizard h: help You do not need to delete the demo templates, a w.vit will load even with w_example.vit present.
Compatibility: Developed in good old 7.1 and tested with 2010. I don't know if it works nicely with the project explorer and did never try to use it with projects, libraries and classes.
* Error logging
* Redirections via Config file (I will link the standard templates) (Edit: It's faster to just place them in the templates folder.)
Fixed issues with the Application Instances of LV8.0 and higher.
Wizards are still launched in the diaolog App.Instance, they need to get the default App on their own.
Changes: Closing all references
Beta: Uses VI Activation Event to abort when the user switched to a different app. (See discussion for details).
Uses VI Activation Event to check Ctrl-Key when user switches from a diffrent application.
Now available as packages (ogp). Uses a seperate package for the examples.
Fixed issues with 0.9.3: After start of LV, Ctrl+N didn't work the first time
We have recently developed a toolkit that allows you to use Quick Drop plugins in Right Click Framework or LabVIEW Speak platforms.
Named RCF LVS Conversion Toolkit, this toolkit provides an easy solution for JKI Right Click Framework (RCF) and LabVIEW Speak (LVS) lovers who want to use a quick drop plugin in RCF or LVS. Now, you wont be disappointed when you see a useful plugin not written in your favorite platform's plugin format.
Procedures are simple:
Open the toolkit by going to Tools Menu >> Synovus >> RCF LVS Conversion Toolkit...
Select the target Quick Drop plugin VI
Type the command name in Right Click Framework or LabVIEW Speak
Now you can use the Quick Drop plugin in Right Click Framework or LabVIEW Speak platform
Automatically converts a QD plugin to RCF or LVS plugin format
Warns the user if repetitive commands are installed.
Provides an instruction as user clicks help button.
Helps the user navigate to the plugin folders (LVS, QD and RCF)
Modifying the functionality in Quick Drop VI will automatically update the functionality in Right Click Framework or LabVIEW Speak
Please let me know if you have any questions. Suggestions and comments are welcome
Note: RCF and LVS only update their lists of commands at startup. If you use the RCF LVS Conversion Toolkit when RCF and LVS are open, please restart these platforms.
By Neil PateThis project is a 100% G based Rubiks Cube solver that I coded quite a while ago (2007) and then forgot about. I must have saved it it more recently in LV2011.
The algorithm is based on the 7-step method, which is totally sub-optimal for solving a cube, but relatively simple to understand.
Please note this code is not representative of my current coding ability, I just upload it in case anybody is interested.
If I get time I would like to do a 3D representation of the cube and allow the manipulations to be done in this view.
set the show boolean to True click randomise! pick a start colour click solve! The buttons on the left hand side can be used to do manual manipulations of the cube.
By o u a d j ia "Select" ... but with N inputs
2 menus :
a - select mode : after&before , only after, only before
b - select output : top , center
a - add input (after)
b - remove input
(for a quick test ... unzip ---> QUICK_TEST.vi)
By PorterThe SET Localization Toolkit provides more convenient edit-time language switching support for LabVIEW 2013 projects.
UI text is extracted from an existing project and stored in a localization file. Additional languages can be added then applied to the project using the apply language wizard.
The idea is to be able to quickly apply a language to a project before distribution. Applying the language at edit-time allows you to fix up the UI in the target language. Change fonts and re-size controls so that it looks right before compiling it.
- No modification of project's source code required. No additional dependencies.
- Support for switching code pages.
- Ability to define shared resources.
- Resources referenced via UID. Changing labels of control does not break linkage.
- Resources can be exported to CSV file for external translation.
- Resources stored as UTF-16LE text.
- Ability to translate RTM files.
- Unicode support enabled in the LabVIEW.ini file
- Download the ".vip" file and install using VI Package Manager 2014
- Make sure that "UseUnicode=True" is set in the "labview.ini" file
- From within any LabVIEW window, select "Tools->LAVA->SET Project Editor"
By SDietrichThis is a package containing LabVIEW bindings to the library ShapeLib for working with shapefiles.
The DLL as of version 1.3.0 is included in the package. This DLL is compiled with Microsoft Visual Studio 2010 Express, so you need the corresponding runtime. But chances are you already have it because other programs on your computer need it, too. So just give it a try.
The library is thread safe, but the objects are not. E.g. you can open two different files in different threads, but you can not operate on the same file from two different threads at the same time.
As of the moment the DLL is 32bit only.
this is a very simple LabVIEW code... but i'd like to share this to my fellow LabVIEW developers... this code will convert hex string to a U8 array hex format.. please let me know if you have question or suggestion on this VI. Thanks, Sherwin Tiongson
By Black PearlThis VI accesses the registry and changes the Key that is responsible for Autoplay (WinXP). This should help against those worms/viruses that spread via USB Disks.
Copyright 2015, Merecs Engineering GmbH&Co. KG
All rights reserved.
This code has been tested to run under LabVIEW 2014.
- Enables Tabbing into and out of Cluster-Controls
- Also works with Clusters on Tab-Controls
If you have any problems with this code or want to suggest features, please let me know or post to the LAVA forum.
Initial release of the code.
This is the official release of my LV State Machine template; the TLB - Top-Level Baseline. It was presented at the State Machine vs. State Machine presentation at NI Week 2010.
This is worth using because it implements most of the common functionality that you end up creating w/ most / all LV state machines anyway:
Error handling Idle cases Interactive event driven execution Shutting down parallel loops gracefully String based queued states Handling the Panel Close? event
Some techniques used are not immediately intuitive, but each design decision was made with the idea of scalability and ease of use in mind.
Please post your 'Why did you do that?' questions and I'll gladly inform and instruct why the design choices were made (including why did I use colors)
By gb119lavag_lib_User_Interface_XControls_Toolbar XControl v188.8.131.52 by University of Leeds
Author: Gavin Burnell
Copyright: Copyright © 2013, University of Leeds
Compatible LabVIEW Versions: >= 2012.
Compatible OS Versions: ALL.
This is a native toolbar for LabVIEW implemented as an XControl. It supports a single row of square buttons which maybe latching (sticky) or transitory (command) style buttons drawn in one of 4 different styles (system, square, flat or rounded). The toolbar will report button clicks via a value change event, but allows the possibility for further integration into other messaging systems.
The buttons are represented as instances of a button base class that provides methods for drawing the button, updating tooltip text or responding to clicks. Overriding these methods in subclasses allows a greate flexibility of response. Included in the package is a 'vi-button' class that stores a vi reference with each button and executes it when clicked.
This Package depends on these other packages:
oglib_string >= 184.108.40.206
By hooovahhHas your stressful day at work got you down? Want to take a load off and relax with a game? Why not a LabVIEW game? Here is a game I made a while ago and forgot about. It is called Traffic Jam similar to this, or this one called Rush Hour. The basic goal of the game is to get the red car out of the parking lot, by moving the other cars. Cars can only move in one direction and can't turn.
My coding style has improved over the years, but I'm not yet ashamed of the work I did on it. It was fun working with the picture control and generating the UI based on the level files.
This game comes with 122 levels. Why 122? Because I forgot to put in the last 18. Feel free to add them yourself by editing the Set text files.
This game also keeps track of your high score, so you can try to go back and do it in less moves.
By CharlesB(initial discussion, with other implementations here)
In the need for displaying large images at a high performance, I wanted to use triple buffering in my program. This type of acquisition allows to acquire large data in buffers, and have it used without copying images back and forth between producer and consumer.
This way consumer thread doesn't wait if a buffer is ready, and producer works at max speed because it never waits or copy any data.
If the consumer makes the request when a buffer is ready, it is atomically turned into a "lock" state. If a buffer isn't ready, it waits for it, atomically lock it when it is ready.
This class allows to have a producer loop running at its own rate, independently from the consumer. It is useful in the case of a fast producer faster than the consumer, where the consumer doesn't need to process all the data (like a display).
How to use
Buffers are provided at initialization, through refnums. They can be DVRs, or IMAQ refnums, or any pointer to some memory area.
Once initialized, consumer gets the refnums with "get latest or wait". The refnum given is locked and guaranteed to stay uncorrupted from the producer loop. If new data has been produced between two consumer calls, the call doesn't wait for new data, and returns the latest one. If not, it waits for the next data.
At each producer iteration, producer starts with a "reserve data", which returns the refnum in which to fill. Once data is ready, it calls "reserved data is ready". These two calls never wait, so producer is always running at a fastest pace.
A condition variable is shared between producer and consumer. This variable is a cluster holding indexes "locked", "grabbing", and "ready". The condition variable has a mechanism that allows to acquire mutex access to the cluster, and atomically release it and wait. When the variable is signaled by the producer, the mutex is re-acquired by the consumer. This guarantees that the consumer that the variable isn't accessed by producer between end of consumer wait and lock by consumer.
Reference for CV implementation: "Implementing Condition Variables with Semaphores ", Andrew D. Birrell, Microsoft Research
"Converts U8 Array into Space Delimited String".. This is a very simple code but often times very handy when you are in a hurry writing your code and want to finished asap. Description: it will convert a u8 hex array into a space delimited hex string. please let me know if you have concern or question regarding this LabVIEW code. Autthor: Sherwin Tiongson..
This is a "simple" xNode that assolve two issues :
-Purges error cluster data(eg.Clear the status boolean)
-Sends UDP packet (containing error cluster data) to a Server to log errors or doing what else you want.
See BlockDiagram of VI "UdpLoggerError HowTO.vi"
Copyright © 2008-2009, Giovanni Terracciano
All rights reserved.
By Black PearlThis is a toolkit to convert a state diagram designed with the editor dia into a LabVIEW state machine.
Warning: This uses Scripting: So be aware of dragons, black holes, rusty nails and other monsters. I've only tested it in LV 7.1., got a crash every 2 hours... Bugs and workarounds in newer LV versions welcomed.
Crashes in 8.5. Found the CAR (# 4CJFKTCS)). Edit: Fixed in V 1.0.1
Create an uml Chart in Dia (it is OpenSource too).
Compile it into a LabVIEW state machine (this will generate an enum based state machine with .vi and States.ctl for the TypeDefed Enum).
Code the States.
* You will need to have several OpenG packages installed. Dependencies: appcontrol, file, variantconfig. In order to install these, you need to get the VI package manager from:
* For users of LV 7.x you need to get the TRefTraverse.llb from NI:
From 8.0 onward they are located under vi.lib\utility
Propably you need to fix the linking from the main vi
* You will need to download Dia:
* In the Folder LV Scripting you will find the template 'State Machine Prototype Template.vit'. You can modify this within limits to change the state machine that will be generated.
* There is a lot of Documentation with the Code: Check out the documentation folder with the 'Tree VIs' and the uml diagrams (they are surprisingly also made with dia)
* If you have questions, ideas or found a bug, please do not hesitate to contact me! You can do so via PM on LavaG or via my private email on the BD of the About.vi
* Fixed a bug in error handling (Error Handler Close.vi)
* Workaround for the 8.5 crash
* Support for changed Name of CaseSelect
* Started to add support for StarUML
Happy New Year
By ShaunRThis is an experimental demo to investigate VIMs (vi macros). It was a bit of fun to see if VIMs could be used to encapsulate events in LabVIEW which was a bugbear of mine for quite some time. You can see the entire thread here. VIMs are a NI experimental technology similar to Xnodes but less mature.
The purpose of this release is to clarify the previously unstated licence since other forum topics are building on the original demo so they need a permissive licence (MIT). This release serves as an unambiguous statement to that effect. There are a few differences from the original which I have decided to call version 0.1 but they are minor.
This may or may not work for you out of the box. If it doesn't then please do not post. The purpose is to clarify the licence for others to build upon; not to provide a working example. The VIM technology is itself experimental and unsupported by NI so most issues you will encounter will be due to this and It is unlikely there will be another version posted here.
By cvisLabVIEW Versions:
This is a reference based class for handling waveform data. The waveforms are pre-allocated for faster access. Methods allow you to append new waveforms, read the existing waveforms, read a subset of the existing waveforms, or read a decimated copy of the existing waveforms.
By bbeanThis Quick Drop (QD) plugin complements the functionality of the built-in QD plugin (CTL-Space-CTL-D) by wiring between selected controls, indicators, constants, and SubVIs.
Default Shortcut - [W] Normal Operation Wires selected nodes in left to right order. Attempts to connect any common unwired terminals in between the far left and right nodes by checking the datatype, Name, or Caption. Holding Shift and the Shortuct: Wires controls to unwired far left Node terminals and indicators to unwired far right node terminals. This is just something I put together as my first attempt at a Quick Drop plugin. Something similar has been done previously to wire the corners of subVIs using the right click framework by user JCC_(SK): RCF Plugin - Wire Nodes by Corner - https://decibel.ni.com/content/docs/DOC-8386 . Code for this plugin was developed prior to knowledge of the JCC_(SK) RCF code and probably doesn't function as well since it hasn't been tested thoroughly. However this plugin is for quick drop and has some added capability to wire up all like terminals but can suffer from potential overzealous wiring. Just delete extra wires if necessary. Thanks to the NI guys for creating the QD template with good instructions. Someone may have done this already but I'm putting this out for comment anyway. <a href="http://www.screencast.com/t/PZhMafM2">WireAndConnectVideo</a> http://www.screencast.com/t/PZhMafM2