By bodopoqWhen using ChirpZ transform of LabVIEW(The example itself provides),I found a strange thing.When the frequency is very big and the range is small together with a not small number of ChirpZ transform,Error happened(very bad spectrum and wrong frequency ChirpZ's result is)! Nothing is wrong with the examples(I've scripted other VIs to verify this),and this error didn't happend using MATLAB. So I believe that is a bug of LabVIEW!!!(Not Sure yet of course). I Need Help! Talent Masters, Come out!
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 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
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.
By GriboA simple bi-directional interface between Labview and Google maps, using Websocket.
See readme.txt for instructions.
This VI can Discover, Pair, or Remove Bluetooth Device. Can Connect or Disconnect (no data socket enabled yet), Can establish a Comm Port, Open the Comm Port, Close A Comm port.
Has the machinery but needs debugging for the Windows bluetooth Event Monitoring. Any help would be VERY VERY WELCOME.
I'm uploading this because I really wish somebody else had uploaded the necessary code for bluetooth pairing, but at the moment wish somebody else had uploaded code for monitoring bluetooth events (connect or disconnect events)
By tylertroyI have always found it frustrating that I cannot efficiently change numerical values with the mouse only. This is especially true when I'm simultaneously looking at a gauge on the other side of the room and changing values with my wireless mouse.
"easy increment" selects individual decimal place values by moving the mouse across the spacial extent of a numerical control. Mouse wheel scrolling may then be used to to modify these values.
It's easier to use than explain, I promise!
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 StobberUse v1.0.0 for LabVIEW 2011-2012.
Use v1.1.0 for LabVIEW 2013+.
The attached library provides extensions to the Actor Framework to facilitate the broadcast of messages from one actor to several others. Listeners subscribe to a message when they want to receive it from the Broadcaster, and they unsubscribe when they want to stop receiving it. The library provides a set of common interfaces that decouple Broadcasters from Listeners so any two actors in a messaging hierarchy can communicate via broadcast without having the same caller.
This library extends the Actor Framework; it does not modify the core framework in any way, so it may be used in existing projects as well as new ones.
Documentation for the library and the included example program is attached.
By BreakpointMSDN Link: GetDriveType function
By bsvingenA native Labview (wire) general real matrix solver.
Based on BLAS (FORTRAN code included)
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
By gb119lavag_lib_User_Interface_XControls_Toolbar XControl v184.108.40.206 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 >= 220.127.116.11
By PBJThis function filters blue pixels.
I have used HSL.
Copyright © 2012, Prabhakant Patil
All rights reserved.
Author: Prabhakant Patil
Contact Info: Contact via PM on lavag.org
LabVIEW Versions: 2012
1. LabVIEW Runtime engine 2012
This example will help you to scroll graph cursor with scroll keys ( UP, Down. Left, Right)
If you have any problems with this code or want to suggest features:
please go to lavag.org and Navigate to LAVA > Resources > Code Repository (Certified) and
search for the "Move_Cursor_with_Scroll_Key_LV2012" support page.
By jcnossenSince the standard Tick Count VI has very limited resolution, I made a simple timer using the QueryPerfomanceCounter methods in the windows kernel32.dll. The output is the time in seconds as a double precision value.
By Ton PlompAn API for the Mercurial command line interface (hg), includes all the basic commandos:
The API provides an interface to communicate with a Mercurial Repository.This API is not meant as a integrated Mercurial provider in LabVIEW.
Installation is performed by VIPM, after which a palette is created in the user.lib palette.
You can access the sourcecode of this API at Bitbucket.
Licensed under GPLv2, since it creates a derivative on the Mercurial icon. © Matt Mackall
Copyright © 2012 Ton Plomp
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
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.
This is a submission for the GPower toolsets palette, which will also shortly be available on the NI LabVIEW Tools Network. I submit it to Lava to (of course) share it with everyone, but also to establish an open forum to discuss improvements and to provide support. Much better than hiding all this in private email conversations with each user.
The toolsets are compiled for LV2009 SP1, are provided as VIPs for VIPM, and will mass compile to at least LV2010 and LV 2011 without problems (this happens automagically during the VIP-install process for those of you that don't know VI Package Manager ). The 'gpower_lib_toolsets-18.104.22.168.vip' is an umbrella for the four other VIPs, it doesn't add anything extra by itself.
Currently this consists of 4 toolsets:
Open, pass data to (without using the front panel), run, and close dynamic VIs. A cumbersome process using VI Server made easy with this toolset.
Streamline common error wire tasks such as set, filter and clear errors and warnings, and unbundle the error cluster. Adds advanced features such as dynamic setting of custom global errors, that you can invoke from anywhere in your application, and bundling errors into a single error wire. No more need for arrays of error clusters!
Calculate elapsed and remaining time, and abort a running Wait function for instance.
High performance "global variables" that lets you pass data between any corners of your application. It's based on queues, so a "global" that does not involve using front panel controls, files, or the LV project - it all happens in the block diagram. In most cases you don't even have to pass a refnum around, just drop a VIRegister somewhere and you're done.
If this thread generates too much noise across the different toolsets, we could split this into 4 submissions. But lets see how it goes. More toolsets are awaiting release, but I'll start with these four to get a feel for the process.
By Ton PlompThis toolkit allows you to directly communicate with you Mercurial repository, from within the LabVIEW project environment.
This toolkit acts as an extension of the supplied LabVIEW SCC interface in LabVIEW professional.
The toolkit allows you to commit, push, tag changesets. Has support for adding Issue tracking IDs.
By David_LThis Multiple File Path Control is similar to the default File Path Control in LabVIEW 2011, however you can select more than one file at a time. The data type on the block diagram is an array of File Path Control.
Right click on the MFPC to have it display the full paths or just the file names.
I'll try to post this in pre-2011 but because it uses silver controls, I'll have to make some significant changes.
By Ton PlompThis class adds a special version for the HTML-report generation VIs.
By using this class you can use the normal report generation functions, however images will be embedded in the HTML file inside the <IMG> tag.
This tool adds a special override class for the Report Generation toolkit. With this class come 3 overrides for the following functions:
Append Control Image to report
Append Image to report (path)
Append Image to report (string)
These functions allow you to embed the added image into the HTML IMG tag. With this functionality it's possible to generate HTML reports that can be shipped without depending on a file-layout or web-server.
The included DEMO VI shows you how to use this class (only the initiate function is required), and loads a sample file into your default web-browser.
By Ton PlompThis package consist of a series of tools in native LabVIEW 2010 code.
For encryption/decription the AES (Rijndael) routine is used with key sizes of 128, 192 and 256 bytes.
The encryption supports the following block modes:
For signing of string/packages it performs the SHA-1 and SHA-2 hashing, for MD5 hashing the OpenG functionality is used.
The hash functions return a binary string and a hex-formatted string with the hash.
The following hashes are supported:
MD5 (via OpenG library)
SHA-2 224 bit
SHA-2 256 bit
SHA-2 384 bit
SHA-2 512 bit
For Hashed key authentication the HMAC functionality is provided based on the supported hash functions.
The used functions are tested against NIST public test vectors.
The use of these functions is not: secure the code does not try to protect it's memory nor the used keys.
© Ton Plomp 2011 - No warranty implied.