<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://labviewwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jim+kring</id>
	<title>LabVIEW Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://labviewwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jim+kring"/>
	<link rel="alternate" type="text/html" href="https://labviewwiki.org/wiki/Special:Contributions/Jim_kring"/>
	<updated>2026-05-08T05:50:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_configuration_file/VI_Server&amp;diff=32205</id>
		<title>LabVIEW configuration file/VI Server</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_configuration_file/VI_Server&amp;diff=32205"/>
		<updated>2023-08-15T22:31:23Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: added server.viscripting.showScriptingOperationsInEditor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of LabVIEW ini File settings relating to VI Server behaviour. {{TOCright}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.app.propertiesEnabled&lt;br /&gt;
| example =server.app.propertiesEnabled=FALSE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Allow Application Methods and Properties&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =TRUE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.ole.enabled&lt;br /&gt;
| example =server.ole.enabled=FALSE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Enable the local LabVIEW OLE/ActiveX server&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =TRUE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.tcp.access&lt;br /&gt;
| example =server.tcp.access=&amp;quot;192.168.0.255&amp;quot;,&amp;quot;192.168.0.12&amp;quot;&lt;br /&gt;
| datatype =s&lt;br /&gt;
| description =TCP/IP Access List&lt;br /&gt;
| permitted_values =Comma-separated list of IP adresses - each IP address must be enclosed in &amp;quot;quotation&amp;quot; marks&lt;br /&gt;
| default =Empty&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.tcp.enabled&lt;br /&gt;
| example =server.tcp.enabled=TRUE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Enable the local LabVIEW TCP/IP server&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =FALSE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.tcp.paranoid&lt;br /&gt;
| example =server.tcp.paranoid=FALSE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Strict Checking&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =TRUE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.tcp.port&lt;br /&gt;
| example =server.tcp.port=3360&lt;br /&gt;
| datatype =i&lt;br /&gt;
| description =TCP/IP server port number&lt;br /&gt;
| permitted_values =1 to Unknown&lt;br /&gt;
| default =3363&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.vi.access&lt;br /&gt;
| example =server.vi.access=&amp;quot;+*&amp;quot;&lt;br /&gt;
| datatype =s&lt;br /&gt;
| description =Exported VIs list&lt;br /&gt;
| permitted_values =Unknown&lt;br /&gt;
| default =&amp;quot;+*&amp;quot;&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.vi.callsEnabled&lt;br /&gt;
| example =server.vi.callsEnabled=FALSE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Allow VI Calls&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =TRUE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.vi.propertiesEnabled&lt;br /&gt;
| example =server.vi.propertiesEnabled=FALSE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Allow VI Methods and Properties&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =TRUE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = server.viscripting.showScriptingOperationsInEditor&lt;br /&gt;
| example =server.viscripting.showScriptingOperationsInEditor=TRUE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Show VI Scripting functions, properties and methods&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =FALSE&lt;br /&gt;
| LV1 = 2009+&lt;br /&gt;
| LV2 = &lt;br /&gt;
| LV3 = &lt;br /&gt;
| LV4 = &lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = tcpServer.log&lt;br /&gt;
| example =tcpServer.log=TRUE&lt;br /&gt;
| datatype =b&lt;br /&gt;
| description =Enable TCP/IP server logging&lt;br /&gt;
| permitted_values =TRUE or FALSE&lt;br /&gt;
| default =FALSE&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = tcpServer.logDetails&lt;br /&gt;
| example =tcpServer.logDetails=&lt;br /&gt;
| datatype =Unknown&lt;br /&gt;
| description =Unknown&lt;br /&gt;
| permitted_values =&lt;br /&gt;
| default =&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ labviewconfigurationkey&lt;br /&gt;
| keyname = tcpServer.logPath&lt;br /&gt;
| example =tcpServer.logPath=FALSE&lt;br /&gt;
| datatype =p&lt;br /&gt;
| description =TCP/IP server logging filepath&lt;br /&gt;
| permitted_values =Any filepath&lt;br /&gt;
| default =Empty&lt;br /&gt;
| LV1 = 5&lt;br /&gt;
| LV2 = 6&lt;br /&gt;
| LV3 = 7&lt;br /&gt;
| LV4 = 8&lt;br /&gt;
| LV5 = &lt;br /&gt;
| LV6 = &lt;br /&gt;
| OS1 =w&lt;br /&gt;
| OS2 =m&lt;br /&gt;
| OS3 =l&lt;br /&gt;
| OS4 =u&lt;br /&gt;
| notes =None&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Configuration File|VI server]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Symbolic_path&amp;diff=31839</id>
		<title>Symbolic path</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Symbolic_path&amp;diff=31839"/>
		<updated>2022-09-05T20:02:52Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Resolving Symbolic Paths Programmatically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When files are located beneath certain special folders, callers that link to these files will link to them using a &#039;&#039;symbolic path&#039;&#039;, rather than an absolute or relative path.  The &#039;&#039;symbolic path&#039;&#039; will be relative to the special folder.  The following table lists these special folders and their &#039;&#039;symbolic path&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! symbolic path&lt;br /&gt;
! description&lt;br /&gt;
! actual path&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;userlib&amp;gt;&lt;br /&gt;
| User Libraries&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\user.lib&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;vilib&amp;gt;&lt;br /&gt;
| NI Libraries and Addons&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\vi.lib&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;instrlib&amp;gt;&lt;br /&gt;
| Instrument Drivers&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\instr.lib&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;helpdir&amp;gt;&lt;br /&gt;
| Help Files&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\help&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;osdatadir&amp;gt;&lt;br /&gt;
| Default file directory of the operating system&lt;br /&gt;
| (OS Dependent)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;menu&amp;gt;&lt;br /&gt;
| Palette Menus&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\menus&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;resource&amp;gt;&lt;br /&gt;
| Various VIs and resources used by LabVIEW and plugins, and generally not intended to be called by end-user applications.&lt;br /&gt;
&#039;&#039;Note this first appeared in LabVIEW 2012 (based on [https://forums.ni.com/t5/Developer-Center-Discussions/Make-the-LabVIEW-quot-resource-quot-folder-a-symbolic-path/td-p/3438293?profile.language=en this idea exchange post]) and prior to that it was not a symbolic path.&#039;&#039;&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that some of these can have the actual path changed by changing the settings in &#039;&#039;&#039;Tools&amp;gt;&amp;gt;Options&#039;&#039;&#039;. The whole point of the symbolic path is to indicate &amp;quot;load from whatever location this path is currently defined to be.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, if you have a VI located in the following location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LabVIEW&amp;gt;\user.lib\_OpenG.lib\array\array.llb\Conditional Auto-Indexing Tunnel__ogtk.vi&lt;br /&gt;
&lt;br /&gt;
Callers will link to this VI using the following &#039;&#039;symbolic path&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;userlib&amp;gt;\_OpenG.lib\array\array.llb\Conditional Auto-Indexing Tunnel__ogtk.vi&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;symbolic path&#039;&#039; are not generally encountered.  They are used mostly under the hood of LabVIEW, for example, when using the Application &#039;&#039;&#039;Linker:Read Info From File&#039;&#039;&#039; and &#039;&#039;&#039;Linker:Write Info To File&#039;&#039;&#039; methods.&lt;br /&gt;
&lt;br /&gt;
== Resolving Symbolic Paths Programmatically==&lt;br /&gt;
&lt;br /&gt;
You can call the private &#039;&#039;&#039;Resolve Symbolic Path&#039;&#039;&#039; method to convert a Symbolic Path to an absolute path, as shown in the screenshot, below.&lt;br /&gt;
&lt;br /&gt;
[[Image:ResolveSymbolicPath.png]]&lt;br /&gt;
&lt;br /&gt;
Note: That the &#039;Resolve Symbolic Path&#039; Application Method is only visible if you have set [[LabVIEW_configuration_file/Miscellaneous#SuperSecretPrivateSpecialStuff|SuperSecretPrivateSpecialStuff]]=True in your [[LabVIEW_configuration_file|LabVIEW configuration file]].&lt;br /&gt;
&lt;br /&gt;
== Auto update of symbolic paths ==&lt;br /&gt;
If you have a VI linked to another VI inside a symbolic path LabVIEW will automatically store the path symbolically. Here&#039;s the following use case:&lt;br /&gt;
&lt;br /&gt;
Suppose you want to build a LabVIEW tool that resides under the Tools menu but is also accessible via the user.lib palette. What you can do is create a set-up upon built like this:&lt;br /&gt;
&lt;br /&gt;
*[Built]&lt;br /&gt;
**[Tools]&lt;br /&gt;
***Menu VI&lt;br /&gt;
**[user.lib]&lt;br /&gt;
***Actual VI&lt;br /&gt;
&lt;br /&gt;
When you copy the contents of &#039;&#039;Built&#039;&#039; to the LabVIEW folder the &#039;&#039;Menu VI&#039;&#039; will have a relative path like &#039;&#039;..\user.lib\Actual VI&#039;&#039; when you do a resave of the &#039;&#039;Menu VI&#039;&#039; the path will be changed to an absolute path &#039;&#039;&amp;lt;userlib&amp;gt;\Actual VI&#039;&#039;. Now you can move the &#039;&#039;Menu VI&#039;&#039; around without breaking it.&lt;br /&gt;
&lt;br /&gt;
== When Using Modules (FPGA, RT, etc) ==&lt;br /&gt;
A symbolic path may resolve to different actual files on disk depending upon which target the VI is loaded into. So a VI that is written to use &amp;lt;vilib&amp;gt;\a.vi may use &amp;lt;labview&amp;gt;\vi.lib\a.vi when loaded for the desktop target, but may use &amp;lt;labview&amp;gt;\vi.lib\fpga\a.vi when loaded for the FPGA target.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://zone.ni.com/reference/en-XX/help/371361B-01/lvhowto/using_symbolic_paths/ LabVIEW Help: Using Symbolic Paths]&lt;br /&gt;
&lt;br /&gt;
[[Category:File IO]]&lt;br /&gt;
[[Category:Development Environment]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=NI_Connect_2022&amp;diff=31794</id>
		<title>NI Connect 2022</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=NI_Connect_2022&amp;diff=31794"/>
		<updated>2022-06-05T00:55:11Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added presenters to &amp;quot;Best Practices for Distributing IP&amp;quot; session&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{prevnext|NI Connect 2021|Events|}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:NI Connect Austin 2022.png|900px|frameless|center]]&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
== Links ==&lt;br /&gt;
*[https://www.ni.com/en-us/events/niconnect/austin.html NI Connect Website]&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
=== Automotive ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Testing_EV_Batteries_This_Is_What_Top_Performance_Looks_Like.pdf Testing EV Batteries? This Is What Top Performance Looks Like.]&lt;br /&gt;
|Join us for a demonstration of the new Battery Test System Software that enables you to test EV batteries like a top performer, with uncompromising quality and safety.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Create_Seamless_Design_to_Test_Inverter_Validation_Workflows.pdf Create Seamless Design-to-Test Inverter Validation Workflows]&lt;br /&gt;
|Join us in this session to learn how virtualization and NI’s model-based development approach can improve how design and validation teams perform in the SIL/MIL/HIL development cycle through an optimized user experience.&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Key_Considerations_for_EV_Battery_Testing_and_Validation.pdf Key Considerations for EV Battery Testing and Validation]&lt;br /&gt;
|Join NH Research’s session to learn about key considerations for testing EV batteries to ensure product performance, safety, reliability, and reduced time to market. Get new insights on how to simplify and accelerate your test approach with flexible and open solutions.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Mastering_Data_Record_for_ADAS_and_Autonomous_Driving_Together.pdf Mastering Data Record for ADAS and AD Together]&lt;br /&gt;
|In this session, you will learn how NI and its strategic partners Seagate Technology and Konrad Technologies have come together to deliver and continue to evolve a best-in-class solution for ADAS and AD data logging, by leveraging the expertise, technology, and services that only an ecosystem of subject matter experts can provide.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Mastering_Data_Replay_and_HIL_for_ADAS_and_Autonomous_Driving_Together.pdf Mastering Data Replay and HIL for ADAS and AD Together] &lt;br /&gt;
|In this session, you will learn how NI&#039;s approach to intelligent data replay and HIL can overcome test challenges by leveraging the expertise, technology, and services that only a subject matter expert can provide.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Mastering_Testing_and_Calibration_on_a_Virtual_Environment_for_ADAS_and_AD_Together.pdf Mastering Testing and Calibration on a Virtual Environment for ADAS and AD Together]&lt;br /&gt;
|In this session, the systems test engineering team from Continental shows how they implemented a virtual environment with monoDrive to test realistic scenarios as well as allowed calibration activities to be executed independently of external factors and in the early stages of the project to improve efficiency, quality, and planning.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Semiconductor &amp;amp; Electronics ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Accelerating_the_Semiconductor_Validation_Workflow_through_Software.pdf Accelerating the Semiconductor Validation Workflow through Software]&lt;br /&gt;
|Adapt to change effectively by modernizing validation workflows.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Enabling_Innovation_and_Productivity_across_the_Product_Development_Cycle_with_Data.pdf Enabling Innovation and Productivity across the Product Development Cycle with Data]&lt;br /&gt;
|Unlocking the power of data for smarter product life-cycle management&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Effortless_Digital_Interface_Compliance_Testing.pdf Effortless Digital Interface Compliance Testing]&lt;br /&gt;
|Protocol validation with NI’s new measurement framework&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_OpenRF_A_Vision_to_Advancing_5G_Adoption.pdf OpenRF: A Vision to Advancing 5G Adoption]&lt;br /&gt;
|OpenRF experts discuss how open platforms can help OEMs lower costs, increase performance, reduce time-to-market, and optimize inventory.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Beyond_5G.pdf Beyond 5G]&lt;br /&gt;
|A look into 5G advanced developments and 6G research&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Switching_to_a_Better_Solution_for%20CV_and_IV_Measurements.pdf Switching to A Better Solution for CV/IV Measurements]&lt;br /&gt;
|Improving CV/IC measurement accuracy while optimizing lab space&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Aerospace &amp;amp; Defense ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Failure_is_Not_an_Option_Maximize_Pace_and_Performance_with_NI_Solutions_for_Space.pdf Failure is Not an Option: Maximize Pace and Performance with NI Solutions for Space]&lt;br /&gt;
|Learn how NI can help your team accelerate test deployment while meeting increasing performance requirements with solutions for component and system level test, hardware in the loop test, bus and protocol level test, RF and communications systems test, EO/IR and payload test, structural test, launch operations, engine test and more.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_From_Tip_to_Tail_Solving_Defense_Aircraft_Test_Challenges.pdf From Tip to Tail: Solving Defense Aircraft Test Challenges]&lt;br /&gt;
|Learn about the wide variety of solutions from NI, and how to overcome the challenges that come with testing the many subsystems within defense aircraft - from the lab to the depot and everything in between.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Solving_the_Latest_Challenges_for_Testing_Electronically_Scanned_Array_Systems.pdf Solving the Latest Challenges for Testing Electronically Scanned Array Systems]&lt;br /&gt;
|Modern mission systems such as radar, electronic warfare, and satellite payloads are incorporating the latest electronically scanned arrays. To overcome these challenges, a scalable and nimble test solution is required to handle and validate a multitude of scenarios, ranging from parametric test of components to validation of systems while being able to correlate the test data throughout the product lifecycle.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Digital_Avionics_Interface_Selection.pdf Digital Avionics Interface Selection - Simplifying a Not So Simple Choice]&lt;br /&gt;
|Learn how you can simplify your digital avionics interface selection while reducing maintenance costs and improving system sustainability.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Rapidly_Prototyping_Cognitive_RF_Systems.pdf Rapidly Prototyping Cognitive RF Systems]&lt;br /&gt;
|Learn how you can use a new SDR-based architecture from NI to accelerate the development of novel capabilities for radar, electronic warfare, and communications.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Testing_Propulsion_Systems_Across_the_Aerospace_Industry.pdf Testing Propulsion Systems Across the Aerospace Industry]&lt;br /&gt;
|Improving CV/IC measurement accuracy while optimizing lab space&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software &amp;amp; Technologies ===&lt;br /&gt;
==== Data and Insights Track ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_A_Data_centric_Approach_to_the_Product_Lifecycle_Performance.pdf NI Lifecycle Solutions: A Data-centric Approach to Product Life Cycle Performance]&lt;br /&gt;
|Learn how we define ourselves within the digital transformation space with solutions and tools that empower a data-centric approach to the product lifecycle.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-  &lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Turning_Data_into_Actions_with_NI_Lifecycle_Solutions.pdf Turning Data into Actions with NI Lifecycle Solutions]&lt;br /&gt;
|A more granular and detailed look at how NI Lifecycle Solutions impact operational process through the Collect, Detect and Act stages of the framework.​&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_NI_in_Action_The_Key_to_Achieving_Your_KPIs.pdf NI in ACTION: The Key to Achieving Your KPIs]&lt;br /&gt;
|Actions across any Digital Transformation effort create the tangible benefits organizations gain from their investment, and at NI, these actions are the focus for any NI Lifecycle Solution we provide to our customers.&lt;br /&gt;
|- &lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Making_Actions_Smarter_with_AI_ML.pdf Making Actions Smarter with AI/ML]&lt;br /&gt;
|Machine learning (ML) and artificial intelligence (AI) are a new frontier in the analytics industry. NI Lifecycle Solutions provide the ideal system to enable long term adoption of ML and AI capabilities.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|- &lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Maximizing_Test_Value_with_Centralized_Orchestration.pdf Maximizing Test Value with Centralized Orchestration]&lt;br /&gt;
|A centralized look at test systems and the data they create opens new possibilities for efficiency across validation labs and production test footprints.​&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Bringing_It_All_Together_with_NI_Manufacturing.pdf Bringing It All Together with NI Manufacturing]&lt;br /&gt;
|Learn how the NI Manufacturing footprint is eagerly deploying our homegrown NI Lifecycle Solutions as we too, embark on our own digital transformation journey. ​&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Products and Technology Track ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_What_is_New_in_LabVIEW.pdf What&#039;s New in LabVIEW?]&lt;br /&gt;
|Experience the latest features LabVIEW 2022 has to offer.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_NI_TestScale_New_Instrumentation_Platform_for_Electronics_Functional_Test.pdf Product Launch: New Instrumentation Platform for Electronics Functional Test]&lt;br /&gt;
|See some of the new options for doing low-coverage/high-volume applications.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Product_Launch_New_Solution_for_Condition_Monitoring_and_Predictive_Maintenance_of_Test_Assets_and_Test_Facilities.pdf Product Launch: New Solution for Condition Monitoring and Predictive Maintenance of Test Assets and Test Facilities]&lt;br /&gt;
|Get to know some of the new advances in technology for predictive maintenance.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Why_You_Need_Bidirectional_DC_Supplies_with_Energy_Recovery_No_Video.pdf Why You Need Bidirectional DC Supplies with Energy Recovery]&lt;br /&gt;
|Increasing technology and renewable energy demands are driving innovation in test equipment manufacturers to produce programmable power sources and electronic loads that can satisfy the needs for higher power, faster response, and the capability to simulate complex operating scenarios while doing all of this with higher efficiency. Enter bidirectional, programmable DC power supplies with integrated regenerative electronic loads.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_How_to_Build_a_Web_UI_for_Your_LabVIEW_Based_Test_System.pdf How to Build a Web UI for Your LabVIEW-Based Test System]&lt;br /&gt;
|Learn about NI’s new G Web Development Software.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Sweep_like_a_Pro_Maximize_the_Functionality_of_Built_in_Sweeping_in_TestStand.pdf Sweep like a Pro-Maximize the Functionality of Built in Sweeping in TestStand]&lt;br /&gt;
|Learn how to streamline the characterization and validation of devices under a variety of input conditions. Get an in-depth tour of the sweeping capabilities added to TestStand including new sweep strategies, nested loop control, automatic variables, and static and dynamic modes.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Test Development and Management Track ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Validation_and_Time_To_Insight.pdf Validation and “Time to Insight”]&lt;br /&gt;
|In this session we’ll explore a real world case study from NI’s Professional Services team about how focusing on “time to insight” can improve your business performance.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|Panel: Evangelizing Test Beyond Your Team&lt;br /&gt;
|A discussion on how to help your organization see the real value of test&lt;br /&gt;
|View: FHD  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|Panel: Test Standardization - Holistic Approach to Process, Systems and Data&lt;br /&gt;
|Join the conversation with our panel of experts as we evolve the meaning of standardization to include a more holistic vision of your test strategy and organization.&lt;br /&gt;
|View: FHD  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Lessons_Learned_Building_a_New_Design_Methodology_for_a_Large_Channel_Count_Application.pdf Lessons Learned Building a New Design Methodology for a Large Channel Count Application]&lt;br /&gt;
|Hear a case study that provides key insights on how to meet technical (eg. TSN Synchronization), as well as architectural (redundancy, usability, deployment,) and process (benchmarking, documentation) challenges.&lt;br /&gt;
|View: FHD  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Best_Practices_for_Building_a_Rack_Based_Test_System.pdf Best Practices for Building a Rack-Based Test System]&lt;br /&gt;
|In this session, we discuss what you should consider when building a rack-based test system.&lt;br /&gt;
|View: FHD  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_From_Request_To_Success_%20Lets_Accelerate_Your_Validation_Workflow.pdf From Request To Success! Lets Accelerate Your Validation Workflow]&lt;br /&gt;
|Join the NI Product R&amp;amp;D team as they step through a complete validation workflow example and give their insights into the right tools (including Python) to use at every step.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Advanced Software Development and Deployment Track ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Date&lt;br /&gt;
!Start Time&lt;br /&gt;
!End Time&lt;br /&gt;
!Session&lt;br /&gt;
!Abstract&lt;br /&gt;
!Recording&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|11:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Simplifying_TestStand_Step_Settings_Panels_with_AutoProps_%20Session_Summary.pdf Simplifying TestStand Step Settings Panels with AutoProps]&lt;br /&gt;
|Learn about how you can use AutoProps, an undocumented feature in TestStand, to streamline custom step settings panel implementation to better enable rapid prototyping and even provide a production solution for simpler applications.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|2:30 PM&lt;br /&gt;
|3:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Maximizing_Your_Test_Operations_with_SystemLink.pdf Maximizing Your Test Operations with SystemLink™]&lt;br /&gt;
|Take a deep dive into SystemLink System and Asset Management.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tuesday, May 24&lt;br /&gt;
|3:30 PM&lt;br /&gt;
|4:15 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Best_Practices_for_Distributing_IP.pdf Best Practices for Distributing IP]&lt;br /&gt;
Presenters: Niki Budgell, Scott Richardson, and [[Jim_Kring_(LabVIEW_Champion)|Jim Kring]]&lt;br /&gt;
|Come hear about some of the best practices your organization use to better distribute your IP.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|9:00 AM&lt;br /&gt;
|9:45 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Connecting_To_Remote_Test_Systems.pdf Connecting to Remote Test Systems]&lt;br /&gt;
|Come discover how NI enables remote access by leveraging gRPC from any language and how you can develop custom remote APIS using LabVIEW’s gRPC support.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|10:15 AM&lt;br /&gt;
|11:00 AM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_Extend_InstrumentStudio_and_TestStand_with_Measurement_SDK.pdf InstrumentStudio Plug-In Dev Kit]&lt;br /&gt;
|Learn how to use the Measurement Framework Plug-In Development Kit to create interactive measurements that can be used through automation.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|-&lt;br /&gt;
|Wednesday, May 25&lt;br /&gt;
|11:15 AM&lt;br /&gt;
|12:00 PM&lt;br /&gt;
|[https://www.ni.com/content/dam/web/pdfs/niconnect/2022/austin/NI_Connect_2022_LabVIEW_Interfaces_Things_Better_Left_Unstated.pdf LabVIEW Interfaces: Things Better Left Unstated]&lt;br /&gt;
|Learn how to start using LabVIEW interfaces in your software architectures, which changes the design and testing of object-oriented software.&lt;br /&gt;
|View: YouTube  &lt;br /&gt;
Files: UHD, FHD, HD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:NI Connect]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Symbolic_path&amp;diff=30923</id>
		<title>Symbolic path</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Symbolic_path&amp;diff=30923"/>
		<updated>2021-01-23T22:58:33Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added the &amp;quot;resource&amp;quot; symbolic path.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When files are located beneath certain special folders, callers that link to these files will link to them using a &#039;&#039;symbolic path&#039;&#039;, rather than an absolute or relative path.  The &#039;&#039;symbolic path&#039;&#039; will be relative to the special folder.  The following table lists these special folders and their &#039;&#039;symbolic path&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! symbolic path&lt;br /&gt;
! description&lt;br /&gt;
! actual path&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;userlib&amp;gt;&lt;br /&gt;
| User Libraries&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\user.lib&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;vilib&amp;gt;&lt;br /&gt;
| NI Libraries and Addons&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\vi.lib&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;instrlib&amp;gt;&lt;br /&gt;
| Instrument Drivers&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\instr.lib&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;help&amp;gt;&lt;br /&gt;
| Help Files&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\help&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;osdatadir&amp;gt;&lt;br /&gt;
| Default file directory of the operating system&lt;br /&gt;
| (OS Dependent)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;menu&amp;gt;&lt;br /&gt;
| Palette Menus&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\menus&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;resource&amp;gt;&lt;br /&gt;
| Various VIs and resources used by LabVIEW and plugins, and generally not intended to be called by end-user applications.&lt;br /&gt;
&#039;&#039;Note this first appeared in LabVIEW 2012 (based on [https://forums.ni.com/t5/Developer-Center-Discussions/Make-the-LabVIEW-quot-resource-quot-folder-a-symbolic-path/td-p/3438293?profile.language=en this idea exchange post]) and prior to that it was not a symbolic path.&#039;&#039;&lt;br /&gt;
| &amp;lt;LabVIEW&amp;gt;\resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that some of these can have the actual path changed by changing the settings in &#039;&#039;&#039;Tools&amp;gt;&amp;gt;Options&#039;&#039;&#039;. The whole point of the symbolic path is to indicate &amp;quot;load from whatever location this path is currently defined to be.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, if you have a VI located in the following location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LabVIEW&amp;gt;\user.lib\_OpenG.lib\array\array.llb\Conditional Auto-Indexing Tunnel__ogtk.vi&lt;br /&gt;
&lt;br /&gt;
Callers will link to this VI using the following &#039;&#039;symbolic path&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;userlib&amp;gt;\_OpenG.lib\array\array.llb\Conditional Auto-Indexing Tunnel__ogtk.vi&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;symbolic path&#039;&#039; are not generally encountered.  They are used mostly under the hood of LabVIEW, for example, when using the Application &#039;&#039;&#039;Linker:Read Info From File&#039;&#039;&#039; and &#039;&#039;&#039;Linker:Write Info To File&#039;&#039;&#039; methods.&lt;br /&gt;
&lt;br /&gt;
== Resolving Symbolic Paths Programmatically==&lt;br /&gt;
&lt;br /&gt;
You can call the private &#039;&#039;&#039;Resolve Symbolic Path&#039;&#039;&#039; method to convert a Symbolic Path to an absolute path, as shown in the screenshot, below.&lt;br /&gt;
&lt;br /&gt;
[[Image:ResolveSymbolicPath.png]]&lt;br /&gt;
&lt;br /&gt;
== Auto update of symbolic paths ==&lt;br /&gt;
If you have a VI linked to another VI inside a symbolic path LabVIEW will automatically store the path symbolically. Here&#039;s the following use case:&lt;br /&gt;
&lt;br /&gt;
Suppose you want to build a LabVIEW tool that resides under the Tools menu but is also accessible via the user.lib palette. What you can do is create a set-up upon built like this:&lt;br /&gt;
&lt;br /&gt;
*[Built]&lt;br /&gt;
**[Tools]&lt;br /&gt;
***Menu VI&lt;br /&gt;
**[user.lib]&lt;br /&gt;
***Actual VI&lt;br /&gt;
&lt;br /&gt;
When you copy the contents of &#039;&#039;Built&#039;&#039; to the LabVIEW folder the &#039;&#039;Menu VI&#039;&#039; will have a relative path like &#039;&#039;..\user.lib\Actual VI&#039;&#039; when you do a resave of the &#039;&#039;Menu VI&#039;&#039; the path will be changed to an absolute path &#039;&#039;&amp;lt;userlib&amp;gt;\Actual VI&#039;&#039;. Now you can move the &#039;&#039;Menu VI&#039;&#039; around without breaking it.&lt;br /&gt;
&lt;br /&gt;
== When Using Modules (FPGA, RT, etc) ==&lt;br /&gt;
A symbolic path may resolve to different actual files on disk depending upon which target the VI is loaded into. So a VI that is written to use &amp;lt;vilib&amp;gt;\a.vi may use &amp;lt;labview&amp;gt;\vi.lib\a.vi when loaded for the desktop target, but may use &amp;lt;labview&amp;gt;\vi.lib\fpga\a.vi when loaded for the FPGA target.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://zone.ni.com/reference/en-XX/help/371361B-01/lvhowto/using_symbolic_paths/ LabVIEW Help: Using Symbolic Paths]&lt;br /&gt;
&lt;br /&gt;
[[Category:File IO]]&lt;br /&gt;
[[Category:Development Environment]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=GLA_Summit_2020/Managing_Code_Dependencies_and_Virtual_Environments_in_LabVIEW&amp;diff=30491</id>
		<title>GLA Summit 2020/Managing Code Dependencies and Virtual Environments in LabVIEW</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=GLA_Summit_2020/Managing_Code_Dependencies_and_Virtual_Environments_in_LabVIEW&amp;diff=30491"/>
		<updated>2020-11-14T01:02:29Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Managing Code Dependencies and Virtual Environments in LabVIEW&#039;&#039;&#039; by [[Jim Kring (LabVIEW Champion)|Jim Kring]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&amp;lt;youtube width=&amp;quot;800&amp;quot; height=&amp;quot;600&amp;quot;&amp;gt;UGn7HVydt5I&amp;lt;/youtube&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Presentation Links ==&lt;br /&gt;
* [https://youtu.be/UGn7HVydt5I Link to video on YouTube]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[VI Package Manager]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [https://www.vipm.io vipm.io]&lt;br /&gt;
&lt;br /&gt;
[[File:Gla-mascot@0.5x.png|thumb|Stealthcat]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:Gla-mascot@0.5x.png&amp;diff=30490</id>
		<title>File:Gla-mascot@0.5x.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:Gla-mascot@0.5x.png&amp;diff=30490"/>
		<updated>2020-11-14T01:02:02Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gla-mascot@0.5x&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=GLA_Summit_2020/Managing_Code_Dependencies_and_Virtual_Environments_in_LabVIEW&amp;diff=30489</id>
		<title>GLA Summit 2020/Managing Code Dependencies and Virtual Environments in LabVIEW</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=GLA_Summit_2020/Managing_Code_Dependencies_and_Virtual_Environments_in_LabVIEW&amp;diff=30489"/>
		<updated>2020-11-14T00:57:09Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Managing Code Dependencies and Virtual Environments in LabVIEW&amp;#039;&amp;#039;&amp;#039; by Jim Kring  &amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&amp;lt;youtube width=&amp;quot;800&amp;quot; height...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Managing Code Dependencies and Virtual Environments in LabVIEW&#039;&#039;&#039; by [[Jim Kring (LabVIEW Champion)|Jim Kring]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&amp;lt;youtube width=&amp;quot;800&amp;quot; height=&amp;quot;600&amp;quot;&amp;gt;UGn7HVydt5I&amp;lt;/youtube&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Presentation Links ==&lt;br /&gt;
* [https://youtu.be/UGn7HVydt5I Link to video on YouTube]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[VI Package Manager]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [https://www.vipm.io vipm.io]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=VIWeek_2020&amp;diff=27610</id>
		<title>VIWeek 2020</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=VIWeek_2020&amp;diff=27610"/>
		<updated>2020-05-21T16:29:50Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Saturday, 23rd May 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Events]] - VIWeek&lt;br /&gt;
[[File:VIWeek Logo, Title, and Tagline.png|VIWeek|700px|center|link=https://forums.ni.com/t5/Random-Ramblings-on-LabVIEW/VIWeek-Making-Trouble-Again/ba-p/4044162]]&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
VIWeek is a free community-led virtual event that was first held in 2020 at the time [[NIWeek]] would have taken place. The content focuses on both LabVIEW and good software engineering practices. All the sessions are hosted individually by the presenters themselves. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
!&amp;lt;span  style=&amp;quot;font-size:200%;&amp;quot;&amp;gt;&#039;&#039;&#039;Visit the VIWeek Portal at [https://bit.ly/viweek https://bit.ly/viweek] for the full agenda.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Discussions during presentations happen here: https://discord.gg/a4WA8Bm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[https://www.dsh-workshops.com/ DSH Workshops] had planned to hold a number of workshops at and around NIWeek 2020. Due to the COVID-19 situation, and seeing as [[NI]] had also cancelled all live, in-person events, the workshops had to be cancelled, too. In order to entertain the community and keep in touch with their friends, the team (Fabiola De la Cueva, Steve Watts, Joerg Hampel and Brian Powell) decided to hold a series of live, virtual sessions during the week formerly know as NIWeek.&lt;br /&gt;
&lt;br /&gt;
Conversation about these sessions led other LabVIEW Champions and Community leaders to throw around the idea of a new community-led virtual event. When Steve Watts went on to [https://forums.ni.com/t5/Random-Ramblings-on-LabVIEW/VIWeek-Making-Trouble-Again/ba-p/4044162 advertise this idea on his blog], &#039;&#039;&#039;VI Week&#039;&#039;&#039; was born. There are many community members to thank, see the [[#Special Thanks]] section below.&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
The speed and simplicity of how this event came together is a testament to the LabVIEW community. It took only about a week to get from the first thoughts to a finalised agenda and an understanding of how to execute the whole event:&lt;br /&gt;
&lt;br /&gt;
* Mid-April: DSH Workshops decides to hold a series of virtual sessions.&lt;br /&gt;
* April 30: DSH Workshops [https://www.linkedin.com/feed/update/urn:li:activity:6661585876386099200 publishes their events] under the &#039;&#039;&#039;#Virtual NIWeek&#039;&#039;&#039; hashtag.&lt;br /&gt;
* May 2: Chris Stryker coins the term &#039;&#039;&#039;#VIWeek&#039;&#039;&#039;, based on the original &#039;&#039;#Virtual NIWeek&#039;&#039;. &lt;br /&gt;
* May 3: Steve Watts publishes his blog post.&lt;br /&gt;
* May 7: Enough presentations to fill all 5 originally planned days of NIWeek.&amp;lt;ref&amp;gt;&#039;&#039;[https://www.linkedin.com/posts/joerghampel_labview-community-viweek-activity-6664289248297926656-Q0pm LinkedIn Post]&#039;&#039;, [[Joerg_Hampel_(LabVIEW_Champion)|Joerg Hampel]], May 7th 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By May 17, the first day of the event, the community has not only come up with now 6 days worth of content, but also agreed on both a plan and tools for organising, advertising, holding, streaming and recording the presentations.&lt;br /&gt;
===[https://youtu.be/ftBU5-L3MLQ Introduction to VIWeek from] [[Chris Cilino (LabVIEW Champion)|Chris Cilino]]===&lt;br /&gt;
&amp;lt;center&amp;gt;:&amp;lt;youtube&amp;gt;ftBU5-L3MLQ&amp;lt;/youtube&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Sunday, 17&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/GCentral: State of the Union and Rolling Up Your Sleeves|GCentral: State of the Union and Rolling Up Your Sleeves]]&#039;&#039;&#039; by Chris Cilino and Danielle Jobe&lt;br /&gt;
*:&#039;&#039;GCentral is a non profit organization founded in late 2019. The vision: a LabVIEW community empowered to make the best version of itself. The mission: reduce/remove barriers to collaboration. In this presentation, we&#039;ll introduce you to GCentral and give a progress update. And we&#039;ll show you how we can all work together to make GCentral a reality.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/LabVIEW FPGA for high throughput applications|LabVIEW FPGA for high throughput applications]]&#039;&#039;&#039; by Terry Stratoudakis&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Functional programming inspired object-oriented template in LabVIEW + SOLID|Functional programming inspired object-oriented template in LabVIEW + SOLID]]&#039;&#039;&#039; by Piotr Kruczkowski ([https://www.linkedin.com/pulse/functional-programming-inspired-object-oriented-piotr-kruczkowski/ LinkedIn Article])&lt;br /&gt;
&lt;br /&gt;
==  Monday, 18&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[DSH_Workshops#DSH_VIWeek_Pragmatic_SW_Engineering|DSH #VIWeek Pragmatic SW Engineering]]&#039;&#039;&#039; by DSH Gang: Fabiola De la Cueva, Steve Watts, Joerg Hampel, &amp;amp; Brian Powell&lt;br /&gt;
*:&#039;&#039;Join us and fight the NIWeek blues. In this one-hour event, we (the whole DSH gang: Fab, Steve, Joerg and Brian) will be:&amp;lt;br&amp;gt;- talking about who we are and what we do&amp;lt;br&amp;gt;- asking you about your needs and pain points&amp;lt;br&amp;gt;- answering any questions you might have&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Philosophy of Coding - How to be a CraftsPerson|Philosophy of Coding - How to be a CraftsPerson]]&#039;&#039;&#039; by Sam Taggart&lt;br /&gt;
*:&#039;&#039;A discussion of how what we value and the way we think about the process of developing software affects the end result. No LabVIEW code, just a high level discussion of software engineering. I&#039;ve got a short presentation on our values at SAS and how we approach software development. I&#039;ll give that and I&#039;d like to get some feedback. Then I&#039;d like to have a discussion and ask the audience some questions like, what software qualities are important to you? What processes do you think are critical to ensuring software quality? What quality is most important in a junior engineer? How can we do a better job of training junior engineers?&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Confessions of a Retired Superhero|Confessions of a Retired Superhero]]&#039;&#039;&#039; by Matt Pollock&lt;br /&gt;
*:&#039;&#039;Crazy projects demand crazy solutions. Crazy solutions create crazy bugs. Come learn from spectacular failures (or near failures) that have threatened to torpedo other projects so yours will be safe from heroics.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==  Tuesday, 19&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Proper way to communicate over serial|Proper way to communicate over serial]]&#039;&#039;&#039; by Tim Robinson&lt;br /&gt;
*:&#039;&#039;Too many users look to the Simple Serial Write Read example in LabVIEW and then struggle to achieve solid, robust communication with their instrument. This is because the example does not properly discuss or handle any of the real-world communication schemes instruments use. At this session, explore these schemes and learn how to handle each case.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Raspberry Pi / LABVIEW CE and Sensors|Raspberry Pi / LABVIEW CE and Sensors]]&#039;&#039;&#039; by Sam Sharp&lt;br /&gt;
*:&#039;&#039;Sam will demonstrate/show how to get started programming the Raspberry Pi using the LabVIEW 2020 Community Edition with a live/practical demo. He&#039;ll then expand this to show off his open-source library of drivers for a range of off-the-shelf sensors/hats so you can connect your Raspberry Pi to the physical world.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Linx Toolkit for Intermediate Robotics with Raspberry Pi|Linx Toolkit for Intermediate Robotics with Raspberry Pi]]&#039;&#039;&#039; by Derrick Bommarito&lt;br /&gt;
*:&#039;&#039;I&#039;ll be demonstrating how I&#039;ve used the updated Linx Toolkit for LabVIEW Community Edition to develop remote control and autonomous rovers using the Raspberry Pi along with a handful of sensors. We&#039;ll take a look at the high level architecture of the software along with the open source libraries I&#039;m developing that target autonomous robotics projects. We&#039;ll also discuss how you can accomplish better performance for more demanding projects by developing custom firmware for arduino clones instead of using the Linx toolkit to interface to microcontrollers.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/FPGA Advanced Sessions to create a versatile FPGA-based acquisition system|FPGA Advanced Sessions to create a versatile FPGA-based acquisition system]]&#039;&#039;&#039; by Cyril Gambini&lt;br /&gt;
*:&#039;&#039;Creating an FPGA-based acquisition and control system is challenging if the hardware target changes and the bitfiles to load are completely different from one target to the next. Learn how you can handle completely different FPGA personalities within the same application using LabVIEW FPGA Advanced Session Resources. At this session, explore a VeriStand distributed DAQ system featuring multiple CompactRIO devices configured differently based on the test to perform (analyzing the electrical and mechanical behaviors of alternators) and the test&#039;s measurement requirements (currently more than 20 different configurations across four target references).&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/8 Reasons for encapsulating your next device driver inside a DQMH module|8 Reasons for encapsulating your next device driver inside a DQMH module]]&#039;&#039;&#039; by Christopher Farmer&lt;br /&gt;
*:&#039;&#039;Do you hate it when software throws an awful error if a device is not connected, and it just stops or crashes as a result? Do you have multiple instances of the same device that you need to manage? Do you find that your applications get so cluttered with code specific to managing devices? Do you like to see what a device is up to “under the hood” whilst you run an automated sequence? If you’re facing any of these challenges, then we’re confident this presentation will help you! Using a DQMH module to encapsulate your next device driver will eliminate these issues. Register below to learn how.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==  Wednesday, 20&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[DSH_Workshops#DSH_VIWeek_DQMH_5.0_Introduction|DSH DQMH 5.0 Introduction]]&#039;&#039;&#039; by DSH -  Fabiola De la Cueva &amp;amp; Joerg Hampel&lt;br /&gt;
*:&#039;&#039;Hear it directly from the horse&#039;s mouth! Learn what&#039;s new in DQMH 5.0. In this one-hour event, we (Fabiola and Joerg) will walk you through the new features of DQMH 5.0. We&#039;ll also give insights into how these features actually help with our daily work.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Efficient Programming in LabVIEW|Efficient Programming in LabVIEW]]&#039;&#039;&#039; by Tom McQuillan&lt;br /&gt;
*:&#039;&#039;In this session, I&#039;m going to showcase Project Templates. After choosing to go down a DQMH route for a project (after being a hardcore Actor Framework user), I realized there were certain aspects of AF I missed. Namely, the ability to reuse messages between modules. In this session, I will showcase a solution to this using Project Templates and how templates could be used for your modular applications. I&#039;ll also showcase some scripting tools that were possible using templates.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Using a Message Broker with DQMH Actors for High Speed/Throughput Data logging|Using a Message Broker with DQMH Actors for High Speed/Throughput Data logging]]&#039;&#039;&#039; by Chris Roebuck and Becky Linton&lt;br /&gt;
*:&#039;&#039;Tasked with creating a hardware agnostic, highly configurable, high-throughput data logger for ADAS applications we implemented the Mediator pattern using multiple modified-DQMH actors with a message broker. In this session we will review the requirements, high level design objectives and review the solution and take a deeper dive in to some of the specific technologies used such as malleable VIs, eDVRs and Message Brokers.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Graphical programming beyond G - Use case of LabVIEW integration with Node-RED|Graphical programming beyond G - Use case of LabVIEW integration with Node-RED]]&#039;&#039;&#039; by Michal Radziwon&lt;br /&gt;
*:&#039;&#039;Dataflow programming is not only about G and LabVIEW! There is more and more of other platforms that uses graphical programming and one of them is Node-RED. Node-RED is a programming tool build to ease connecting and automating IoT enabled devices, APIs, and web-services. I will show a use case of integrating LabVIEW with Node-RED using MQTT server - all running on a Raspberry Pi.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==  Thursday, 21&amp;lt;sup&amp;gt;st&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/CEF (configuration editor framework)|CEF (configuration editor framework)]]&#039;&#039;&#039; by Sreejith Sreenivasan &amp;amp; Vikas Koujalagi&lt;br /&gt;
*:&#039;&#039;Configuration files are commonly used to specify application settings and hardware configuration. Manual editing of some of the complex configuration files of hardware systems or applications are often error prone. Shipping a configuration editor can ease the pain but development overheads may outweigh the benefits. Configuration Editor Framework (CEF) from NI Systems Engineering is a versatile framework allowing rapid development of such editors. Development generally take hours instead of days or weeks. This presentation delves in to the features and walks through an example which saves the files in JSON format.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Using the new TLS/SSL functions in LabVIEW 2020|Using the new TLS/SSL functions in LabVIEW 2020]]&#039;&#039;&#039; by Sam Sharp&lt;br /&gt;
*:&#039;&#039;Sam will go through the newly added SSL/TLS functions in LabVIEW 2020 which enables secure TCP/IP communications in LabVIEW. This session should provide enough information to be able to implement secure TCP/IP communications in your own applications and learn why you should. He&#039;ll also demonstrate an update to his WebSockets library that enables secure WebSockets (wss://) support - a highly requested feature now possible with LabVIEW 2020.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[DSH_Workshops#DSH_VIWeek_Soft_Skills_for_Software_Engineers|DSH Soft Skills for Software Engineers Discussion]]&#039;&#039;&#039; by DSH Gang: Fabiola De la Cueva, Steve Watts, Joerg Hampel, &amp;amp; Brian Powell&lt;br /&gt;
*:&#039;&#039;Bit of a chat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==  Friday, 22&amp;lt;sup&amp;gt;nd&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/VIWeek – Open Your Instruments With A G Interfaces HAL In LV2020 (No Lever Tool Required!!)|#VIWeek – Open Your Instruments With A G Interfaces HAL In LV2020 (No Lever Tool Required!!)]]&#039;&#039;&#039; by Jonathan Hird (Jono)&lt;br /&gt;
*:&#039;&#039;The recent release of LV2020 Community edition has opened up the new capability of “Interfaces” into the LVOOP world. I for one am incredibly excited about what this means specifically for Hardware Abstraction Layers. After some initial trudging through the mud and not quite seeing the value in interfaces for my specific needs for a HAL, I decided to scrap what I had, start from scratch and work logically to put together an example of a “Real World” HAL application. In this session we will briefly cover the Why, What and How of HALs and how interfaces may help along with some sample code which will be uploaded for community use as a good starting point.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/The Core Framework|The Core Framework]]&#039;&#039;&#039; by Denis Stavila&lt;br /&gt;
*:&#039;&#039;It&#039;s something that I built on top of the Actor Framework and aims at solving several shortcomings that I believe AF has ... plus a lot of tweaks and built-in functionality to make the life of a developer much easier: - Internal broadcast system - Debugging/Monitoring tools - UI structuring and configuration - User Access tools .... etc.&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Mock Object Framework|Mock Object Framework]]&#039;&#039;&#039; by Sam Taggart&lt;br /&gt;
*:&#039;&#039;I will present an open source tool for creating Mock objects and show how to use them in tests. It will be an informal kind of code review thing. I might put together a few slides on what Mock Objects are so we are all on the same page. After that I will just start with defining the problem and then how I came up with the solution. We will spend a lot of time just looking at the code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==  Saturday, 23&amp;lt;sup&amp;gt;rd&amp;lt;/sup&amp;gt; May 2020 ==&lt;br /&gt;
*&#039;&#039;&#039;[[VIWeek 2020/Fast and Simple Unit Testing with Caraya 1.0|Fast and Simple Unit Testing with Caraya 1.0]]&#039;&#039;&#039; by Francois Normandin and Jim Kring ([https://bit.ly/VIWeek-Registration-Caraya-LabVIEW-Unit-Testing Register for this Session])&lt;br /&gt;
*:&#039;&#039;Almost everyone writes code to test their code. Caraya, a unit test framework for LabVIEW, makes it simple to turn those test VIs into unit tests that can be reused throughout the life of the project. With a focus on ease of use and lightning fast execution time, Caraya allows you to write and run tests without adding much overhead to your development work. Come see how you can create and run a test in under a minute, run all the tests in your project with a simple QuickDrop shortcut, and integrate your tests into a fully-automated build and deploy process. You’ll also learn about advanced features like running tests on real-time targets, creating custom test report formats, and more!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Special Thanks ==&lt;br /&gt;
* Chris Stryker for the name.&lt;br /&gt;
* Steve Watts for the organization.&lt;br /&gt;
* Derrick Bommarito for the web portal.&lt;br /&gt;
* Michal Radziwon for the Discord chat server.&lt;br /&gt;
* [[Quentin &amp;quot;Q&amp;quot; Alldredge (LabVIEW Champion)|Quentin &amp;quot;Q&amp;quot; Alldredge]] for the Logo.&lt;br /&gt;
* Michael Avaliotis of [https://vishots.com/ VIShots] for the video recording.&lt;br /&gt;
* All of the presenters&lt;br /&gt;
* And many more who will hopefully be added to this list.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:VIWeek]]&lt;br /&gt;
[[Category:Videos]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Package_Manager_Comparison&amp;diff=27538</id>
		<title>Package Manager Comparison</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Package_Manager_Comparison&amp;diff=27538"/>
		<updated>2020-05-20T01:54:42Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: VIPM integrates into the LabVIEW IDE (palette refresh, mass compile, active LabVIEW version detection, and more). Users can publish free open source packages to public VIPM Community repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the comparison of package management solutions in the LabVIEW community.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Characteristic !! [[VI Package Manager]] (Community Non-Commercial, Free Commercial, Pro $599) !! [[NI Package Manager]] !! [[G Package Manager]] ([[GPM]])&lt;br /&gt;
|-&lt;br /&gt;
| Installs With LabVIEW || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Created By|| JKI || National Instruments || MGI (Moore Good Ideas)&lt;br /&gt;
|-&lt;br /&gt;
| Year Released || 2006 || 2017 || 2018&lt;br /&gt;
|-&lt;br /&gt;
| Open Source || No || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Language Written In || G || C# || G&lt;br /&gt;
|-&lt;br /&gt;
| Free To Install || Yes (Community &amp;amp; Free) || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| API || Yes (Community &amp;amp; Pro) || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Local repository management&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; || Yes (Pro) || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Supports multiple LabVIEW versions from a single package || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Natively supports mass compile after install || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Scope of package installation&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || LabVIEW IDE or OS File System || OS File System || Per Project&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Supports LabVIEW NXG || No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Integrates Into LabVIEW IDE&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; || Yes || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Integrates Into LabVIEW NXG IDE&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; || No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Create palettes as a part of the package creation || Yes || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Installation to symbolic paths (user.lib) || Yes || No || N/A&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Support Structure || [https://forums.jki.net/forum/5-vi-package-manager-vipm/ Free &amp;amp; Community] or Paid Direct || [https://forums.ni.com/t5/NI-Package-Manager-NIPM/bd-p/1023 NI Forums] || [https://gitlab.com/mgi/gpm/gpm/wikis/home GitLab Issue Tracking and Wiki]&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Supports Pre Build Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via Source Distribution, G Code || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Post Build Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via Source Distribution, G Code || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Pre Install Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Advanced: must [https://forums.ni.com/t5/NI-Package-Management/Manually-Pack-and-Unpack-Packages/ta-p/3956905 pack the package]) || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Post Install Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Configurable from LabVIEW IDE)|| No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Pre Uninstall Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Configurable from LabVIEW IDE)|| No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Post Uninstall Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Advanced: must [https://forums.ni.com/t5/NI-Package-Management/Manually-Pack-and-Unpack-Packages/ta-p/3956905 pack the package]) || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports N post install/pre uninstall steps || No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports N Post Install All steps|| No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Automatic Dependency Scanning&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; || Yes (Community &amp;amp; Pro) || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Has a dedicated package manager application || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Packages Searchable via Web Page || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Has a community repository of packages&amp;lt;sup&amp;gt;12&amp;lt;/sup&amp;gt; || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Can list packages created by other package managers as dependencies&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; || No || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports 64 bit without manual intervention?&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports offline\copies of repositories&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; || Yes (Pro) ||  || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Detail Number !! Additional Information&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Repository types: A global repository is accessible to anyone. A local repository is created by an individual (company, etc.) and hosted on a local server.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Scope of Package Installation: determines if multiple versions of a package are allowed or if you may have only one version of a package. &lt;br /&gt;
|-&lt;br /&gt;
| 3 || GPM can place files anywhere. However, as of 0.2.0-35, GPackages installed for LabVIEW 64 bit will open, but cant find linked VIs. The GPackage(s) directories must be mass compiled to allow LabVIEW to relink the VIs to eachother.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Example&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LabVIEW IDE Coming Soon&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Coming Soon&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Only packages of the same type can be listed as dependencies. For example, a VI Package can only depend on other VI Packages. A VI Package cannot depend on a NI Package. &lt;br /&gt;
|-&lt;br /&gt;
| 8 || There is no user experience to find, install, upgrade, remove, or autodetect packages from within the LabVIEW IDE.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || NI Package manager is integrated into the NXG IDE so that the user may find the package responsible for installing missing gvis without leaving the IDE.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || GPM is open source.  The community can contribute to fix issues, add features and make support better.&lt;br /&gt;
|-&lt;br /&gt;
| 11 || For some organizations, a connection to the internet is not allowed. This feature allows you to internet-based repositories and host them locally for your organization.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || A community package repository is not governed or gated by any organization. Community members are free to upload/download packages without oversight. &lt;br /&gt;
|}&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://vipm.jki.net VI Package Manager]&lt;br /&gt;
* [https://www.ni.com/en-us/support/downloads/ni-package-manager.html NI Package Manager]&lt;br /&gt;
* [https://gpackage.io G Package Manager]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Package_Manager_Comparison&amp;diff=10627</id>
		<title>Package Manager Comparison</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Package_Manager_Comparison&amp;diff=10627"/>
		<updated>2020-03-19T19:07:16Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Updated VIPM information to be current with 2020&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the comparison of package management solutions in the LabVIEW community.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Characteristic !! [[VI Package Manager]] (Community Non-Commercial, Free Commercial, Pro $599) !! [[NI Package Manager]] !! [[G Package Manager]] ([[GPM]])&lt;br /&gt;
|-&lt;br /&gt;
| Installs With LabVIEW || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Created By|| JKI || National Instruments || MGI (Moore Good Ideas)&lt;br /&gt;
|-&lt;br /&gt;
| Year Released || 2006 || 2017 || 2018&lt;br /&gt;
|-&lt;br /&gt;
| Open Source || No || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Language Written In || G || C# || G&lt;br /&gt;
|-&lt;br /&gt;
| Free To Install || Yes (Community &amp;amp; Free) || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| API || Yes (Community &amp;amp; Pro) || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Local repository management&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; || Yes (Pro) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports multiple LabVIEW versions from a single package || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Natively supports mass compile after install || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Scope of package installation&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || LabVIEW IDE or OS File System || LabVIEW IDE || Per Project&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Supports LabVIEW NXG || No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Integrates Into LabVIEW IDE&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; || No || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Integrates Into LabVIEW NXG IDE&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; || No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Create palettes as a part of the package creation || Yes || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Installation to symbolic paths (user.lib) || Yes || No || N/A&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Support Structure || [https://forums.jki.net/forum/5-vi-package-manager-vipm/ Free &amp;amp; Community] or Paid Direct || [https://forums.ni.com/t5/NI-Package-Manager-NIPM/bd-p/1023 NI Forums] || [https://gitlab.com/mgi/gpm/gpm/wikis/home GitLab Issue Tracking and Wiki]&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Supports Pre Build Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via Source Distribution, G Code || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Post Build Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via Source Distribution, G Code || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Pre Install Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Advanced: must [https://forums.ni.com/t5/NI-Package-Management/Manually-Pack-and-Unpack-Packages/ta-p/3956905 pack the package]) || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Post Install Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Configurable from LabVIEW IDE)|| No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Pre Uninstall Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Configurable from LabVIEW IDE)|| No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Post Uninstall Step || Yes, G Code (Community &amp;amp; Pro) || Yes - via exe/bat (Advanced: must [https://forums.ni.com/t5/NI-Package-Management/Manually-Pack-and-Unpack-Packages/ta-p/3956905 pack the package]) || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports N post install/pre uninstall steps || No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports N Post Install All steps|| No || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports Automatic Dependency Scanning&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; || Yes (Community &amp;amp; Pro) || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Has a dedicated package manager application || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Packages Searchable via Web Page || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Has a community repository of packages || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Can list packages created by other package managers as dependencies&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; || No || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports 64 bit without manual intervention?&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Supports offline\copies of repositories&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; || Yes (Pro) ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Detail Number !! Additional Information&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Repository types: A global repository is accessible to anyone. A local repository is created by an individual (company, etc.) and hosted on a local server.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Scope of Package Installation: determines if multiple versions of a package are allowed or if you may have only one version of a package. &lt;br /&gt;
|-&lt;br /&gt;
| 3 || GPM can place files anywhere. However, as of 0.2.0-35, GPackages installed for LabVIEW 64 bit will open, but cant find linked VIs. The GPackage(s) directories must be mass compiled to allow LabVIEW to relink the VIs to eachother.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Example&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LabVIEW IDE Coming Soon&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Coming Soon&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Only packages of the same type can be listed as dependencies. For example, a VI Package can only depend on other VI Packages. A VI Package cannot depend on a NI Package. &lt;br /&gt;
|-&lt;br /&gt;
| 8 || There is no user experience to find, install, upgrade, remove, or autodetect packages from within the LabVIEW IDE.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || NI Package manager is integrated into the NXG IDE so that the user may find the package responsible for installing missing gvis without leaving the IDE.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || GPM is open source.  The community can contribute to fix issues, add features and make support better.&lt;br /&gt;
|-&lt;br /&gt;
| 11 || For some organizations, a connection to the internet is not allowed. This feature allows you to internet-based repositories and host them locally for your organization.&lt;br /&gt;
|}&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://vipm.jki.net VI Package Manager]&lt;br /&gt;
* [https://www.ni.com/en-us/support/downloads/ni-package-manager.html NI Package Manager]&lt;br /&gt;
* [https://gpackage.io G Package Manager]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Functional_global_variable&amp;diff=3063</id>
		<title>Functional global variable</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Functional_global_variable&amp;diff=3063"/>
		<updated>2007-10-08T10:45:15Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* External Links */ changed Design Patters category to upper case to match actual category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCnestright}}&lt;br /&gt;
Functional Globals are VIs that allow controlled access to data or resources, often allowing various actions to be performed.  Functional Globals (FGs) most often make use of uninitialized shift registers (USRs).  USRs are shift registers that do not have a wired input coming into the left side of the loop.  A USR stores its data between successive runs of the VI as long as the VI remains in memory.&lt;br /&gt;
&lt;br /&gt;
==Alternative Nomenclature==&lt;br /&gt;
Functional Globals are known by various names among LabVIEW programmers.&lt;br /&gt;
*LV2 globals – because LV2 supported uninitialized shift registers&lt;br /&gt;
*USR globals – since most FGs make use of uninitialized shift registers&lt;br /&gt;
* VIG - &amp;quot;VI Global&amp;quot; as the VI performs the functionality of a global&lt;br /&gt;
*Action Engines – it has been argued [http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328&amp;amp;query.id=618807#M240328] that the term Functional Globals should refer to VIs that just allow read/write access to data.  Action Engines would refer to the larger set of VIs that allow some defined action on the data. &lt;br /&gt;
&lt;br /&gt;
The official name for these constructs in NI literature is Functional Global Variable, and a [http://forums.lavag.org/index.php?showtopic=2469&amp;amp;st=0 survey] on LAVA indicated that Functional Globals is also the most popular choice.&lt;br /&gt;
&lt;br /&gt;
==Structure==&lt;br /&gt;
The most common form of a Functional Global is a [[While Loop]] with a TRUE wired to the stop condition.  This forces the loop to terminate after just one execution, meaning the while loop is only used to provide a place to put USRs.  A [[For Loop]] could also be used with a constant wired to the count terminal.  Another method is to use a single-element queue to store the data, though this requires more mouse clicks to implement.  The performance of each of these is very close and most likely will vary a little from computer to computer.&lt;br /&gt;
&lt;br /&gt;
[[Image:Simple_FG.PNG|frame|center|Simple Functional Global using a While Loop]]&lt;br /&gt;
&lt;br /&gt;
In order to specify what action to perform, an [[enumerated type]] is often used as an input to the Functional Global.  Other methods are possible (Booleans, First Call?, etc.), but an enumerated type provides for a readable, extensible list of actions.  Furthermore, saving the enumerated type as a typedef control makes any changes to the list automatically update wherever the Functional Global is used in the code.  The ‘action’ input is fed to a case structure which contains the code to implement for each of the defined actions.&lt;br /&gt;
&lt;br /&gt;
For more complex situations, multiple actions can be performed on a single call to the FG.  This can be a straightforward [[state machine]], or it can allow for different actions based on the data received or on the existence of resources, etc.&lt;br /&gt;
&lt;br /&gt;
The data in a Functional Global could be of any type, but very often there will be several data elements in a single FG.  It is helpful to group the data into a cluster to limit the number of wires entering and leaving the FG.  Designing the data structures and how you cluster your data should be done early on, rather than haphazardly growing your clusters as you grow your program.&lt;br /&gt;
&lt;br /&gt;
In order to deal with varying input requirements on the different actions, one can create ‘wrappers’ around the Functional Global that allow for different inputs to be required.  This also gives the benefit of being able to search your code for certain actions as you can search for a specific VI, but not a specific enumerated type’s value.&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
The primary use of Functional Globals is to provide data sharing across an entire project, both horizontally and vertically.  Horizontal sharing means multiple top-level VIs running autonomously can all have access to the same data.  Vertical sharing means that subVIs at any depth will have access to the data without requiring explicit passing of parameters through VI [[connector pane]] terminals.  These are common issues in even small-sized programs.&lt;br /&gt;
&lt;br /&gt;
Another common use is to encapsulate some functionality, especially functionality that is linked to persistent data or resources like files or devices.  This encapsulation protects the resource and provides an extensible interface for interacting with the data or resource.  The encapsulation also allows you to avoid a plethora of shift registers in a single VI.  You can offload the shift-register to the Functional Global, and call it when needed, without worrying about wiring the data through all your case structures.&lt;br /&gt;
&lt;br /&gt;
To get a better idea of what can be done with Functional Globals, here is a list of things that can be done:&lt;br /&gt;
*Load information from a file into a FG, access it anywhere in your program&lt;br /&gt;
*Maintain your system’s configuration parameters in one location.&lt;br /&gt;
*Store a control reference (like a tree control) in a FG, and then define an interface to manage that control.  For complex controls like trees and multi-column listboxes this can simplify your top-level code.&lt;br /&gt;
*Timers are well implemented with FGs.  You can keep the start time in the shift register, and then check the elapsed time when you call it again.&lt;br /&gt;
*Automatically preallocate an array when the FG is first called, then use “Replace Array Subset” to efficiently manipulate the array.&lt;br /&gt;
*Keep an ‘Undo’ list (stack) that allows you to push changes onto a stack, and pop them off when you need to undo the change. &lt;br /&gt;
The list could go on and on – whatever you can dream up!&lt;br /&gt;
&lt;br /&gt;
==Race Conditions and Locking==&lt;br /&gt;
One of the main reasons that Functional Globals are encouraged in lieu of [[global variable]]s is race conditions.  The majority of Functional Globals are, by definition, not reentrant so that different calls to the FG will all refer to the same shift registers and hence the same data or resource.  This means that when a VI calls a FG, that FG is locked or reserved for use by the calling VI.  Other VIs need to wait until it is done before they can call the FG.&lt;br /&gt;
&lt;br /&gt;
Global variables are reentrant.  If you try to write a value to the global in several places in your code, updates to the value are unpredictable with respect to time. This means that changes to the global can be subject to race conditions. This is especially true if you read/write to the global where a race condition could occur between the read and the write of the variable.&lt;br /&gt;
&lt;br /&gt;
The downside for Functional Globals is that the locking that takes place can be a bottleneck in the code if many VIs are trying to access the FG at the same time.  The majority of applications will not have a problem, but care must be taken if speed is a concern.&lt;br /&gt;
&lt;br /&gt;
It is also important to note that Functional Globals are not a cure-all for race conditions.  If actions on the Functional Global are not atomic (i.e. they require more than one call to the FG) then race conditions are still possible.  Race conditions are only eliminated if all updates to the data are done inside the FG, in a single call.  Here are a couple ways to still allow race conditions with FGs.&lt;br /&gt;
*Ask for the data from the FG, change it, and then write it back to the FG.&lt;br /&gt;
*Successive modifications, such as {Set data, normalize data, sort data, output max}  By the time you sort the data, new data could have been set that hasn’t been normalized.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
#Efficient Memory Usage – Because the VI retains the same data space regardless of it use in the code, only a single call to the memory manager is made. If arrays are stored in the USR, and replace array element primitives used, then the memory space is efficiently used wherever the VI is called.&lt;br /&gt;
#Reduces problems with race conditions, as discussed above.&lt;br /&gt;
#Error checking can be done on data writes (Global variables don’t allow this).&lt;br /&gt;
#High-level code more readable – By moving shift registers and code logic into Functional Globals with readable action lists, top-level code become simpler and cleaner.&lt;br /&gt;
#Reuse.  Many FGs are generic enough to be used over and over again.&lt;br /&gt;
&lt;br /&gt;
==Concerns==&lt;br /&gt;
===Busy connector panes===&lt;br /&gt;
Terminals get used up quickly, so be sure to design well up front and choose a connector pane with more terminals than you need.  You can avoid excessive terminal usage by grouping all of your data into a cluster (preferably, a [[Type Definition]]) that is passed in and out of your functional global which will allow you to bundle and unbundle specific variables as needed on your main VI.&lt;br /&gt;
&lt;br /&gt;
===Data Persistence===&lt;br /&gt;
Data in a USR, and hence in a Functional Global, disappears if the owning VI goes out of memory.  When a VI runs for the first time, all of its subVIs that are not already in memory are loaded into memory and they belong to that parent VI.  If that parent VI is stopped, all of the subVIs that belong to it are also released from memory – even if there are other VIs in memory still referencing those subVIs.  The next time one of those subVIs is run, it is loaded into memory again and that calling VI becomes the new parent VI.  But if there was anything stored in USRs, that data is now gone.  &lt;br /&gt;
&lt;br /&gt;
This behavior is different from a queue reference, for instance, where the queue is only destroyed when ALL VIs referencing it leave memory.  It means that if you use Functional Globals across multiple top-level VIs, then you need to have a VI that is run first and contains all of your Functional Globals as subVIs.  This ‘First Run’ VI must stay in memory until all other top-level VIs are closed to insure that the Functional Global data will be available.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
Some testing has shown that, as of LabVIEW 8.5, using a [[Case Structure]] performs better (from 1.5x to 3x) than a [[Select function]] for controlling the data flow of the Set/Write vs. the Get/Read operation.&lt;br /&gt;
&lt;br /&gt;
==Reentrant functional globals==&lt;br /&gt;
===Unshared data===&lt;br /&gt;
There are certain problems where you do not need to share the persistent data elsewhere in the code.  If you create a &#039;&#039;&#039;windowed average&#039;&#039;&#039; VI, it can be made reentrant and can be used in multiple places in your code to average data streams.  This is an example of an in-place operation that is not shared, but requires persistent data.  Timing a process in a single loop could be done with one instance of a Functional Global.  Making this timing FG reentrant allows the developer to use that same timing FG to time other processes.  See [[Reentrant VI]] for more information.&lt;br /&gt;
&lt;br /&gt;
===By reference===&lt;br /&gt;
It’s possible to make use of reentrancy to duplicate functional globals. This allows to create as many globals as you need (even at run time) without duplicating code or modifying the original FG. The main disadvantage of this technique is the necessity to keep a reference to every instance of the functional global and pass them to the VIs or subVIs that will use them.&lt;br /&gt;
&lt;br /&gt;
With this method, the only change to the original FG is to make the VI reentrant. Keep in mind that, from now on, this functional global can’t be used in the habitual way, since any instance will retain its own values.&lt;br /&gt;
&lt;br /&gt;
To create an instance of the functional global, open it with the &#039;&#039;&#039;Open VI Reference&#039;&#039;&#039; function (use option 0x08 to prepare for reentrant run) and use the output reference to set the control values, run the VI and get the results. To facilitate things an avoid mistakes when getting/setting values, may be advisable to use the &#039;&#039;&#039;Call by Reference node&#039;&#039;&#039;. Furthermore, the encapsulation of the FG actions in specific wrappers, as detailed in the Structure section above, is also useful.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Global variable]]&lt;br /&gt;
*[[State machine]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[http://forums.lavag.org/LV2OO-Style-Global-v20-from-NI-Week-presentation-t8780.html LAVA forum discussion about LV2OO-style globals]&lt;br /&gt;
*[http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328&amp;amp;query.id=618807#M240328 NI Forums Community Nugget on Action Engines]&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361A-01/lvconcepts/suggestions_for_exec/#Functional_Global_Variables NI Documentation on Functional Global Variables]&lt;br /&gt;
&lt;br /&gt;
[[Category:Design Patterns]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Data_type_descriptor&amp;diff=2801</id>
		<title>Data type descriptor</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Data_type_descriptor&amp;diff=2801"/>
		<updated>2007-10-06T15:49:50Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Redirecting to Type descriptor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[type descriptor]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Type_descriptor&amp;diff=2800</id>
		<title>Type descriptor</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Type_descriptor&amp;diff=2800"/>
		<updated>2007-10-06T15:48:54Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: From the LabVIEW Help:  LabVIEW associates each wire and terminal on the block diagram with a data type. LabVIEW keeps track of this type with a structure in memory called a type descripto...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From the LabVIEW Help:&lt;br /&gt;
&lt;br /&gt;
LabVIEW associates each wire and terminal on the block diagram with a data type. LabVIEW keeps track of this type with a structure in memory called a type descriptor. This type descriptor is a sequence of 32-bit integers that can describe any data type in LabVIEW. Numeric values are written in hexadecimal format, unless otherwise noted.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361B-01/lvconcepts/type_descriptors/ LabVIEW 8.2 Help&amp;gt;&amp;gt;Type Descriptors]&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361B-01/lvconcepts/how_labview_stores_data_in_memory/ LabVIEW 8.2 Help&amp;gt;&amp;gt;How LabVIEW Stores Data in Memory]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Glossary_of_LabVIEW_terms&amp;diff=2799</id>
		<title>Glossary of LabVIEW terms</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Glossary_of_LabVIEW_terms&amp;diff=2799"/>
		<updated>2007-10-06T15:46:10Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* T */ added time stamp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a glossary of LabVIEW terminology.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{compactTOC2}}&lt;br /&gt;
&lt;br /&gt;
==A==&lt;br /&gt;
&lt;br /&gt;
;[[absolute path]]&lt;br /&gt;
:File or directory path that describes the location relative to the top level of the file system.&lt;br /&gt;
&lt;br /&gt;
;[[active cell]]&lt;br /&gt;
:Cell of a listbox, table, digital data, or tree control to which you can apply property changes.&lt;br /&gt;
&lt;br /&gt;
;[[active window]]&lt;br /&gt;
:Window that is currently set to accept user input, usually the frontmost window. The title bar of an active window is highlighted. Make a window active by clicking it or by selecting it from the Windows menu.&lt;br /&gt;
&lt;br /&gt;
;[[ancestor class]]&lt;br /&gt;
:Any [[LabVIEW class]] that is the parent, grandparent, and so on, of another LabVIEW class. The [[LabVIEW Object]] may be the ultimate ancestor.&lt;br /&gt;
&lt;br /&gt;
;[[application]]&lt;br /&gt;
:Application created using the LabVIEW Development System and executed in the LabVIEW Run-Time System environment.&lt;br /&gt;
&lt;br /&gt;
;[[application instance]]&lt;br /&gt;
:Instance of LabVIEW created for each target you create in a LabVIEW project. When you open a VI from the Project Explorer window, the VI opens in the application instance for the target. There is a separate instance of LabVIEW running for each target you create. LabVIEW also creates a main application instance, which contains open VIs that are not part of a project and VIs that you did not open from a project. See also [[target]].&lt;br /&gt;
&lt;br /&gt;
;[[Application Programming Interface (API)]]&lt;br /&gt;
:Programming interface for controlling software packages.&lt;br /&gt;
&lt;br /&gt;
;[[application zone]]&lt;br /&gt;
:Memory allocation section that holds all data in a VI except execution data.&lt;br /&gt;
&lt;br /&gt;
;[[array]]&lt;br /&gt;
:Ordered, indexed list of data elements of the same type.&lt;br /&gt;
&lt;br /&gt;
;[[array shell]]&lt;br /&gt;
:Front panel object that houses an array. An array shell consists of an index display, a data object window, and an optional label. It can accept various data types.&lt;br /&gt;
&lt;br /&gt;
;[[artificial data dependency]]&lt;br /&gt;
:Condition in a [[dataflow]] programming language in which the arrival of data, rather than its value, triggers execution of a [[node]].&lt;br /&gt;
&lt;br /&gt;
;[[asynchronous execution]]&lt;br /&gt;
:Mode in which multiple processes share processor time. For example, one process executes while others wait for interrupts during device I/O or while waiting for a clock tick.&lt;br /&gt;
&lt;br /&gt;
;[[Auto-indexing]]&lt;br /&gt;
:Capability of loop structures to disassemble and assemble arrays at their borders. As an array enters a loop with auto-indexing enabled, the loop automatically disassembles it extracting scalars from 1D arrays, 1D arrays extracted from 2D arrays, and so on. Loops assemble data values into arrays as data values exit the loop in the reverse order.&lt;br /&gt;
&lt;br /&gt;
;[[autoscaling]]&lt;br /&gt;
:Ability of scales to adjust to the range of plotted values. On graph scales, autoscaling determines maximum and minimum scale values.&lt;br /&gt;
&lt;br /&gt;
;[[autosizing]]&lt;br /&gt;
:Automatic resizing of labels to accommodate text you enter.&lt;br /&gt;
&lt;br /&gt;
==B==&lt;br /&gt;
&lt;br /&gt;
;[[bit array tag]]&lt;br /&gt;
:Multibit value representation of a connection to a real-world I/O point or memory variable. In LabVIEW, this type of tag can be comprised of up to 32 discrete values.&lt;br /&gt;
&lt;br /&gt;
;[[wikipedia:Backus–Naur form|BNF]]&lt;br /&gt;
:Backus-Naur Form. A common representation for language grammars in computer science.&lt;br /&gt;
&lt;br /&gt;
;[[Boolean controls and indicators]]&lt;br /&gt;
:Front panel objects to manipulate and display Boolean (TRUE or FALSE) data.&lt;br /&gt;
&lt;br /&gt;
;[[Block diagram]]&lt;br /&gt;
:Pictorial description or representation of a program or algorithm. The block diagram consists of executable icons called nodes and wires that carry data between the nodes. The block diagram is the source code for the VI. The block diagram resides in the block diagram window of the VI.&lt;br /&gt;
&lt;br /&gt;
;[[breakpoint]]&lt;br /&gt;
:Pause in execution used for debugging.&lt;br /&gt;
&lt;br /&gt;
;[[Breakpoint tool]]&lt;br /&gt;
:Tool to set a breakpoint on a VI, node, or wire.&lt;br /&gt;
&lt;br /&gt;
;[[broken arrow]]&lt;br /&gt;
:See [[broken Run button]] below.&lt;br /&gt;
&lt;br /&gt;
;[[broken Run button]]&lt;br /&gt;
:Button that replaces the Run button when a VI cannot run because of errors.&lt;br /&gt;
&lt;br /&gt;
;[[broken VI]]&lt;br /&gt;
:VI that cannot run because of errors; signified by a broken arrow in the broken Run button.&lt;br /&gt;
&lt;br /&gt;
;[[buffer]]&lt;br /&gt;
:Temporary storage for acquired or generated data.&lt;br /&gt;
&lt;br /&gt;
;[[Bundle function]]&lt;br /&gt;
:Function that creates clusters from various types of elements.&lt;br /&gt;
&lt;br /&gt;
;[[byte stream file]]&lt;br /&gt;
:File that stores data as a sequence of ASCII characters or bytes.&lt;br /&gt;
&lt;br /&gt;
==C==&lt;br /&gt;
&lt;br /&gt;
;[[C string (CStr)]]&lt;br /&gt;
:A series of zero or more unsigned characters, terminated by a zero, used in the C programming language.&lt;br /&gt;
&lt;br /&gt;
;[[caption label]]&lt;br /&gt;
:Label on a front panel object used to name the object in the user interface. You can translate this label to other languages without affecting the block diagram source code. See also [[Name Label]].&lt;br /&gt;
&lt;br /&gt;
;[[case]]&lt;br /&gt;
:One subdiagram of a Case structure.&lt;br /&gt;
&lt;br /&gt;
;[[Case structure]]&lt;br /&gt;
:Conditional branching control structure that executes one of its subdiagrams based on the input to the Case structure. It is the combination of the IF, THEN, ELSE, and CASE statements in control flow languages.&lt;br /&gt;
&lt;br /&gt;
;[[cast]]&lt;br /&gt;
:To change the type descriptor of a data element without altering the memory image of the data.&lt;br /&gt;
&lt;br /&gt;
;[[chart]]&lt;br /&gt;
:2D display of one or more plots in which the display retains a history of previous data, up to a maximum that you define. The chart receives the data and updates the display point by point or array by array, retaining a certain number of past points in a buffer for display purposes. {{See also|scope chart|strip chart|sweep chart}}.&lt;br /&gt;
&lt;br /&gt;
;[[checkbox]]&lt;br /&gt;
:Small square box in a dialog box you can select or clear. Checkboxes generally are associated with multiple options that you can set. You can select more than one checkbox.&lt;br /&gt;
&lt;br /&gt;
;[[child class]]&lt;br /&gt;
:A [[LabVIEW class]] that [[inherits]] data and [[member VIs]] from an [[ancestor LabVIEW class]].&lt;br /&gt;
&lt;br /&gt;
;[[CIN]]&lt;br /&gt;
:[[Code Interface Node (CIN)]]. Special [[block diagram]] [[node]] through which you can link text-based code to a [[VI]].&lt;br /&gt;
&lt;br /&gt;
;[[CIN source code]]&lt;br /&gt;
:Original, uncompiled text code. {{See also|object code|Code Interface Node (CIN)}}.&lt;br /&gt;
&lt;br /&gt;
;[[class]]&lt;br /&gt;
:A category containing properties, methods, and events. Classes are arranged in a hierarchy with each class inheriting the properties and methods associated with the class in the preceding level.&lt;br /&gt;
&lt;br /&gt;
;[[class library]]&lt;br /&gt;
:The group of VIs that define a [[LabVIEW class]]. The class library also stores the data of the LabVIEW class.&lt;br /&gt;
&lt;br /&gt;
;[[cloning]]&lt;br /&gt;
:To make a copy of a control or another object by clicking it while pressing the &amp;lt;Ctrl&amp;gt; key and dragging the copy to its new location.&lt;br /&gt;
&lt;br /&gt;
;[[Cluster]]&lt;br /&gt;
:A set of ordered, unindexed data elements of any data type, including numeric, Boolean, string, array, or cluster. The elements must be all controls or all indicators.&lt;br /&gt;
&lt;br /&gt;
;[[cluster shell]]&lt;br /&gt;
:Front panel object that contains the elements of a cluster.&lt;br /&gt;
&lt;br /&gt;
;[[code resource]]&lt;br /&gt;
:Resource containing executable machine code. You link code resources to LabVIEW through a [[CIN]].&lt;br /&gt;
&lt;br /&gt;
;[[coercion]]&lt;br /&gt;
:Automatic conversion LabVIEW performs to change the numeric representation of a data element.&lt;br /&gt;
&lt;br /&gt;
;[[coercion dot]]&lt;br /&gt;
:Appears on a block diagram node to alert you that you have wired data of two different numeric data types together. Also appears when you wire any data type to a variant data type, or when LabVIEW discards bits of a fixed-point number.&lt;br /&gt;
&lt;br /&gt;
;[[Coloring tool]]&lt;br /&gt;
:Tool to set foreground and background colors.&lt;br /&gt;
&lt;br /&gt;
;[[compile]]&lt;br /&gt;
:Process that converts high-level code to machine-executable code. LabVIEW compiles VIs automatically before they run for the first time after you create or edit alteration.&lt;br /&gt;
&lt;br /&gt;
;concatenated Pascal string (CPStr)&lt;br /&gt;
:A list of Pascal-type strings concatenated into a single block of memory.&lt;br /&gt;
&lt;br /&gt;
;[[conditional terminal]]&lt;br /&gt;
:Terminal of a While Loop that contains a Boolean value that determines if the VI performs another iteration. A conditional terminal also can be added to a For Loop to stop execution early when a condition occurs.&lt;br /&gt;
&lt;br /&gt;
;[[connector]]&lt;br /&gt;
:Part of the VI or function node that contains input and output terminals. Data values pass to and from the node through a connector.&lt;br /&gt;
&lt;br /&gt;
;[[connector pane]]&lt;br /&gt;
:Region in the upper right corner of a front panel or block diagram window that displays the VI terminal pattern. It defines the inputs and outputs you can wire to a VI.&lt;br /&gt;
&lt;br /&gt;
;[[constant]]&lt;br /&gt;
:A terminal on the block diagram that supplies fixed data values to the block diagram. {{See also|universal constant|user-defined constant}}.&lt;br /&gt;
&lt;br /&gt;
;[[content rectangle]]&lt;br /&gt;
:Region of a listbox, table, digital data, or tree control that contains all headers and cells. The content rectangle does not include scroll bars.&lt;br /&gt;
&lt;br /&gt;
;[[Context Help window]]&lt;br /&gt;
:Window that displays basic information about LabVIEW objects when you move the cursor over each object. Objects with context help information include VIs, functions, constants, structures, palettes, properties, methods, events, dialog box components, and items in the [Project Explorer] window.&lt;br /&gt;
&lt;br /&gt;
;[[continuous run]]&lt;br /&gt;
:Execution mode in which a VI runs repeatedly until the operator stops it. Click the Continuous Run button to run a VI repeatedly.&lt;br /&gt;
&lt;br /&gt;
;[[Continuous Run button]]&lt;br /&gt;
:Icon that indicates a VI is set to execute repeatedly until the user stops it.&lt;br /&gt;
&lt;br /&gt;
;[[contour plot]]&lt;br /&gt;
:Plot where contour lines are used to connect points of equal value.&lt;br /&gt;
&lt;br /&gt;
;[[control]]&lt;br /&gt;
:Front panel object for entering data to a VI interactively or to a subVI programmatically, such as a knob, push button, or dial.&lt;br /&gt;
&lt;br /&gt;
;[[control flow]]&lt;br /&gt;
:Programming system in which the sequential order of instructions determines execution order. Most text-based programming languages are control flow languages.&lt;br /&gt;
&lt;br /&gt;
;[[Controls palette]]&lt;br /&gt;
:Palette that contains front panel controls, indicators, and decorative objects.&lt;br /&gt;
&lt;br /&gt;
;[[conversion]]&lt;br /&gt;
:Changing the type of a data element.&lt;br /&gt;
&lt;br /&gt;
;[[UTC]]&lt;br /&gt;
:Coordinated Universal Time. Time scale that is determined using highly precise atomic clocks. LabVIEW uses UTC as the standard for the internal representation of dates and times.&lt;br /&gt;
&lt;br /&gt;
;[[count terminal]]&lt;br /&gt;
:Terminal of a For Loop whose value determines the number of times the For Loop executes its subdiagram.&lt;br /&gt;
&lt;br /&gt;
;[[current VI]]&lt;br /&gt;
:VI whose front panel, block diagram, or Icon Editor is the active window.&lt;br /&gt;
&lt;br /&gt;
==D==&lt;br /&gt;
&lt;br /&gt;
;[[data dependency]]&lt;br /&gt;
:Condition in a dataflow programming language in which a node cannot execute until it receives data from another node. {{See also|artificial data dependency}}&lt;br /&gt;
&lt;br /&gt;
;[[Data flow]]&lt;br /&gt;
:Programming system involving the creation of block diagrams having executable nodes connected by wires, where the wires between nodes indicate that data produced by one node is used by another node. Nodes may execute when they have received all necessary input data and may produce output data to other nodes in the diagram. G is a dataflow system.&lt;br /&gt;
&lt;br /&gt;
;[[data storage formats]]&lt;br /&gt;
:Arrangement and representation of data stored in memory.&lt;br /&gt;
&lt;br /&gt;
;[[data type]]&lt;br /&gt;
:Format for information. In LabVIEW, acceptable data types for most VIs and functions are numeric, array, string, Boolean, path, refnum, enumerated type, waveform, and cluster.&lt;br /&gt;
&lt;br /&gt;
;[[data type descriptor]]&lt;br /&gt;
:Code that identifies data types; used in data storage and representation.&lt;br /&gt;
&lt;br /&gt;
;[[datalog file]]&lt;br /&gt;
:File that stores data as a sequence of records of a single, arbitrary data type that you specify when you create the file. Although all the records in a datalog file must be a single type, that type can be complex. For example, you can specify that each record is a cluster that contains a string, a number, and an array.&lt;br /&gt;
&lt;br /&gt;
;[[default]]&lt;br /&gt;
:Preset value. Many VI inputs use a default value if you do not specify a value.&lt;br /&gt;
&lt;br /&gt;
;[[default input]]&lt;br /&gt;
:Default value of a front panel control.&lt;br /&gt;
&lt;br /&gt;
;[[deploy]]&lt;br /&gt;
:To download items or apply settings to a target in the Project Explorer window.&lt;br /&gt;
&lt;br /&gt;
;[[descendant class]]&lt;br /&gt;
:A [[child]], grandchild, and so on, of another [[LabVIEW class]].&lt;br /&gt;
&lt;br /&gt;
;[[dialog box]]&lt;br /&gt;
:Window that appears when an application needs further information to carry out a command.&lt;br /&gt;
&lt;br /&gt;
;[[dimension]]&lt;br /&gt;
:Size and structure of an array.&lt;br /&gt;
&lt;br /&gt;
;[[directory]]&lt;br /&gt;
:Structure for organizing files into convenient groups. A directory is like an address that shows the location of files. A directory can contain files or subdirectories of files.&lt;br /&gt;
&lt;br /&gt;
;[[DLL]]&lt;br /&gt;
:Dynamic Link Library&lt;br /&gt;
&lt;br /&gt;
;[[drag]]&lt;br /&gt;
:To use the cursor on the screen to select, move, copy, or delete objects.&lt;br /&gt;
&lt;br /&gt;
;[[drive]]&lt;br /&gt;
:Letter in the range a-z followed by a colon &amp;quot;:&amp;quot;, to indicate a logical disk drive.&lt;br /&gt;
&lt;br /&gt;
;[[driver]]&lt;br /&gt;
:Software that controls a specific hardware device, such as a DAQ device.&lt;br /&gt;
&lt;br /&gt;
;[[DTbl]]&lt;br /&gt;
:Digital table.&lt;br /&gt;
&lt;br /&gt;
;[[DWDT]]&lt;br /&gt;
:Digital waveform data type.&lt;br /&gt;
&lt;br /&gt;
;[[dynamic data type]]&lt;br /&gt;
:Data type used by Express VIs that includes the data associated with a signal and attributes that provide information about the signal, such as the name of the signal or the date and time the data was acquired. Attributes specify how the signal appears on a graph or chart.&lt;br /&gt;
&lt;br /&gt;
;[[dynamic dispatch]]&lt;br /&gt;
:A VI that defines a method of a [[LabVIEW class]]. Dynamic dispatch [[member VIs]] are VIs with the same name that occur throughout the class hierarchy. Similar to polymorphic VIs, LabVIEW determines at run time which member VI to call.&lt;br /&gt;
&lt;br /&gt;
==E==&lt;br /&gt;
;[[edit mode]]&lt;br /&gt;
:When you can make changes to a VI.&lt;br /&gt;
&lt;br /&gt;
;[[empty array]]&lt;br /&gt;
:Array that has zero elements but has a defined data type. For example, an array that has a numeric control in its data display window but has no defined values for any element is an empty numeric array.&lt;br /&gt;
&lt;br /&gt;
;[[encapsulation]]&lt;br /&gt;
:The consolidation of data and methods into a LabVIEW class, where the data is accessible only through class member VIs.&lt;br /&gt;
&lt;br /&gt;
;[[end of file (EOF)]]&lt;br /&gt;
:Character offset of the end of file relative to the beginning of the file. The EOF is the size of the file.&lt;br /&gt;
&lt;br /&gt;
;[[Error cluster]]&lt;br /&gt;
:Consists of a Boolean status indicator, a numeric code indicator, and a string source indicator.&lt;br /&gt;
&lt;br /&gt;
;[[error in]]&lt;br /&gt;
:Error cluster that enters a VI.&lt;br /&gt;
&lt;br /&gt;
;[[Error List window]]&lt;br /&gt;
:Window that displays errors and warnings occurring in a VI and in some cases recommends how to correct the errors.&lt;br /&gt;
&lt;br /&gt;
;[[error message]]&lt;br /&gt;
:Indication of a software or hardware malfunction or of an unacceptable data entry attempt.&lt;br /&gt;
&lt;br /&gt;
;[[error out]]&lt;br /&gt;
:The error cluster that leaves a VI.&lt;br /&gt;
&lt;br /&gt;
;[[Event Data Node]]&lt;br /&gt;
:Node attached to the left and right sides of an Event structure indicating the available data for the event you configured that case to handle. If you configure a single case to handle multiple events, only the data that is common to all handled event types is available.&lt;br /&gt;
&lt;br /&gt;
;[[event driven programming]]&lt;br /&gt;
:Method of programming whereby the program waits on an event to occur before executing one or more functions.&lt;br /&gt;
&lt;br /&gt;
;[[execution highlighting]]&lt;br /&gt;
:Debugging technique that animates VI execution to illustrate the data flow in the VI.&lt;br /&gt;
&lt;br /&gt;
;[[Express VI]]&lt;br /&gt;
:A subVI designed to aid in common measurement tasks. You configure an Express VI using a configuration dialog box.&lt;br /&gt;
&lt;br /&gt;
==F==&lt;br /&gt;
;[[FIFO]]&lt;br /&gt;
:First-in-first-out memory buffer. The first data stored is the first data sent to the acceptor.&lt;br /&gt;
&lt;br /&gt;
;[[file refnum]]&lt;br /&gt;
:Reference number. An identifier that LabVIEW uses as reference to a file object. Use a file refnum as an input parameter for certain file IO functions.&lt;br /&gt;
&lt;br /&gt;
;[[filter events]]&lt;br /&gt;
:Allow control over how the user interface behaves.&lt;br /&gt;
&lt;br /&gt;
;[[Flat Sequence structure]]&lt;br /&gt;
:Program control structure that executes its subdiagrams in numeric order. Use this structure to force nodes that are not data dependent to execute in the order you want if flow-through parameters are not available. The Flat Sequence structure displays all the frames at once and executes the frames from left to right until the last frame executes.&lt;br /&gt;
&lt;br /&gt;
;[[flattened data]]&lt;br /&gt;
:Data of any type that has been converted to a string, usually for writing the data to a file.&lt;br /&gt;
&lt;br /&gt;
;[[For Loop]]&lt;br /&gt;
:Iterative loop structure that executes its subdiagram a set number of times with the option of stopping execution early when a condition occurs. Equivalent to text-based code: For i = 0 to n — 1, do...&lt;br /&gt;
&lt;br /&gt;
;[[Formula node]]&lt;br /&gt;
:Node that executes equations you enter as text. Especially useful for lengthy equations too cumbersome to build in block diagram form.&lt;br /&gt;
&lt;br /&gt;
;[[frame]]&lt;br /&gt;
:Subdiagram of a Flat or Stacked Sequence structure.&lt;br /&gt;
&lt;br /&gt;
;[[free label]]&lt;br /&gt;
:Label on the front panel or block diagram that does not belong to any other object.&lt;br /&gt;
&lt;br /&gt;
;[[front panel]]&lt;br /&gt;
:Interactive user interface of a VI. Front panel appearance imitates physical instruments, such as oscilloscopes and multimeters.&lt;br /&gt;
&lt;br /&gt;
;[[function]]&lt;br /&gt;
:Built-in execution element, comparable to an operator, function, or statement in a text-based programming language.&lt;br /&gt;
&lt;br /&gt;
;[[Functions palette]]&lt;br /&gt;
:Palette that contains VIs, functions, block diagram structures, and constants.&lt;br /&gt;
&lt;br /&gt;
==G==&lt;br /&gt;
&lt;br /&gt;
;[[G]]&lt;br /&gt;
:Graphical programming language LabVIEW uses.&lt;br /&gt;
&lt;br /&gt;
;[[Get Color tool]]&lt;br /&gt;
:Copies colors for pasting with the Coloring tool.&lt;br /&gt;
&lt;br /&gt;
;[[global variable]]&lt;br /&gt;
:Accesses and passes data among several VIs on a block diagram.&lt;br /&gt;
&lt;br /&gt;
;[[glyph]]&lt;br /&gt;
:Small picture or icon.&lt;br /&gt;
&lt;br /&gt;
;[[graph]]&lt;br /&gt;
:2D display of one or more plots. A graph receives and plots data as a block.&lt;br /&gt;
&lt;br /&gt;
==H==&lt;br /&gt;
;[[handle]]&lt;br /&gt;
:Pointer to a pointer to a block of memory that manages reference arrays and strings. An array of strings is a handle to a block of memory that contains handles to strings.&lt;br /&gt;
&lt;br /&gt;
;[[hex]]&lt;br /&gt;
:Hexadecimal. Base-16 number system.&lt;br /&gt;
&lt;br /&gt;
;[[Hierarchy window]]&lt;br /&gt;
:Window that graphically displays the hierarchy of VIs and subVIs. {{See also|VI Hierarchy window}}&lt;br /&gt;
&lt;br /&gt;
;[[housing]]&lt;br /&gt;
:Non-moving part of front panel controls and indicators that contains sliders, scales, or scroll boxes.&lt;br /&gt;
&lt;br /&gt;
==I==&lt;br /&gt;
&lt;br /&gt;
;[[IAC]]&lt;br /&gt;
:Interapplication communication.&lt;br /&gt;
&lt;br /&gt;
;[[icon]]&lt;br /&gt;
:Graphical representation of a node on a block diagram.&lt;br /&gt;
&lt;br /&gt;
;[[Icon editor]]&lt;br /&gt;
:Interface similar to that of a graphics program for creating VI icons.&lt;br /&gt;
&lt;br /&gt;
;[[indicator]]&lt;br /&gt;
:Front panel object that displays output, such as a graph or LED.&lt;br /&gt;
&lt;br /&gt;
;[[Inf]]&lt;br /&gt;
:Digital display value for a floating-point representation of infinity.&lt;br /&gt;
&lt;br /&gt;
;[[inheritance]]&lt;br /&gt;
:The use of one LabVIEW class as the initial definition of a new LabVIEW class. The inheriting class has the same data and member VIs as the ancestor class initially, but you can modify or add to the existing data and methods as you need.&lt;br /&gt;
&lt;br /&gt;
;[[initializer terminal]]&lt;br /&gt;
:Terminal that sets the initial value of a [[Feedback Node]].&lt;br /&gt;
&lt;br /&gt;
;[[inplace]]&lt;br /&gt;
:The condition in which two or more terminals, such as error I/O terminals or shift registers, use the same memory space.&lt;br /&gt;
&lt;br /&gt;
;[[instrument driver]]&lt;br /&gt;
:A set of high-level functions that control and communicate with instrument hardware in a system.&lt;br /&gt;
&lt;br /&gt;
;[[integer]]&lt;br /&gt;
:Any of the natural numbers, their negatives, or zero.&lt;br /&gt;
&lt;br /&gt;
;[[integer word length]]&lt;br /&gt;
:The number of integer bits in a binary number, or, given an initial position to the left or right of the most significant bit, the number of bits to shift the binary point to reach the most significant bit. If the integer word length is positive, shift the binary point to the left. If the integer word length is negative, shift the binary point to the right.&lt;br /&gt;
&lt;br /&gt;
;[[intensity map/plot]]&lt;br /&gt;
:Method of displaying three dimensions of data in a 2D plot with the use of color.&lt;br /&gt;
&lt;br /&gt;
;[[IP]]&lt;br /&gt;
:Internet protocol.&lt;br /&gt;
&lt;br /&gt;
;[[iteration terminal]]&lt;br /&gt;
:Terminal of a For Loop or While Loop that contains the current number of completed iterations.&lt;br /&gt;
&lt;br /&gt;
;[[IVI]]&lt;br /&gt;
:Interchangeable Virtual Instruments. A software standard for creating a common interface (API) to common test and measurement instruments.&lt;br /&gt;
&lt;br /&gt;
;[[IVI driver]]&lt;br /&gt;
:A driver written according to the IVI specification. The generic driver for a class of instruments (such as voltmeters) is called a class driver, whereas the driver for a specific instrument from a specific manufacturer is called a device-specific driver.&lt;br /&gt;
&lt;br /&gt;
==J==&lt;br /&gt;
&lt;br /&gt;
==K==&lt;br /&gt;
;[[Kwords]]&lt;br /&gt;
:1,024 words (16 bits) of memory.&lt;br /&gt;
&lt;br /&gt;
==L==&lt;br /&gt;
;[[label]]&lt;br /&gt;
:Text object used to name or describe objects or regions on the front panel or block diagram.&lt;br /&gt;
&lt;br /&gt;
;[[Labeling tool]]&lt;br /&gt;
:Tool to create labels and enter text into text windows.&lt;br /&gt;
&lt;br /&gt;
;[[LabVIEW]]&lt;br /&gt;
:Laboratory Virtual Instrument Engineering Workbench. LabVIEW is a graphical programming language that uses icons instead of lines of text to create programs.&lt;br /&gt;
&lt;br /&gt;
;[[LabVIEW class]]&lt;br /&gt;
:A user-defined data type in LabVIEW. A LabVIEW class defines the data and methods associated with an object of the class.&lt;br /&gt;
&lt;br /&gt;
;[[LabVIEW class hierarchy]]&lt;br /&gt;
:The [[inheritance]] relationship of [[LabVIEW classes]].&lt;br /&gt;
&lt;br /&gt;
;[[LabVIEW Object]]&lt;br /&gt;
:The root of the LabVIEW class inheritance tree.&lt;br /&gt;
&lt;br /&gt;
;[[LabVIEW string (LStr)]]&lt;br /&gt;
:The string data type that LabVIEW block diagrams use.&lt;br /&gt;
&lt;br /&gt;
;[[LabVIEW system time]]&lt;br /&gt;
:The date and time that LabVIEW uses as a reference for absolute time. LabVIEW system time is defined as 12:00 a.m., Friday, January 1, 1904, Universal Time. {{See also|Coordinated Universal Time (UTC)}}.&lt;br /&gt;
&lt;br /&gt;
;[[legend]]&lt;br /&gt;
:Object a graph or chart owns to display the names and plot styles of plots on that graph or chart.&lt;br /&gt;
&lt;br /&gt;
;[[library]]&lt;br /&gt;
:{{See also|LLB|project library}}&lt;br /&gt;
&lt;br /&gt;
;[[listbox]]&lt;br /&gt;
:Box within a dialog box that lists all available choices for a command. For example, a list of filenames on a disk.&lt;br /&gt;
&lt;br /&gt;
;[[LLB]]&lt;br /&gt;
:LabVIEW file that contains a collection of related VIs for a specific use.&lt;br /&gt;
&lt;br /&gt;
;[[local variable]]&lt;br /&gt;
:Variable that enables you to read or write to one of the controls or indicators on the front panel of a VI.&lt;br /&gt;
&lt;br /&gt;
;[[LSB]]&lt;br /&gt;
:Least Significant Bit.&lt;br /&gt;
&lt;br /&gt;
==M==&lt;br /&gt;
;[[marquee]]&lt;br /&gt;
:Moving, dashed border that surrounds selected objects.&lt;br /&gt;
&lt;br /&gt;
;[[MB]]&lt;br /&gt;
:Megabytes of memory. 1 MB is equal to 1,024 KB.&lt;br /&gt;
&lt;br /&gt;
;[[member VI]]&lt;br /&gt;
:A VI that a LabVIEW class owns. A member VI can access the [[private data]] of a [[LabVIEW class]].&lt;br /&gt;
&lt;br /&gt;
;[[memory buffer]]&lt;br /&gt;
:{{See also|buffer}}&lt;br /&gt;
&lt;br /&gt;
;[[menu bar]]&lt;br /&gt;
:Horizontal bar that lists the names of the main menus of an application. The menu bar appears below the title bar of a window. Each application has a menu bar that is distinct for that application, although some menus and commands are common to many applications.&lt;br /&gt;
&lt;br /&gt;
;[[method]]&lt;br /&gt;
:A procedure that is executed when an object receives a message. A method is always associated with a class.&lt;br /&gt;
&lt;br /&gt;
;[[MSB]]&lt;br /&gt;
:Most Significant Bit.&lt;br /&gt;
&lt;br /&gt;
;[[multicore programming]]&lt;br /&gt;
:Two or more processors in one computer, each of which can simultaneously run a separate thread.&lt;br /&gt;
&lt;br /&gt;
;[[multithreaded application]]&lt;br /&gt;
:Application that runs several different threads of execution independently. On a multiple processor computer, the different threads might be running on different processors simultaneously.&lt;br /&gt;
&lt;br /&gt;
;[[multithreading]]&lt;br /&gt;
:A technique for an operating system to handle multiple small tasks at one time, known as threads.&lt;br /&gt;
&lt;br /&gt;
==N==&lt;br /&gt;
&lt;br /&gt;
;[[Name Label]]&lt;br /&gt;
:Label of a front panel object used to name the object and as distinguish it from other objects. The label also appears on the block diagram terminal, local variables, and property nodes that are part of the object. {{See also|caption label}}.&lt;br /&gt;
&lt;br /&gt;
;[[NaN]]&lt;br /&gt;
:Digital display value for a floating-point representation of &amp;lt;Not A Number&amp;gt;. Typically the result of an undefined operation, such as log(–1).&lt;br /&gt;
&lt;br /&gt;
;[[NI-PSP]]&lt;br /&gt;
:NI Publish-Subscribe Protocol. A data transfer protocol to write and allow users to read live data. NI-PSP is a proprietary technology that provides fast and reliable data transmission for large and small applications and is installed as a service on the computer when you install LabVIEW.&lt;br /&gt;
&lt;br /&gt;
;[[node]]&lt;br /&gt;
:Program execution element. Nodes are analogous to statements, operators, functions, and subroutines in text-based programming languages. On a block diagram, nodes include functions, structures, and subVIs.&lt;br /&gt;
&lt;br /&gt;
;[[non-displayable characters]]&lt;br /&gt;
:ASCII characters that cannot be displayed, such as null, backspace, tab, and so on.&lt;br /&gt;
&lt;br /&gt;
;[[not-a-refnum]]&lt;br /&gt;
:Predefined value that indicates the refnum is invalid.&lt;br /&gt;
&lt;br /&gt;
;[[notify events]]&lt;br /&gt;
:Tell LabVIEW that a user action has already occurred, such as when a user changes the value of a control.&lt;br /&gt;
&lt;br /&gt;
;[[numeric controls and indicators]]&lt;br /&gt;
:Front panel objects to manipulate and display numeric data.&lt;br /&gt;
&lt;br /&gt;
==O==&lt;br /&gt;
&lt;br /&gt;
;[[object]]&lt;br /&gt;
:Generic term for any item on the front panel or block diagram, including controls, indicators, nodes, wires, and imported pictures.&lt;br /&gt;
&lt;br /&gt;
;[[object code]]&lt;br /&gt;
:Compiled version of source code. Object code is not standalone because you must load it into LabVIEW to run it.&lt;br /&gt;
&lt;br /&gt;
;[[Object Shortcut Menu tool]]&lt;br /&gt;
:Tool to access a shortcut menu for an object.&lt;br /&gt;
&lt;br /&gt;
;[[OLE]]&lt;br /&gt;
:Object Linking and Embedding.&lt;br /&gt;
&lt;br /&gt;
;[[OLE for Process Control (OPC)]]&lt;br /&gt;
:OLE for Process Control. A set of standard interfaces developed by the OPC Foundation to ensure interoperability among control devices from different manufacturers for the transfer of real-time plant data.&lt;br /&gt;
&lt;br /&gt;
;[[one-dimensional]]&lt;br /&gt;
:Having one dimension, as in the case of an array that has only one row of elements.&lt;br /&gt;
&lt;br /&gt;
;[[Operating tool]]&lt;br /&gt;
:Tool to enter data into controls or to operate them.&lt;br /&gt;
&lt;br /&gt;
;[[override VI]]&lt;br /&gt;
:Allows you to override an [[member VI]] of an [[ancestor LabVIEW class]].&lt;br /&gt;
&lt;br /&gt;
;[[owning pane]]&lt;br /&gt;
:The pane of the front panel in which an object resides.&lt;br /&gt;
&lt;br /&gt;
==P==&lt;br /&gt;
;[[palette]]&lt;br /&gt;
:Displays objects or tools you can use to build the front panel or block diagram.&lt;br /&gt;
&lt;br /&gt;
;[[panel window]]&lt;br /&gt;
:VI window that contains the front panel, the toolbar, and the icon and connector panes.&lt;br /&gt;
&lt;br /&gt;
;[[parent class]]&lt;br /&gt;
:An existing [[LabVIEW class]] from which another class [[inherits]].&lt;br /&gt;
&lt;br /&gt;
;[[parser]]&lt;br /&gt;
:VI that scans a string to determine the function of each of the elements in the string.&lt;br /&gt;
&lt;br /&gt;
;[[Pascal string (PStr)]]&lt;br /&gt;
:A series of unsigned characters, with the value of the first character indicating the length of the string. Used in the Pascal programming language.&lt;br /&gt;
&lt;br /&gt;
;[[picture]]&lt;br /&gt;
:Series of graphics instructions that a picture indicator uses to create a picture.&lt;br /&gt;
&lt;br /&gt;
;[[picture indicator]]&lt;br /&gt;
:General-purpose indicator for displaying pictures that can contain lines, circles, text, and other types of graphic shapes.&lt;br /&gt;
&lt;br /&gt;
;[[pixel]]&lt;br /&gt;
:Smallest unit of a digitized picture.&lt;br /&gt;
&lt;br /&gt;
;[[pixmap]]&lt;br /&gt;
:Standard format for storing pictures in which a color value represents each pixel. A bitmap is a black and white version of a pixmap.&lt;br /&gt;
&lt;br /&gt;
;[[plot]]&lt;br /&gt;
:Graphical representation of an array of data shown either on a graph or a chart.&lt;br /&gt;
&lt;br /&gt;
;[[point]]&lt;br /&gt;
:Cluster that contains two 16-bit integers that represent horizontal and vertical coordinates.&lt;br /&gt;
&lt;br /&gt;
;[[polymorphism]]&lt;br /&gt;
:Ability of a node to automatically adjust to data of different representation, type, or structure.&lt;br /&gt;
&lt;br /&gt;
;[[Positioning tool]]&lt;br /&gt;
:Tool to move and resize objects.&lt;br /&gt;
&lt;br /&gt;
;[[private data]]&lt;br /&gt;
:The data of a [[LabVIEW class]]. Only [[member VIs]] of a class can access the private data of a class.&lt;br /&gt;
&lt;br /&gt;
;[[private data control]]&lt;br /&gt;
:Defines the data of the [[LabVIEW class]].&lt;br /&gt;
&lt;br /&gt;
;[[private scope]]&lt;br /&gt;
:Only VIs within the same [[LabVIEW class]] can call the [[member VI]]. Private member VIs display a red key glyph in the Project Explorer window.&lt;br /&gt;
&lt;br /&gt;
;[[probe]]&lt;br /&gt;
:Debugging feature for checking intermediate values in a VI.&lt;br /&gt;
&lt;br /&gt;
;[[Probe tool]]&lt;br /&gt;
:Tool to create probes on wires.&lt;br /&gt;
&lt;br /&gt;
;[[project]]&lt;br /&gt;
:A collection of LabVIEW files and non-LabVIEW files that you can use to create build specifications and deploy or download files to targets.&lt;br /&gt;
&lt;br /&gt;
;[[Project Explorer window]]&lt;br /&gt;
:Window in which you can create and edit LabVIEW projects.&lt;br /&gt;
&lt;br /&gt;
;[[project library]]&lt;br /&gt;
:A collection of VIs, type definitions, shared variables, palette menu files, and other files, including other project libraries.&lt;br /&gt;
&lt;br /&gt;
;[[Properties dialog boxes]]&lt;br /&gt;
:Dialog boxes accessed from the shortcut menu of a control or indicator that you can use to configure how the control or indicator appears in the front panel window.&lt;br /&gt;
&lt;br /&gt;
;[[Property Node]]&lt;br /&gt;
:Sets or finds the properties of a VI or application.&lt;br /&gt;
&lt;br /&gt;
;[[protected scope]]&lt;br /&gt;
:Only VIs within the same [[LabVIEW class]] or a [[descendant class]] can call the [[member VI]]. Protected member VIs display a dark yellow key glyph in the Project Explorer window.&lt;br /&gt;
&lt;br /&gt;
;[[prototype]]&lt;br /&gt;
:Simple, quick implementation of a particular task to demonstrate that the design has the potential to work. The prototype usually has missing features and might have design flaws. In general, prototypes should be thrown away, and the feature should be reimplemented for the final version.&lt;br /&gt;
&lt;br /&gt;
;[[pseudocode]]&lt;br /&gt;
:Simplified language-independent representation of programming code.&lt;br /&gt;
&lt;br /&gt;
;[[public scope]]&lt;br /&gt;
:Any VI can call the [[member VI]] of the [[LabVIEW class]] as a subVI.&lt;br /&gt;
&lt;br /&gt;
;[[pull-down menus]]&lt;br /&gt;
:Menus accessed from a menu bar. Pull-down menu items are usually general in nature.&lt;br /&gt;
&lt;br /&gt;
==Q==&lt;br /&gt;
&lt;br /&gt;
==R==&lt;br /&gt;
;[[race condition]]&lt;br /&gt;
:Occurs when two or more pieces of code that execute in parallel change the value of the same shared resource, typically a global or local variable.&lt;br /&gt;
&lt;br /&gt;
;[[real-time]]&lt;br /&gt;
:Pertaining to the performance of a computation during the actual time that the related physical process transpires so results of the computation can be used in guiding the physical process.&lt;br /&gt;
&lt;br /&gt;
;[[rectangle]]&lt;br /&gt;
:Cluster that contains four 16-bit integers. The first two values describe the vertical and horizontal coordinates of the top left corner. The last two values describe the vertical and horizontal coordinates of the bottom right corner.&lt;br /&gt;
&lt;br /&gt;
;[[recursion]]&lt;br /&gt;
:The ability of a VI to call itself on its own block diagram including the block diagram of any subVIs. Use recursion to operate many times on the output of the same process.&lt;br /&gt;
&lt;br /&gt;
;[[reentrant execution]]&lt;br /&gt;
:Mode in which calls to multiple instances of a subVI can execute in parallel with distinct and separate data storage.&lt;br /&gt;
&lt;br /&gt;
;[[refnum]]&lt;br /&gt;
:Reference number. An identifier that LabVIEW uses as reference to an object such as a VI, application, or an ActiveX or .NET object. Use a refnum as an input parameter for a function or VI to perform an operation on the object.&lt;br /&gt;
&lt;br /&gt;
;[[relative coordinates]]&lt;br /&gt;
:Picture coordinates relative to the current location of the pen.&lt;br /&gt;
&lt;br /&gt;
;[[representation]]&lt;br /&gt;
:Subtype of the numeric data type, of which there are 8-, 16-, 32-, and 64-bit signed and unsigned integers, as well as single-, double-, fixed-point, and extended-precision, floating-point numbers.&lt;br /&gt;
&lt;br /&gt;
;[[resizing circles or handles]]&lt;br /&gt;
:Circles or handles that appear on the borders of an object to indicate the points where you can resize the object.&lt;br /&gt;
&lt;br /&gt;
;[[ring control]]&lt;br /&gt;
:Special numeric control that associates 32-bit integers, starting at 0 and increasing sequentially, with a series of text labels or graphics.&lt;br /&gt;
&lt;br /&gt;
;[[row-major order]]&lt;br /&gt;
:Way to organize the data in a 2D array by rows.&lt;br /&gt;
&lt;br /&gt;
;[[run mode]]&lt;br /&gt;
:When a VI is running or reserved to run. A VI enters run mode when you click the Run or Run Continuously buttons on the front panel toolbar, the single-stepping buttons on the block diagram toolbar, or select Operate»Change to Run Mode. In run mode, all front panel objects have an abridged set of shortcut menu items. You cannot edit a VI while the VI runs.&lt;br /&gt;
&lt;br /&gt;
==S==&lt;br /&gt;
;[[scalar]]&lt;br /&gt;
:Number that a point on a scale can represent. A single value as opposed to an array. Scalar Boolean values and clusters are explicitly singular instances of their respective data types.&lt;br /&gt;
&lt;br /&gt;
;[[scale]]&lt;br /&gt;
:Part of graph, chart, and some numeric controls and indicators that contains a series of marks or points at known intervals to denote units of measure.&lt;br /&gt;
&lt;br /&gt;
;[[scope chart]]&lt;br /&gt;
:Numeric indicator modeled on the operation of an oscilloscope.&lt;br /&gt;
&lt;br /&gt;
;[[Scrolling tool]]&lt;br /&gt;
:Tool to move through windows.&lt;br /&gt;
&lt;br /&gt;
;[[sequence local]]&lt;br /&gt;
:Terminal to pass data between the frames of a Stacked Sequence structure.&lt;br /&gt;
&lt;br /&gt;
;[[sequence structure]]&lt;br /&gt;
:{{See a;so|Flat Sequence structure|Stacked Sequence structure}}.&lt;br /&gt;
&lt;br /&gt;
;[[shared library]]&lt;br /&gt;
:A file containing executable program modules that any number of different programs can use to perform some function. Shared libraries are useful when you want to share the functionality of the VIs you build with other developers.&lt;br /&gt;
&lt;br /&gt;
;[[shared variable]]&lt;br /&gt;
:Variable that enables you to read or write live data among several VIs in a project or across a network.&lt;br /&gt;
&lt;br /&gt;
;[[shift register]]&lt;br /&gt;
:Optional mechanism in loop structures to pass the value of a variable from one iteration of a loop to a subsequent iteration. Shift registers are similar to static variables in text-based programming languages.&lt;br /&gt;
&lt;br /&gt;
;[[shortcut menu]]&lt;br /&gt;
:Menu accessed by right-clicking an object. Menu items pertain to that object specifically.&lt;br /&gt;
&lt;br /&gt;
;[[sibling class]]&lt;br /&gt;
:Any [[LabVIEW class]] that has the same [[parent class]].&lt;br /&gt;
&lt;br /&gt;
;[[slider]]&lt;br /&gt;
:Moveable part of slide controls and indicators.&lt;br /&gt;
&lt;br /&gt;
;[[software configuration management (SCM)]]&lt;br /&gt;
:Mechanism for controlling changes to source code, documents, and other material that make up a product. During software development, source code control is a form of configuration management. Changes occur only through the source code control mechanism. It is also common to implement release configuration management to ensure you can rebuild a particular release of software, if necessary. Configuration management implies archival development of tools, source code, and so on.&lt;br /&gt;
&lt;br /&gt;
;[[source control]]&lt;br /&gt;
:A solution to the problem of sharing VIs and controlling access to avoid accidental loss of data. You can use a source control provider to share files among multiple users, improve security and quality, and track changes to shared projects. Also called source code control.&lt;br /&gt;
&lt;br /&gt;
;[[source lines of code (SLOC)]]&lt;br /&gt;
:Measure of the number of lines of code that make up a text-based project. It is used in some organizations to measure the complexity and cost of a project. How the lines are counted depends on the organization. For example, some organizations do not count blank lines and comment lines. Some count C lines, and some count only the final assembly language lines.&lt;br /&gt;
&lt;br /&gt;
;[[Stacked Sequence structure]]&lt;br /&gt;
:Program control structure that executes its subdiagrams in numeric order. Use this structure to force nodes that are not data dependent to execute in the order you want if flow-through parameters are not available. The Stacked Sequence structure displays each frame so you see only one frame at a time and executes the frames in order until the last frame executes.&lt;br /&gt;
&lt;br /&gt;
;[[static dispatch]]&lt;br /&gt;
:A method of a [[LabVIEW class]]. You define a static dispatch [[member VI]] in only one level of the [[LabVIEW class hierarchy]].&lt;br /&gt;
&lt;br /&gt;
;[[string]]&lt;br /&gt;
:Representation of a value as text.&lt;br /&gt;
&lt;br /&gt;
;[[string controls and indicators]]&lt;br /&gt;
:Front panel objects to manipulate and display text.&lt;br /&gt;
&lt;br /&gt;
;[[strip chart]]&lt;br /&gt;
:Numeric plotting indicator modeled after a paper strip chart recorder, which scrolls as it plots data.&lt;br /&gt;
&lt;br /&gt;
;[[structure]]&lt;br /&gt;
:Program control element, such as a Flat Sequence structure, Stacked Sequence structure, Case structure, For Loop, or While Loop.&lt;br /&gt;
&lt;br /&gt;
;[[subdiagram]]&lt;br /&gt;
:Block diagram within the border of a structure.&lt;br /&gt;
&lt;br /&gt;
;[[subpalette]]&lt;br /&gt;
:Palette that you access from another palette that is above the subpalette in the hierarchy.&lt;br /&gt;
&lt;br /&gt;
;[[subVI]]&lt;br /&gt;
:VI used on the block diagram of another VI. Comparable to a subroutine.&lt;br /&gt;
&lt;br /&gt;
;[[sweep chart]]&lt;br /&gt;
:Numeric indicator modeled on the operation of an oscilloscope. It is similar to a scope chart, except that a line sweeps across the display to separate old data from new data.&lt;br /&gt;
&lt;br /&gt;
;[[syntax]]&lt;br /&gt;
:Set of rules to which statements must conform in a particular programming language.&lt;br /&gt;
&lt;br /&gt;
==T==&lt;br /&gt;
;[[target]]&lt;br /&gt;
:A device or machine on which a VI runs. You must use a LabVIEW project to work with an RT, FPGA, or PDA target.&lt;br /&gt;
&lt;br /&gt;
;[[template VI]]&lt;br /&gt;
:VI that contains common controls and indicators from which you can build multiple VIs that perform similar functions. Access template VIs from the New dialog box.&lt;br /&gt;
&lt;br /&gt;
;[[terminal]]&lt;br /&gt;
:Object or region on a node through which data values pass.&lt;br /&gt;
&lt;br /&gt;
;[[time stamp]]&lt;br /&gt;
:A data type for storing absolute time with high precision..&lt;br /&gt;
&lt;br /&gt;
;[[time step]]&lt;br /&gt;
:Interval from t to t + dt.&lt;br /&gt;
&lt;br /&gt;
;[[tip strip]]&lt;br /&gt;
:Small yellow text banners that identify the terminal name and make it easier to identify terminals for wiring.&lt;br /&gt;
&lt;br /&gt;
;[[tool]]&lt;br /&gt;
:Special cursor to perform specific operations.&lt;br /&gt;
&lt;br /&gt;
;[[toolbar]]&lt;br /&gt;
:Bar that contains command buttons to run and debug VIs.&lt;br /&gt;
&lt;br /&gt;
;[[Tools palette]]&lt;br /&gt;
:Palette that contains tools you can use to edit and debug front panel and block diagram objects.&lt;br /&gt;
&lt;br /&gt;
;[[top-level VI]]&lt;br /&gt;
:VI at the top of the VI hierarchy. This term distinguishes the VI from its subVIs.&lt;br /&gt;
&lt;br /&gt;
;[[tunnel]]&lt;br /&gt;
:Data entry or exit terminal on a structure.&lt;br /&gt;
&lt;br /&gt;
;[[two-dimensional]]&lt;br /&gt;
:Having two dimensions, as in the case of an array that has several rows and columns.&lt;br /&gt;
&lt;br /&gt;
;[[type definition]]&lt;br /&gt;
:Master copy of a custom object that several VIs can use.&lt;br /&gt;
&lt;br /&gt;
;[[type descriptor]]&lt;br /&gt;
:Code that identifies data types; used in data storage and representation. {{See also|data type descriptor}}&lt;br /&gt;
&lt;br /&gt;
==U==&lt;br /&gt;
;[[universal constant]]&lt;br /&gt;
:Block diagram object you cannot edit that emits a particular ASCII character or standard numeric constant, for example, π.&lt;br /&gt;
&lt;br /&gt;
;[[user]]&lt;br /&gt;
:Person who initiates and monitors the operation of a process. {{See also|operator}}&lt;br /&gt;
&lt;br /&gt;
;[[user-defined constant]]&lt;br /&gt;
:Block diagram object that emits a value you set.&lt;br /&gt;
&lt;br /&gt;
==V==&lt;br /&gt;
;[[variant data]]&lt;br /&gt;
:Variant data do not conform to a specific data type and they contain attributes, such as channel names and channel units. LabVIEW represents variant data with the variant data type.&lt;br /&gt;
&lt;br /&gt;
;[[vector]]&lt;br /&gt;
:1D array.&lt;br /&gt;
&lt;br /&gt;
;[[VI]]&lt;br /&gt;
:{{See also|virtual instrument (VI)}}&lt;br /&gt;
&lt;br /&gt;
;[[virtual instrument (VI)]]&lt;br /&gt;
:Program in LabVIEW that models the appearance and function of a physical instrument.&lt;br /&gt;
&lt;br /&gt;
==W==&lt;br /&gt;
;[[waveform]]&lt;br /&gt;
:Multiple voltage readings taken at a specific sampling rate.&lt;br /&gt;
&lt;br /&gt;
;[[waveform chart]]&lt;br /&gt;
:Indicator that plots data points at a certain rate.&lt;br /&gt;
&lt;br /&gt;
;[[WDT]]&lt;br /&gt;
:Waveform data type.&lt;br /&gt;
&lt;br /&gt;
;[[While Loop]]&lt;br /&gt;
:Loop structure that repeats a section of code until a condition occurs.&lt;br /&gt;
&lt;br /&gt;
;[[wire]]&lt;br /&gt;
:Data path between nodes.&lt;br /&gt;
&lt;br /&gt;
;[[wire bend]]&lt;br /&gt;
:Point where two wire segments join.&lt;br /&gt;
&lt;br /&gt;
;[[wire branch]]&lt;br /&gt;
:Section of wire that contains all the wire segments from junction to junction, terminal to junction, or terminal to terminal if there are no junctions between.&lt;br /&gt;
&lt;br /&gt;
;[[wire junction]]&lt;br /&gt;
:Point where three or more wire segments join.&lt;br /&gt;
&lt;br /&gt;
;[[wire segment]]&lt;br /&gt;
:Single horizontal or vertical piece of wire.&lt;br /&gt;
&lt;br /&gt;
;[[wire stubs]]&lt;br /&gt;
:Truncated wires that appear next to unwired terminals when you move the Wiring tool over a VI or function node.&lt;br /&gt;
&lt;br /&gt;
;[[Wiring tool]]&lt;br /&gt;
:Tool to define data paths between terminals.&lt;br /&gt;
&lt;br /&gt;
;[[wizard]]&lt;br /&gt;
:A dialog box with a sequence of pages through which you can move forward and backward as you fill in information.&lt;br /&gt;
&lt;br /&gt;
;[[word length]]&lt;br /&gt;
:The total number of bits a system uses to store a particular piece of data, such as a number. LabVIEW accepts a maximum word length of 64 bits.&lt;br /&gt;
&lt;br /&gt;
==X==&lt;br /&gt;
&lt;br /&gt;
==Y==&lt;br /&gt;
&lt;br /&gt;
==Z==&lt;br /&gt;
&lt;br /&gt;
{{compactTOC2}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Glossaries|LabVIEW terminology]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=ATML&amp;diff=2798</id>
		<title>ATML</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=ATML&amp;diff=2798"/>
		<updated>2007-10-06T15:42:50Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Redirecting to Automated Test Markup Language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Automated Test Markup Language]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Automated_Test_Markup_Language&amp;diff=2797</id>
		<title>Automated Test Markup Language</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Automated_Test_Markup_Language&amp;diff=2797"/>
		<updated>2007-10-06T15:42:18Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: Automated Test Markup Language (AML) is a collection of XML schemas that allows Automated Test Executive (ATE) and test information to be exchanged in a common format adhering to the XML s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Automated Test Markup Language (AML) is a collection of XML schemas that allows Automated Test Executive (ATE) and test information to be exchanged in a common format adhering to the XML standard.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://grouper.ieee.org/groups/scc20/tii/ ATML Homepage on ieee.org]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_Technical_Resource&amp;diff=2796</id>
		<title>LabVIEW Technical Resource</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_Technical_Resource&amp;diff=2796"/>
		<updated>2007-10-06T13:13:26Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
LabVIEW Technical Resource (LTR) was a periodical print magazine that ran from 1993 to 2006.&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LTR&amp;diff=2795</id>
		<title>LTR</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LTR&amp;diff=2795"/>
		<updated>2007-10-06T12:57:31Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Redirecting to LabVIEW Technical Resource&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[LabVIEW Technical Resource]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_Technical_Resource&amp;diff=2794</id>
		<title>LabVIEW Technical Resource</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_Technical_Resource&amp;diff=2794"/>
		<updated>2007-10-06T12:56:46Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: {{stub}}  LabVIEW Technical Resource was a periodical print magazine that ran from 1993 to 2006.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
LabVIEW Technical Resource was a periodical print magazine that ran from 1993 to 2006.&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2035</id>
		<title>LabVIEW Bug Reporting</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2035"/>
		<updated>2007-09-18T17:06:32Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the process required for reporting bugs in LabVIEW.&lt;br /&gt;
&lt;br /&gt;
==Requirements of a Good Bug Report==&lt;br /&gt;
Good bug reports should &#039;&#039;&#039;always&#039;&#039;&#039; include the following:&lt;br /&gt;
# Steps to reproduce&lt;br /&gt;
# What happened&lt;br /&gt;
# What you expected to happened&lt;br /&gt;
This information is needed to confirm that what you are seeing is actually a bug and to help figure out what is causing the buggy behavior.  It is also a great idea to include any example code that demonstrates the bug and/or screenshots of the bug.&lt;br /&gt;
&lt;br /&gt;
==Reporting Bugs to National Instruments==&lt;br /&gt;
If you have a bug to report to NI, go to http://ni.com/ask to&lt;br /&gt;
submit a support request. Select &#039;&#039;Reporting a Bug&#039;&#039; for your Question Type.&lt;br /&gt;
&lt;br /&gt;
If you select Phone or E-mail NI, and you have a valid service contract, you will be routed to&lt;br /&gt;
Applications Engineers who can file the appropriate bug report. If you do&lt;br /&gt;
not have a valid service contract, you should select Phone NI and you will be routed to an intermediary&lt;br /&gt;
person who can pass you through to an Applications Engineer, provided you&lt;br /&gt;
are calling to report a bug.&lt;br /&gt;
&lt;br /&gt;
If your bug &#039;&#039;is&#039;&#039; in fact a bug, ask for a [[CAR Number]] -- this is how your bug is uniquely identified and can be used to track its status.  When you get a CAR Number you should update your posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum to include this CAR Number.&lt;br /&gt;
&lt;br /&gt;
==Posting a Bug Report on the LAVA Forums==&lt;br /&gt;
There is a [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum on LAVA.  This should be used for reporting confirmed bugs with a [[CAR Number]].  If a posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum is determined to not be a bug, it will be moved into another forum.  Also, you can use the [http://forums.lavag.org/LabVIEW-General-f10.html LabVIEW General] discussion forum to discuss the issue with other LAVA members before creating a more official posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum.&lt;br /&gt;
&lt;br /&gt;
Bug report topics should be titled with a short description of the bug.  The description of the topic should be used for status and [[CAR Number]].  For example, see the [http://forums.lavag.org/Move-on-disk-feature-crashes-LabVIEW-t9040.html &amp;quot;Move on disk&amp;quot; feature crashes LabVIEW] bug.  Notice how it has a clear title and description:&lt;br /&gt;
&lt;br /&gt;
* Title: &amp;quot;Move on disk&amp;quot; feature crashes LabVIEW&lt;br /&gt;
* Description: Status: Filed with NI support (CAR #4da9pok8)&lt;br /&gt;
&lt;br /&gt;
==Linking to Your Bug Report on the Monthly Bug Thread==&lt;br /&gt;
In order to give NI visibility into your bug, you should post a link to it on the &#039;&#039;Monthly Bug&#039;&#039; thread in the [http://forums.ni.com/ni/board?board.id=BreakPoint Breakpoint forum] on ni.com.  NI&#039;s support engineers use this to create an index of all publicly reported bugs and will use this index to provide the community with updates when the status of a bug changes.&lt;br /&gt;
&lt;br /&gt;
The easiest way to find the latest Monthly Bug thread is to look at [http://forums.ni.com/ni/search?index=public&amp;amp;without=Re%3A&amp;amp;ratingend=&amp;amp;type=message&amp;amp;ratingstart=&amp;amp;q=Monthly+Bugs&amp;amp;page_size=10&amp;amp;phrase=&amp;amp;advanced=true&amp;amp;f=subject&amp;amp;f=body&amp;amp;one_or_more=&amp;amp;author=&amp;amp;board_id=BreakPoint&amp;amp;submitted=true&amp;amp;sort_by=-date this search results page].  The latest thread should be at the top of the search results list.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAR Number]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG06.png&amp;diff=2027</id>
		<title>File:4DA9POK8-IMG06.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG06.png&amp;diff=2027"/>
		<updated>2007-09-13T21:03:02Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG05.png&amp;diff=2025</id>
		<title>File:4DA9POK8-IMG05.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG05.png&amp;diff=2025"/>
		<updated>2007-09-13T21:02:29Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG04.png&amp;diff=2024</id>
		<title>File:4DA9POK8-IMG04.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG04.png&amp;diff=2024"/>
		<updated>2007-09-13T21:01:12Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG03.png&amp;diff=2023</id>
		<title>File:4DA9POK8-IMG03.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG03.png&amp;diff=2023"/>
		<updated>2007-09-13T21:00:48Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG02.png&amp;diff=2021</id>
		<title>File:4DA9POK8-IMG02.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG02.png&amp;diff=2021"/>
		<updated>2007-09-13T20:59:14Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG01.png&amp;diff=2020</id>
		<title>File:4DA9POK8-IMG01.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:4DA9POK8-IMG01.png&amp;diff=2020"/>
		<updated>2007-09-13T20:58:40Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2018</id>
		<title>LabVIEW Bug Reporting</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2018"/>
		<updated>2007-09-13T16:54:17Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Posting a Bug Report on the LAVA Forums */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the process required for reporting bugs in LabVIEW.&lt;br /&gt;
&lt;br /&gt;
==Requirements of a Good Bug Report==&lt;br /&gt;
Good bug reports should &#039;&#039;&#039;always&#039;&#039;&#039; include the following:&lt;br /&gt;
# Steps to reproduce&lt;br /&gt;
# What happened&lt;br /&gt;
# What you expected to happened&lt;br /&gt;
This information is needed to confirm that what you are seeing is actually a bug and to help figure out what is causing the buggy behavior.  It is also a great idea to include any example code that demonstrates the bug and/or screenshots of the bug.&lt;br /&gt;
&lt;br /&gt;
==Reporting Bugs to National Instruments==&lt;br /&gt;
If you have a bug to report to NI, go to http://ni.com/ask to&lt;br /&gt;
submit a phone support request. If you specify that you are reporting a&lt;br /&gt;
bug, you should be connected to an Applications Engineer who can help you&lt;br /&gt;
by filing the appropriate bug report.&lt;br /&gt;
&lt;br /&gt;
If you select Phone NI, and you have a valid service contract, you will be routed to&lt;br /&gt;
Applications Engineers who can file the appropriate bug report. If you do&lt;br /&gt;
not have a valid service contract, you are routed to an intermediary&lt;br /&gt;
person who can pass you through to an Applications Engineer, provided you&lt;br /&gt;
are calling to report a bug.&lt;br /&gt;
&lt;br /&gt;
If your bug &#039;&#039;is&#039;&#039; in fact a bug, ask for a [[CAR Number]] -- this is how your bug is uniquely identified and can be used to track its status.  When you get a CAR Number you should update your posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum to include this CAR Number.&lt;br /&gt;
&lt;br /&gt;
==Posting a Bug Report on the LAVA Forums==&lt;br /&gt;
There is a [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum on LAVA.  This should be used for reporting confirmed bugs with a [[CAR Number]].  If a posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum is determined to not be a bug, it will be moved into another forum.  Also, you can use the [http://forums.lavag.org/LabVIEW-General-f10.html LabVIEW General] discussion forum to discuss the issue with other LAVA members before creating a more official posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum.&lt;br /&gt;
&lt;br /&gt;
Bug report topics should be titled with a short description of the bug.  The description of the topic should be used for status and [[CAR Number]].  For example, see the [http://forums.lavag.org/Move-on-disk-feature-crashes-LabVIEW-t9040.html &amp;quot;Move on disk&amp;quot; feature crashes LabVIEW] bug.  Notice how it has a clear title and description:&lt;br /&gt;
&lt;br /&gt;
* Title: &amp;quot;Move on disk&amp;quot; feature crashes LabVIEW&lt;br /&gt;
* Description: Status: Filed with NI support (CAR #4da9pok8)&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAR Number]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2017</id>
		<title>LabVIEW Bug Reporting</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2017"/>
		<updated>2007-09-13T16:48:37Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Reporting Bugs to National Instruments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the process required for reporting bugs in LabVIEW.&lt;br /&gt;
&lt;br /&gt;
==Requirements of a Good Bug Report==&lt;br /&gt;
Good bug reports should &#039;&#039;&#039;always&#039;&#039;&#039; include the following:&lt;br /&gt;
# Steps to reproduce&lt;br /&gt;
# What happened&lt;br /&gt;
# What you expected to happened&lt;br /&gt;
This information is needed to confirm that what you are seeing is actually a bug and to help figure out what is causing the buggy behavior.  It is also a great idea to include any example code that demonstrates the bug and/or screenshots of the bug.&lt;br /&gt;
&lt;br /&gt;
==Reporting Bugs to National Instruments==&lt;br /&gt;
If you have a bug to report to NI, go to http://ni.com/ask to&lt;br /&gt;
submit a phone support request. If you specify that you are reporting a&lt;br /&gt;
bug, you should be connected to an Applications Engineer who can help you&lt;br /&gt;
by filing the appropriate bug report.&lt;br /&gt;
&lt;br /&gt;
If you select Phone NI, and you have a valid service contract, you will be routed to&lt;br /&gt;
Applications Engineers who can file the appropriate bug report. If you do&lt;br /&gt;
not have a valid service contract, you are routed to an intermediary&lt;br /&gt;
person who can pass you through to an Applications Engineer, provided you&lt;br /&gt;
are calling to report a bug.&lt;br /&gt;
&lt;br /&gt;
If your bug &#039;&#039;is&#039;&#039; in fact a bug, ask for a [[CAR Number]] -- this is how your bug is uniquely identified and can be used to track its status.  When you get a CAR Number you should update your posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum to include this CAR Number.&lt;br /&gt;
&lt;br /&gt;
==Posting a Bug Report on the LAVA Forums==&lt;br /&gt;
There is a [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum on LAVA.  This should be used for reporting confirmed bugs with a [[CAR Number]].  If a posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum is determined to not be a bug, it will be moved into another forum.  Also, you can use the [http://forums.lavag.org/LabVIEW-General-f10.html LabVIEW General] discussion forum to discuss the issue with other LAVA members before creating a more official posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAR Number]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2016</id>
		<title>LabVIEW Bug Reporting</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_Bug_Reporting&amp;diff=2016"/>
		<updated>2007-09-13T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the process required for reporting bugs in LabVIEW.&lt;br /&gt;
&lt;br /&gt;
==Requirements of a Good Bug Report==&lt;br /&gt;
Good bug reports should &#039;&#039;&#039;always&#039;&#039;&#039; include the following:&lt;br /&gt;
# Steps to reproduce&lt;br /&gt;
# What happened&lt;br /&gt;
# What you expected to happened&lt;br /&gt;
This information is needed to confirm that what you are seeing is actually a bug and to help figure out what is causing the buggy behavior.  It is also a great idea to include any example code that demonstrates the bug and/or screenshots of the bug.&lt;br /&gt;
&lt;br /&gt;
==Reporting Bugs to National Instruments==&lt;br /&gt;
If you have a bug to report to NI, go to http://ni.com/ask to&lt;br /&gt;
submit a phone support request. If you specify that you are reporting a&lt;br /&gt;
bug, you should be connected to an Applications Engineer who can help you&lt;br /&gt;
by filing the appropriate bug report.&lt;br /&gt;
&lt;br /&gt;
If you select Phone NI, and you have a valid service contract, you will be routed to&lt;br /&gt;
Applications Engineers who can file the appropriate bug report. If you do&lt;br /&gt;
not have a valid service contract, you are routed to an intermediary&lt;br /&gt;
person who can pass you through to an Applications Engineer, provided you&lt;br /&gt;
are calling to report a bug.&lt;br /&gt;
&lt;br /&gt;
If your bug &#039;&#039;is&#039;&#039; in fact a bug, ask for a [[CAR Number]] -- this is how your bug is uniquely identified and can be used to track its status.&lt;br /&gt;
&lt;br /&gt;
==Posting a Bug Report on the LAVA Forums==&lt;br /&gt;
There is a [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum on LAVA.  This should be used for reporting confirmed bugs with a [[CAR Number]].  If a posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum is determined to not be a bug, it will be moved into another forum.  Also, you can use the [http://forums.lavag.org/LabVIEW-General-f10.html LabVIEW General] discussion forum to discuss the issue with other LAVA members before creating a more official posting in the [http://forums.lavag.org/Bug-Lists-f17.html Bug Lists] forum.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAR Number]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_FAQ&amp;diff=2015</id>
		<title>LabVIEW FAQ</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_FAQ&amp;diff=2015"/>
		<updated>2007-09-13T16:32:39Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
*[[G|What is G?]]&lt;br /&gt;
*[[LabVIEW#Learning_LabVIEW|How can I learn more about LabVIEW?]]&lt;br /&gt;
*[[LabVIEW_Bug_Reporting|How do I report a LabVIEW bug?]]&lt;br /&gt;
*[[OpenG|What is OpenG?]]&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
*[[State_Machine|What is a State Machine?]]&lt;br /&gt;
*[[While_Loop|Is the while loop really a while loop?]]&lt;br /&gt;
*[[Numeric|Is there a NaN equivalent for integer data types?]]&lt;br /&gt;
*[[Style_Guide|What is good LabVIEW programming style?]]&lt;br /&gt;
&lt;br /&gt;
=== [[Application Builder]], Installers and [[code distribution]] ===&lt;br /&gt;
&lt;br /&gt;
*[[Run-Time_Engine_Limitations|Why doesn&#039;t the VI method &amp;quot;Make Current Values Default&amp;quot; work?]]&lt;br /&gt;
*[[How_to_Build_an_Executable|How do I build an executable?]]&lt;br /&gt;
&lt;br /&gt;
=== Application Design &amp;amp; Architecture ===&lt;br /&gt;
&lt;br /&gt;
*[[Functional_Globals|What are LabVIEW 2 style globals?]]&lt;br /&gt;
*[[State_Machine|What is a state machine?]]&lt;br /&gt;
&lt;br /&gt;
=== [[External Code]] ===&lt;br /&gt;
&lt;br /&gt;
*[[Excel|How do I write data to an Excel spreadsheet?]]&lt;br /&gt;
&lt;br /&gt;
=== [[Database]] and [[File IO]] ===&lt;br /&gt;
&lt;br /&gt;
*[[File_IO|How do I rename a file?]]&lt;br /&gt;
&lt;br /&gt;
=== [[Hardware]] ===&lt;br /&gt;
&lt;br /&gt;
* [[Serial#Printing_to_a_line_printer|How do I print to a line printer?]]&lt;br /&gt;
* [[Serial#Find_a_single_character_in_a_serial_input_stream|How do I find a single character in a serial stream?]]&lt;br /&gt;
* [[Serial#Using_a_Modem_to_Send_Data|Can I use a modem to send data?]]&lt;br /&gt;
* [[Serial#Using_a_modem_to_send_an_audio_message|How do I use a modem to send an audio message?]]&lt;br /&gt;
* [[Instrument_Control#Troubleshooting_VISA_sessions|Why doesn&#039;t my VISA session work?]]&lt;br /&gt;
* [[Instrument_Control#Releasing_control_over_an_instrument|How do I release control over an instrument?]]&lt;br /&gt;
* [[FieldPoint|Why don&#039;t the Fieldpoint examples use FP Read?]]&lt;br /&gt;
&lt;br /&gt;
=== [[LabVIEW]] Development Environment ===&lt;br /&gt;
&lt;br /&gt;
* [[Multiple_Instances_of_LabVIEW|How to run multiple instances of LabVIEW?]]&lt;br /&gt;
* [[Insane_Objects|What does an &amp;quot;Insane Object&amp;quot; mean?]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_FAQ&amp;diff=2014</id>
		<title>LabVIEW FAQ</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_FAQ&amp;diff=2014"/>
		<updated>2007-09-13T16:31:55Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
*[[G|What is G?]]&lt;br /&gt;
*[[LabVIEW#Learning_LabVIEW|How can I learn more about LabVIEW?]]&lt;br /&gt;
*[[LabVIEW#Reporting_LabVIEW_Bugs|LabVIEW_Bug_Reporting]]&lt;br /&gt;
*[[OpenG|What is OpenG?]]&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
*[[State_Machine|What is a State Machine?]]&lt;br /&gt;
*[[While_Loop|Is the while loop really a while loop?]]&lt;br /&gt;
*[[Numeric|Is there a NaN equivalent for integer data types?]]&lt;br /&gt;
*[[Style_Guide|What is good LabVIEW programming style?]]&lt;br /&gt;
&lt;br /&gt;
=== [[Application Builder]], Installers and [[code distribution]] ===&lt;br /&gt;
&lt;br /&gt;
*[[Run-Time_Engine_Limitations|Why doesn&#039;t the VI method &amp;quot;Make Current Values Default&amp;quot; work?]]&lt;br /&gt;
*[[How_to_Build_an_Executable|How do I build an executable?]]&lt;br /&gt;
&lt;br /&gt;
=== Application Design &amp;amp; Architecture ===&lt;br /&gt;
&lt;br /&gt;
*[[Functional_Globals|What are LabVIEW 2 style globals?]]&lt;br /&gt;
*[[State_Machine|What is a state machine?]]&lt;br /&gt;
&lt;br /&gt;
=== [[External Code]] ===&lt;br /&gt;
&lt;br /&gt;
*[[Excel|How do I write data to an Excel spreadsheet?]]&lt;br /&gt;
&lt;br /&gt;
=== [[Database]] and [[File IO]] ===&lt;br /&gt;
&lt;br /&gt;
*[[File_IO|How do I rename a file?]]&lt;br /&gt;
&lt;br /&gt;
=== [[Hardware]] ===&lt;br /&gt;
&lt;br /&gt;
* [[Serial#Printing_to_a_line_printer|How do I print to a line printer?]]&lt;br /&gt;
* [[Serial#Find_a_single_character_in_a_serial_input_stream|How do I find a single character in a serial stream?]]&lt;br /&gt;
* [[Serial#Using_a_Modem_to_Send_Data|Can I use a modem to send data?]]&lt;br /&gt;
* [[Serial#Using_a_modem_to_send_an_audio_message|How do I use a modem to send an audio message?]]&lt;br /&gt;
* [[Instrument_Control#Troubleshooting_VISA_sessions|Why doesn&#039;t my VISA session work?]]&lt;br /&gt;
* [[Instrument_Control#Releasing_control_over_an_instrument|How do I release control over an instrument?]]&lt;br /&gt;
* [[FieldPoint|Why don&#039;t the Fieldpoint examples use FP Read?]]&lt;br /&gt;
&lt;br /&gt;
=== [[LabVIEW]] Development Environment ===&lt;br /&gt;
&lt;br /&gt;
* [[Multiple_Instances_of_LabVIEW|How to run multiple instances of LabVIEW?]]&lt;br /&gt;
* [[Insane_Objects|What does an &amp;quot;Insane Object&amp;quot; mean?]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Functional_global_variable&amp;diff=1984</id>
		<title>Functional global variable</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Functional_global_variable&amp;diff=1984"/>
		<updated>2007-09-10T23:02:12Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functional Globals are VIs that allow controlled access to data or resources, often allowing various actions to be performed.  Functional Globals (FGs) most often make use of uninitialized shift registers (USRs).  USRs are shift registers that do not have a wired input coming into the left side of the loop.  A USR stores its data between successive runs of the VI as long as the VI remains in memory.&lt;br /&gt;
&lt;br /&gt;
==Alternative Nomenclature==&lt;br /&gt;
Functional Globals are known by various names among LabVIEW programmers.&lt;br /&gt;
*LV2 globals – because LV2 supported uninitialized shift registers&lt;br /&gt;
*USR globals – since most FGs make use of uninitialized shift registers&lt;br /&gt;
* VIG - &amp;quot;VI Global&amp;quot; as the VI performs the functionality of a global&lt;br /&gt;
*Action Engines – it has been argued [http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328&amp;amp;query.id=618807#M240328] that the term Functional Globals should refer to VIs that just allow read/write access to data.  Action Engines would refer to the larger set of VIs that allow some defined action on the data. &lt;br /&gt;
&lt;br /&gt;
The official name for these constructs in NI literature is Functional Global Variable, and a [http://forums.lavag.org/index.php?showtopic=2469&amp;amp;st=0 survey] on LAVA indicated that Functional Globals is also the most popular choice.&lt;br /&gt;
&lt;br /&gt;
==Structure==&lt;br /&gt;
The most common form of a Functional Global is a [[While Loop]] with a TRUE wired to the stop condition.  This forces the loop to terminate after just one execution, meaning the while loop is only used to provide a place to put USRs.  A [[For Loop]] could also be used with a constant wired to the count terminal.  Another method is to use a single-element queue to store the data, though this requires more mouse clicks to implement.  The performance of each of these is very close and most likely will vary a little from computer to computer.&lt;br /&gt;
&lt;br /&gt;
[[Image:Simple_FG.PNG|frame|center|Simple Functional Global using a While Loop]]&lt;br /&gt;
&lt;br /&gt;
In order to specify what action to perform, an [[enumerated type]] is often used as an input to the Functional Global.  Other methods are possible (Booleans, First Call?, etc.), but an enumerated type provides for a readable, extensible list of actions.  Furthermore, saving the enumerated type as a typedef control makes any changes to the list automatically update wherever the Functional Global is used in the code.  The ‘action’ input is fed to a case structure which contains the code to implement for each of the defined actions.&lt;br /&gt;
&lt;br /&gt;
For more complex situations, multiple actions can be performed on a single call to the FG.  This can be a straightforward [[state machine]], or it can allow for different actions based on the data received or on the existence of resources, etc.&lt;br /&gt;
&lt;br /&gt;
The data in a Functional Global could be of any type, but very often there will be several data elements in a single FG.  It is helpful to group the data into a cluster to limit the number of wires entering and leaving the FG.  Designing the data structures and how you cluster your data should be done early on, rather than haphazardly growing your clusters as you grow your program.&lt;br /&gt;
&lt;br /&gt;
In order to deal with varying input requirements on the different actions, one can create ‘wrappers’ around the Functional Global that allow for different inputs to be required.  This also gives the benefit of being able to search your code for certain actions as you can search for a specific VI, but not a specific enumerated type’s value.&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
The primary use of Functional Globals is to provide data sharing across an entire project, both horizontally and vertically.  Horizontal sharing means multiple top-level VIs running autonomously can all have access to the same data.  Vertical sharing means that subVIs at any depth will have access to the data without requiring explicit passing of parameters through VI [[connector pane]] terminals.  These are common issues in even small-sized programs.&lt;br /&gt;
&lt;br /&gt;
Another common use is to encapsulate some functionality, especially functionality that is linked to persistent data or resources like files or devices.  This encapsulation protects the resource and provides an extensible interface for interacting with the data or resource.  The encapsulation also allows you to avoid a plethora of shift registers in a single VI.  You can offload the shift-register to the Functional Global, and call it when needed, without worrying about wiring the data through all your case structures.&lt;br /&gt;
&lt;br /&gt;
To get a better idea of what can be done with Functional Globals, here is a list of things that can be done:&lt;br /&gt;
*Load information from a file into a FG, access it anywhere in your program&lt;br /&gt;
*Maintain your system’s configuration parameters in one location.&lt;br /&gt;
*Store a control reference (like a tree control) in a FG, and then define an interface to manage that control.  For complex controls like trees and multi-column listboxes this can simplify your top-level code.&lt;br /&gt;
*Timers are well implemented with FGs.  You can keep the start time in the shift register, and then check the elapsed time when you call it again.&lt;br /&gt;
*Automatically preallocate an array when the FG is first called, then use “Replace Array Subset” to efficiently manipulate the array.&lt;br /&gt;
*Keep an ‘Undo’ list (stack) that allows you to push changes onto a stack, and pop them off when you need to undo the change. &lt;br /&gt;
The list could go on and on – whatever you can dream up!&lt;br /&gt;
&lt;br /&gt;
==Race Conditions and Locking==&lt;br /&gt;
One of the main reasons that Functional Globals are encouraged in lieu of [[global variable]]s is race conditions.  The majority of Functional Globals are, by definition, not reentrant so that different calls to the FG will all refer to the same shift registers and hence the same data or resource.  This means that when a VI calls a FG, that FG is locked or reserved for use by the calling VI.  Other VIs need to wait until it is done before they can call the FG.&lt;br /&gt;
&lt;br /&gt;
Global variables are reentrant.  If you try to write a value to the global in several places in your code, updates to the value are unpredictable with respect to time. This means that changes to the global can be subject to race conditions. This is especially true if you read/write to the global where a race condition could occur between the read and the write of the variable.&lt;br /&gt;
&lt;br /&gt;
The downside for Functional Globals is that the locking that takes place can be a bottleneck in the code if many VIs are trying to access the FG at the same time.  The majority of applications will not have a problem, but care must be taken if speed is a concern.&lt;br /&gt;
&lt;br /&gt;
It is also important to note that Functional Globals are not a cure-all for race conditions.  If actions on the Functional Global are not atomic (i.e. they require more than one call to the FG) then race conditions are still possible.  Race conditions are only eliminated if all updates to the data are done inside the FG, in a single call.  Here are a couple ways to still allow race conditions with FGs.&lt;br /&gt;
*Ask for the data from the FG, change it, and then write it back to the FG.&lt;br /&gt;
*Successive modifications, such as {Set data, normalize data, sort data, output max}  By the time you sort the data, new data could have been set that hasn’t been normalized.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
#Efficient Memory Usage – Because the VI retains the same data space regardless of it use in the code, only a single call to the memory manager is made. If arrays are stored in the USR, and replace array element primitives used, then the memory space is efficiently used wherever the VI is called.&lt;br /&gt;
#Reduces problems with race conditions, as discussed above.&lt;br /&gt;
#Error checking can be done on data writes (Global variables don’t allow this).&lt;br /&gt;
#High-level code more readable – By moving shift registers and code logic into Functional Globals with readable action lists, top-level code become simpler and cleaner.&lt;br /&gt;
#Reuse.  Many FGs are generic enough to be used over and over again.&lt;br /&gt;
&lt;br /&gt;
==Concerns==&lt;br /&gt;
===Busy connector panes===&lt;br /&gt;
Terminals get used up quickly, so be sure to design well up front and choose a connector pane with more terminals than you need.  You can avoid excessive terminal usage by grouping all of your data into a cluster (preferably, a [[Type Definition]]) that is passed in and out of your functional global which will allow you to bundle and unbundle specific variables as needed on your main VI.&lt;br /&gt;
&lt;br /&gt;
===Data Persistence===&lt;br /&gt;
Data in a USR, and hence in a Functional Global, disappears if the owning VI goes out of memory.  When a VI runs for the first time, all of its subVIs that are not already in memory are loaded into memory and they belong to that parent VI.  If that parent VI is stopped, all of the subVIs that belong to it are also released from memory – even if there are other VIs in memory still referencing those subVIs.  The next time one of those subVIs is run, it is loaded into memory again and that calling VI becomes the new parent VI.  But if there was anything stored in USRs, that data is now gone.  &lt;br /&gt;
&lt;br /&gt;
This behavior is different from a queue reference, for instance, where the queue is only destroyed when ALL VIs referencing it leave memory.  It means that if you use Functional Globals across multiple top-level VIs, then you need to have a VI that is run first and contains all of your Functional Globals as subVIs.  This ‘First Run’ VI must stay in memory until all other top-level VIs are closed to insure that the Functional Global data will be available.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
Some testing has shown that, as of LabVIEW 8.5, using a [[Case Structure]] performs better (from 1.5x to 3x) than a [[Select function]] for controlling the data flow of the Set/Write vs. the Get/Read operation.&lt;br /&gt;
&lt;br /&gt;
==Reentrant functional globals==&lt;br /&gt;
===Unshared data===&lt;br /&gt;
There are certain problems where you do not need to share the persistent data elsewhere in the code.  If you create a &#039;&#039;&#039;windowed average&#039;&#039;&#039; VI, it can be made reentrant and can be used in multiple places in your code to average data streams.  This is an example of an in-place operation that is not shared, but requires persistent data.  Timing a process in a single loop could be done with one instance of a Functional Global.  Making this timing FG reentrant allows the developer to use that same timing FG to time other processes.  See [[Reentrant VI]] for more information.&lt;br /&gt;
&lt;br /&gt;
===By reference===&lt;br /&gt;
It’s possible to make use of reentrancy to duplicate functional globals. This allows to create as many globals as you need (even at run time) without duplicating code or modifying the original FG. The main disadvantage of this technique is the necessity to keep a reference to every instance of the functional global and pass them to the VIs or subVIs that will use them.&lt;br /&gt;
&lt;br /&gt;
With this method, the only change to the original FG is to make the VI reentrant. Keep in mind that, from now on, this functional global can’t be used in the habitual way, since any instance will retain its own values.&lt;br /&gt;
&lt;br /&gt;
To create an instance of the functional global, open it with the &#039;&#039;&#039;Open VI Reference&#039;&#039;&#039; function (use option 0x08 to prepare for reentrant run) and use the output reference to set the control values, run the VI and get the results. To facilitate things an avoid mistakes when getting/setting values, may be advisable to use the &#039;&#039;&#039;Call by Reference node&#039;&#039;&#039;. Furthermore, the encapsulation of the FG actions in specific wrappers, as detailed in the Structure section above, is also useful.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Global variable]]&lt;br /&gt;
*[[State machine]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[http://forums.lavag.org/LV2OO-Style-Global-v20-from-NI-Week-presentation-t8780.html LAVA forum discussion about LV2OO-style globals]&lt;br /&gt;
*[http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328&amp;amp;query.id=618807#M240328 NI Forums Community Nugget on Action Engines]&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361A-01/lvconcepts/suggestions_for_exec/#Functional_Global_Variables NI Documentation on Functional Global Variables]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Functional_global_variable&amp;diff=1983</id>
		<title>Functional global variable</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Functional_global_variable&amp;diff=1983"/>
		<updated>2007-09-10T23:01:33Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added &amp;quot;Performance&amp;quot; subsection of &amp;quot;Concerns&amp;quot; section to show&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functional Globals are VIs that allow controlled access to data or resources, often allowing various actions to be performed.  Functional Globals (FGs) most often make use of uninitialized shift registers (USRs).  USRs are shift registers that do not have a wired input coming into the left side of the loop.  A USR stores its data between successive runs of the VI as long as the VI remains in memory.&lt;br /&gt;
&lt;br /&gt;
==Alternative Nomenclature==&lt;br /&gt;
Functional Globals are known by various names among LabVIEW programmers.&lt;br /&gt;
*LV2 globals – because LV2 supported uninitialized shift registers&lt;br /&gt;
*USR globals – since most FGs make use of uninitialized shift registers&lt;br /&gt;
* VIG - &amp;quot;VI Global&amp;quot; as the VI performs the functionality of a global&lt;br /&gt;
*Action Engines – it has been argued [http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328&amp;amp;query.id=618807#M240328] that the term Functional Globals should refer to VIs that just allow read/write access to data.  Action Engines would refer to the larger set of VIs that allow some defined action on the data. &lt;br /&gt;
&lt;br /&gt;
The official name for these constructs in NI literature is Functional Global Variable, and a [http://forums.lavag.org/index.php?showtopic=2469&amp;amp;st=0 survey] on LAVA indicated that Functional Globals is also the most popular choice.&lt;br /&gt;
&lt;br /&gt;
==Structure==&lt;br /&gt;
The most common form of a Functional Global is a [[While Loop]] with a TRUE wired to the stop condition.  This forces the loop to terminate after just one execution, meaning the while loop is only used to provide a place to put USRs.  A [[For Loop]] could also be used with a constant wired to the count terminal.  Another method is to use a single-element queue to store the data, though this requires more mouse clicks to implement.  The performance of each of these is very close and most likely will vary a little from computer to computer.&lt;br /&gt;
&lt;br /&gt;
[[Image:Simple_FG.PNG|frame|center|Simple Functional Global using a While Loop]]&lt;br /&gt;
&lt;br /&gt;
In order to specify what action to perform, an [[enumerated type]] is often used as an input to the Functional Global.  Other methods are possible (Booleans, First Call?, etc.), but an enumerated type provides for a readable, extensible list of actions.  Furthermore, saving the enumerated type as a typedef control makes any changes to the list automatically update wherever the Functional Global is used in the code.  The ‘action’ input is fed to a case structure which contains the code to implement for each of the defined actions.&lt;br /&gt;
&lt;br /&gt;
For more complex situations, multiple actions can be performed on a single call to the FG.  This can be a straightforward [[state machine]], or it can allow for different actions based on the data received or on the existence of resources, etc.&lt;br /&gt;
&lt;br /&gt;
The data in a Functional Global could be of any type, but very often there will be several data elements in a single FG.  It is helpful to group the data into a cluster to limit the number of wires entering and leaving the FG.  Designing the data structures and how you cluster your data should be done early on, rather than haphazardly growing your clusters as you grow your program.&lt;br /&gt;
&lt;br /&gt;
In order to deal with varying input requirements on the different actions, one can create ‘wrappers’ around the Functional Global that allow for different inputs to be required.  This also gives the benefit of being able to search your code for certain actions as you can search for a specific VI, but not a specific enumerated type’s value.&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
The primary use of Functional Globals is to provide data sharing across an entire project, both horizontally and vertically.  Horizontal sharing means multiple top-level VIs running autonomously can all have access to the same data.  Vertical sharing means that subVIs at any depth will have access to the data without requiring explicit passing of parameters through VI [[connector pane]] terminals.  These are common issues in even small-sized programs.&lt;br /&gt;
&lt;br /&gt;
Another common use is to encapsulate some functionality, especially functionality that is linked to persistent data or resources like files or devices.  This encapsulation protects the resource and provides an extensible interface for interacting with the data or resource.  The encapsulation also allows you to avoid a plethora of shift registers in a single VI.  You can offload the shift-register to the Functional Global, and call it when needed, without worrying about wiring the data through all your case structures.&lt;br /&gt;
&lt;br /&gt;
To get a better idea of what can be done with Functional Globals, here is a list of things that can be done:&lt;br /&gt;
*Load information from a file into a FG, access it anywhere in your program&lt;br /&gt;
*Maintain your system’s configuration parameters in one location.&lt;br /&gt;
*Store a control reference (like a tree control) in a FG, and then define an interface to manage that control.  For complex controls like trees and multi-column listboxes this can simplify your top-level code.&lt;br /&gt;
*Timers are well implemented with FGs.  You can keep the start time in the shift register, and then check the elapsed time when you call it again.&lt;br /&gt;
*Automatically preallocate an array when the FG is first called, then use “Replace Array Subset” to efficiently manipulate the array.&lt;br /&gt;
*Keep an ‘Undo’ list (stack) that allows you to push changes onto a stack, and pop them off when you need to undo the change. &lt;br /&gt;
The list could go on and on – whatever you can dream up!&lt;br /&gt;
&lt;br /&gt;
==Race Conditions and Locking==&lt;br /&gt;
One of the main reasons that Functional Globals are encouraged in lieu of [[global variable]]s is race conditions.  The majority of Functional Globals are, by definition, not reentrant so that different calls to the FG will all refer to the same shift registers and hence the same data or resource.  This means that when a VI calls a FG, that FG is locked or reserved for use by the calling VI.  Other VIs need to wait until it is done before they can call the FG.&lt;br /&gt;
&lt;br /&gt;
Global variables are reentrant.  If you try to write a value to the global in several places in your code, updates to the value are unpredictable with respect to time. This means that changes to the global can be subject to race conditions. This is especially true if you read/write to the global where a race condition could occur between the read and the write of the variable.&lt;br /&gt;
&lt;br /&gt;
The downside for Functional Globals is that the locking that takes place can be a bottleneck in the code if many VIs are trying to access the FG at the same time.  The majority of applications will not have a problem, but care must be taken if speed is a concern.&lt;br /&gt;
&lt;br /&gt;
It is also important to note that Functional Globals are not a cure-all for race conditions.  If actions on the Functional Global are not atomic (i.e. they require more than one call to the FG) then race conditions are still possible.  Race conditions are only eliminated if all updates to the data are done inside the FG, in a single call.  Here are a couple ways to still allow race conditions with FGs.&lt;br /&gt;
*Ask for the data from the FG, change it, and then write it back to the FG.&lt;br /&gt;
*Successive modifications, such as {Set data, normalize data, sort data, output max}  By the time you sort the data, new data could have been set that hasn’t been normalized.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
#Efficient Memory Usage – Because the VI retains the same data space regardless of it use in the code, only a single call to the memory manager is made. If arrays are stored in the USR, and replace array element primitives used, then the memory space is efficiently used wherever the VI is called.&lt;br /&gt;
#Reduces problems with race conditions, as discussed above.&lt;br /&gt;
#Error checking can be done on data writes (Global variables don’t allow this).&lt;br /&gt;
#High-level code more readable – By moving shift registers and code logic into Functional Globals with readable action lists, top-level code become simpler and cleaner.&lt;br /&gt;
#Reuse.  Many FGs are generic enough to be used over and over again.&lt;br /&gt;
&lt;br /&gt;
==Concerns==&lt;br /&gt;
===Busy connector panes===&lt;br /&gt;
Terminals get used up quickly, so be sure to design well up front and choose a connector pane with more terminals than you need.  You can avoid excessive terminal usage by grouping all of your data into a cluster (preferably, a [[Type Definition]]) that is passed in and out of your functional global which will allow you to bundle and unbundle specific variables as needed on your main VI.&lt;br /&gt;
&lt;br /&gt;
===Data Persistence===&lt;br /&gt;
Data in a USR, and hence in a Functional Global, disappears if the owning VI goes out of memory.  When a VI runs for the first time, all of its subVIs that are not already in memory are loaded into memory and they belong to that parent VI.  If that parent VI is stopped, all of the subVIs that belong to it are also released from memory – even if there are other VIs in memory still referencing those subVIs.  The next time one of those subVIs is run, it is loaded into memory again and that calling VI becomes the new parent VI.  But if there was anything stored in USRs, that data is now gone.  &lt;br /&gt;
&lt;br /&gt;
This behavior is different from a queue reference, for instance, where the queue is only destroyed when ALL VIs referencing it leave memory.  It means that if you use Functional Globals across multiple top-level VIs, then you need to have a VI that is run first and contains all of your Functional Globals as subVIs.  This ‘First Run’ VI must stay in memory until all other top-level VIs are closed to insure that the Functional Global data will be available.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
Some testing has shown that, as of LabVIEW 8.5, using a [[Case Structure]] performs better (from 1.5x to 3x) than a [Select function] for controlling the data flow of the Set/Write vs. the Get/Read operation.&lt;br /&gt;
&lt;br /&gt;
==Reentrant functional globals==&lt;br /&gt;
===Unshared data===&lt;br /&gt;
There are certain problems where you do not need to share the persistent data elsewhere in the code.  If you create a &#039;&#039;&#039;windowed average&#039;&#039;&#039; VI, it can be made reentrant and can be used in multiple places in your code to average data streams.  This is an example of an in-place operation that is not shared, but requires persistent data.  Timing a process in a single loop could be done with one instance of a Functional Global.  Making this timing FG reentrant allows the developer to use that same timing FG to time other processes.  See [[Reentrant VI]] for more information.&lt;br /&gt;
&lt;br /&gt;
===By reference===&lt;br /&gt;
It’s possible to make use of reentrancy to duplicate functional globals. This allows to create as many globals as you need (even at run time) without duplicating code or modifying the original FG. The main disadvantage of this technique is the necessity to keep a reference to every instance of the functional global and pass them to the VIs or subVIs that will use them.&lt;br /&gt;
&lt;br /&gt;
With this method, the only change to the original FG is to make the VI reentrant. Keep in mind that, from now on, this functional global can’t be used in the habitual way, since any instance will retain its own values.&lt;br /&gt;
&lt;br /&gt;
To create an instance of the functional global, open it with the &#039;&#039;&#039;Open VI Reference&#039;&#039;&#039; function (use option 0x08 to prepare for reentrant run) and use the output reference to set the control values, run the VI and get the results. To facilitate things an avoid mistakes when getting/setting values, may be advisable to use the &#039;&#039;&#039;Call by Reference node&#039;&#039;&#039;. Furthermore, the encapsulation of the FG actions in specific wrappers, as detailed in the Structure section above, is also useful.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Global variable]]&lt;br /&gt;
*[[State machine]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[http://forums.lavag.org/LV2OO-Style-Global-v20-from-NI-Week-presentation-t8780.html LAVA forum discussion about LV2OO-style globals]&lt;br /&gt;
*[http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328&amp;amp;query.id=618807#M240328 NI Forums Community Nugget on Action Engines]&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361A-01/lvconcepts/suggestions_for_exec/#Functional_Global_Variables NI Documentation on Functional Global Variables]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:System_Label.png&amp;diff=1973</id>
		<title>File:System Label.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:System_Label.png&amp;diff=1973"/>
		<updated>2007-08-28T23:32:31Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=System_Label&amp;diff=1972</id>
		<title>System Label</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=System_Label&amp;diff=1972"/>
		<updated>2007-08-28T23:32:14Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: A &amp;#039;&amp;#039;&amp;#039;System Label&amp;#039;&amp;#039;&amp;#039; is a text decoration found on the &amp;#039;&amp;#039;Controls&amp;gt;&amp;gt;System&amp;#039;&amp;#039; palette.  It is very useful because it&amp;#039;s background and border inherit (adapt automatically) to the color of the...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;System Label&#039;&#039;&#039; is a text decoration found on the &#039;&#039;Controls&amp;gt;&amp;gt;System&#039;&#039; palette.  It is very useful because it&#039;s background and border inherit (adapt automatically) to the color of the block diagram or front panel objects they are placed upon.  This makes them useful for labeling wires as a form of code commenting.&lt;br /&gt;
&lt;br /&gt;
[[Image:System Label.png]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Error_Case_Structure&amp;diff=1971</id>
		<title>Error Case Structure</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Error_Case_Structure&amp;diff=1971"/>
		<updated>2007-08-28T23:14:29Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;And &#039;&#039;&#039;Error Case Structure&#039;&#039;&#039; is term that describes a [[Case Structure]] that has an [[Error Cluster]] wired to its selector terminal, which causes it&#039;s two possible cases to be &#039;&#039;No Error&#039;&#039; (showing a green frame) and &#039;&#039;Error&#039;&#039; (showing a red frame).&lt;br /&gt;
&lt;br /&gt;
[[Image:Error Case Structure.png]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://zone.ni.com/reference/en-XX/help/371361B-01/lvconcepts/case_and_sequence_structures/ Case and Sequence Structures] (LabVIEW 8.2 Help Documentation)&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Error_Case_Structure&amp;diff=1970</id>
		<title>Error Case Structure</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Error_Case_Structure&amp;diff=1970"/>
		<updated>2007-08-28T23:13:47Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;And &#039;&#039;&#039;Error Case Structure&#039;&#039;&#039; is term that describes a [[Case Structure]] that has an [[Error Cluster]] wired to its selector terminal, which causes it&#039;s two possible cases to be &#039;&#039;Error&#039;&#039; (showing a green frame) and &#039;&#039;No Error&#039;&#039; (showing a red frame).&lt;br /&gt;
&lt;br /&gt;
[[Image:Error Case Structure.png]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://zone.ni.com/reference/en-XX/help/371361B-01/lvconcepts/case_and_sequence_structures/ Case and Sequence Structures] (LabVIEW 8.2 Help Documentation)&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File:Error_Case_Structure.png&amp;diff=1969</id>
		<title>File:Error Case Structure.png</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File:Error_Case_Structure.png&amp;diff=1969"/>
		<updated>2007-08-28T23:12:01Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Error_Case_Structure&amp;diff=1968</id>
		<title>Error Case Structure</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Error_Case_Structure&amp;diff=1968"/>
		<updated>2007-08-28T23:11:40Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: And &amp;#039;&amp;#039;&amp;#039;Error Case Structure&amp;#039;&amp;#039;&amp;#039; is term that describes a Case Structure that has an Error Cluster wired to its selector terminal, which causes it&amp;#039;s two possible cases to be &amp;#039;&amp;#039;Error&amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;And &#039;&#039;&#039;Error Case Structure&#039;&#039;&#039; is term that describes a [[Case Structure]] that has an [[Error Cluster]] wired to its selector terminal, which causes it&#039;s two possible cases to be &#039;&#039;Error&#039;&#039; (showing a green frame) and &#039;&#039;No Error&#039;&#039; (showing a red frame).&lt;br /&gt;
&lt;br /&gt;
[[Image:Error Case Structure.png]]&lt;br /&gt;
&lt;br /&gt;
!! External Links&lt;br /&gt;
* [http://zone.ni.com/reference/en-XX/help/371361B-01/lvconcepts/case_and_sequence_structures/ Case and Sequence Structures] (LabVIEW 8.2 Help Documentation)&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Case_structure&amp;diff=1967</id>
		<title>Case structure</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Case_structure&amp;diff=1967"/>
		<updated>2007-08-28T23:06:03Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: This is a stub article for &amp;#039;&amp;#039;&amp;#039;Case Structure&amp;#039;&amp;#039;&amp;#039;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a stub article for &#039;&#039;&#039;Case Structure&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming_FAQ&amp;diff=1956</id>
		<title>LabVIEW object-oriented programming FAQ</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming_FAQ&amp;diff=1956"/>
		<updated>2007-08-13T22:36:23Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: /* How can I create by active objects? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a stub page for Frequently Asked Questions (FAQ) about LVOOP.  Please feel free to add to the list of FAQ and answer any of the questions that have been posted.&lt;br /&gt;
&lt;br /&gt;
==Why is class data private?==&lt;br /&gt;
&lt;br /&gt;
==What are the differences between public, protected, and private class members?==&lt;br /&gt;
&lt;br /&gt;
==Why are there no class constructor and destructor?==&lt;br /&gt;
&lt;br /&gt;
==Are objects by value or by reference?==&lt;br /&gt;
&lt;br /&gt;
==What does LVOOP mean?==&lt;br /&gt;
&lt;br /&gt;
==How can I create by reference objects?==&lt;br /&gt;
&lt;br /&gt;
==How can I create active objects?==&lt;br /&gt;
&lt;br /&gt;
==Are there any add on tools for LVOOP?==&lt;br /&gt;
&lt;br /&gt;
==What does the &amp;quot;Dynamic Dispatch&amp;quot; connector pane terminal setting do?==&lt;br /&gt;
&lt;br /&gt;
==Are there any add on tools for LVOOP?==&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming_FAQ&amp;diff=1955</id>
		<title>LabVIEW object-oriented programming FAQ</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming_FAQ&amp;diff=1955"/>
		<updated>2007-08-13T22:29:27Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: This is a stub page for Frequently Asked Questions (FAQ) about LVOOP.  Please feel free to add to the list of FAQ and answer any of the questions that have been posted.  ==Why is class dat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a stub page for Frequently Asked Questions (FAQ) about LVOOP.  Please feel free to add to the list of FAQ and answer any of the questions that have been posted.&lt;br /&gt;
&lt;br /&gt;
==Why is class data private?==&lt;br /&gt;
&lt;br /&gt;
==What are the differences between public, protected, and private class members?==&lt;br /&gt;
&lt;br /&gt;
==Why are there no class constructor and destructor?==&lt;br /&gt;
&lt;br /&gt;
==Are objects by value or by reference?==&lt;br /&gt;
&lt;br /&gt;
==What does LVOOP mean?==&lt;br /&gt;
&lt;br /&gt;
==How can I create by reference objects?==&lt;br /&gt;
&lt;br /&gt;
==How can I create by active objects?==&lt;br /&gt;
&lt;br /&gt;
==Are there any add on tools for LVOOP?==&lt;br /&gt;
&lt;br /&gt;
==What does the &amp;quot;Dynamic Dispatch&amp;quot; connector pane terminal setting do?==&lt;br /&gt;
&lt;br /&gt;
==Are there any add on tools for LVOOP?==&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Graphical_Object-Oriented_Programming&amp;diff=1954</id>
		<title>Graphical Object-Oriented Programming</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Graphical_Object-Oriented_Programming&amp;diff=1954"/>
		<updated>2007-08-13T22:22:40Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added link to new page &amp;quot;LVOOP Frequently Asked Questions&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Portal for GOOP and LabVOOP. &lt;br /&gt;
&lt;br /&gt;
GOOP stands for &amp;quot;Graphical Object-Oriented Programming.&amp;quot;&lt;br /&gt;
LabVOOP stands for &amp;quot;LabVIEW Object-Oriented Programming.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GOOP is a term used to refer to the various GOOP toolkits from Endevo/NI, SciWare and OpenG. These toolkits were written in G.&lt;br /&gt;
&lt;br /&gt;
LabVOOP refers to the native LabVIEW classes that first appeared in LV8.2. &lt;br /&gt;
&lt;br /&gt;
The toolkits were not obsoleted by the native implementation. All of the toolkits use a reference model for passing objects on the block diagram, similar to File refnums or Queue refnums in LabVIEW. The native classes pass by value, similar to clusters and arrays. The two mechanisms are complementary, not exclusionary, and there may be times when both approaches are used in the same LV program. &lt;br /&gt;
&lt;br /&gt;
==Pages Here:==&lt;br /&gt;
*[[GOOP - Graphical Object Oriented Programming]]&lt;br /&gt;
*[[History of GOOP]]&lt;br /&gt;
*[[LVOOP|LabVOOP - LabVIEW Object-Oriented Programming (aka LVOOP)]]&lt;br /&gt;
*[[LVOOP Frequently Asked Questions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GOOP]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Race_condition&amp;diff=1843</id>
		<title>Race condition</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Race_condition&amp;diff=1843"/>
		<updated>2007-06-20T14:56:40Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added &amp;quot;External Links&amp;quot;&amp;gt;&amp;gt;Race Condition (Wikipedia Definition)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A race condition in LabVIEW occurs when two or more sections of code attempt to update a common variable. This often occurs when local or global variables are overused.&lt;br /&gt;
&lt;br /&gt;
== Before ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Race_Condition.png|frame|center|Example Race Condition]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first 16 bytes of the file will be read by the left instance of Read Characters From File.vi. &#039;&#039;&#039;Offset&#039;&#039;&#039; will be set to 16, &#039;&#039;&#039;BUT&#039;&#039;&#039; the loop at the right &#039;&#039;may&#039;&#039; start and read 22 bytes from the default value of &#039;&#039;&#039;Offset&#039;&#039;&#039; rather than the expected 16.&lt;br /&gt;
&lt;br /&gt;
== After ==&lt;br /&gt;
&lt;br /&gt;
[[Image:No_Race_Condition.png||frame|center|Race Condition Eliminated Using Data Flow]]&lt;br /&gt;
&lt;br /&gt;
Data flow will ensure that this VI reads 16 bytes from the beginning of the file, then 22 bytes at a time for 16 iterations.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Local and global variables can break the data flow model. If Read and Write instances of local or global variables exist on a single block diagram, they are often part of a loop structure. Variable instances should be replaced with a shift register and data written directly to the control.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Race_condition Race Condition] (Wikipedia Definition)&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Help:Tracking_changes&amp;diff=1818</id>
		<title>Help:Tracking changes</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Help:Tracking_changes&amp;diff=1818"/>
		<updated>2007-06-16T05:43:07Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added note about RSS feed of recentchanges page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Recentchanges.png|thumb|370px|&#039;&#039;&#039;Recent changes&#039;&#039;&#039; shows the latest changes to articles, file uploads, deletions and page moves]]&lt;br /&gt;
The LabVIEW Wiki offers a collection of special pages and tools to keep track of what is going on in the wiki. So you can watch for example:&lt;br /&gt;
* recent changes to all pages&lt;br /&gt;
* newly created pages&lt;br /&gt;
* the contributions of one specific user &lt;br /&gt;
* the revision history: all changes made to one page&lt;br /&gt;
&lt;br /&gt;
The most interesting special page is &#039;&#039;&#039;[[Special:Recentchanges]]&#039;&#039;&#039;. It displays all edits, file uploads, page moves, deletions and other actions done in the wiki. In the menu on top it offers a collection of links to customize your display: limit the number of changes shown, the number of days or restrict it to edits to a certain namespace. You can also hide edits marked as minor (don&#039;t forget that major changes can be flagged by a user as minor anyway).  Additionally, the recentchanges page has an RSS feed, which allows you to subscribe to these changes using an RSS reader.&lt;br /&gt;
&lt;br /&gt;
One line in recentchanges consists of several links:&lt;br /&gt;
* &#039;&#039;diff&#039;&#039; displays the difference to the previous revision of the page,&lt;br /&gt;
* &#039;&#039;hist&#039;&#039; links to the revision history of the page,&lt;br /&gt;
* the link with the full title of the page brings you to the current version. If the title is in bold, it indicates that it is on your watchlist.&lt;br /&gt;
&lt;br /&gt;
Next is a flag describing the article modification type:&lt;br /&gt;
*&#039;&#039;N&#039;&#039; signalizes a new page,&lt;br /&gt;
*&#039;&#039;m&#039;&#039; a minor edit,&lt;br /&gt;
*&#039;&#039;b&#039;&#039; an edit made by a bot.&lt;br /&gt;
&lt;br /&gt;
Following the timestamp the user is mentioned with a link to his user and talk page and to his contributions. In italic follows a comment if the user has submitted one. &lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[Special:Newpages]]&lt;br /&gt;
* Related changes: [[Special:Recentchangeslinked/Pagename]]&lt;br /&gt;
* User contributions: [[Special:Contributions/User]]&lt;br /&gt;
* History&lt;br /&gt;
* [[Special:Watchlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Help|Tracking changes]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Strict_Type_Definition&amp;diff=1811</id>
		<title>Strict Type Definition</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Strict_Type_Definition&amp;diff=1811"/>
		<updated>2007-06-13T13:56:08Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: fixed spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A strict type definition [STD] is like a [[Type Definition|type definition]] with well-defined appearance. This means that all instances of STD&#039;s share the appearance of that STD, e.g. their properties cannot be changed (except of label, caption and enable-state). This is handy whenever the size, color etc. needs to be fixed. Think of sophisticated screen designs or stacked STDs.&amp;lt;br /&amp;gt;&lt;br /&gt;
STDs are created by saving as this type of control - similar to &#039;simple&#039; type definitions.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Type Definition]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* Creating Type Definitions and Strict Type Definitions[http://zone.ni.com/reference/en-XX/help/371361B-01/lvhowto/creating_type_defs/]&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Time_stamp&amp;diff=1791</id>
		<title>Time stamp</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Time_stamp&amp;diff=1791"/>
		<updated>2007-06-08T02:15:01Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: New page: A time stamp is a data type for storing absolute time with high precision.  It is a time-zone-independent number of seconds that have elapsed since 12:00 a.m., Friday, January 1, 1904,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[time stamp]] is a data type for storing absolute time with high precision.  It is a time-zone-independent number of seconds that have elapsed since 12:00 a.m., Friday, January 1, 1904, Universal Time.  In memory, LabVIEW stores a time stamp as a cluster of four integers, where the first two integers (64 bits) represent the time-zone-independent number of complete seconds that have elapsed since 12:00 a.m., Friday, January 1, 1904, Universal Time. The next two integers (64 bits) represent the fractions of seconds.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361B-01/lvconcepts/how_labview_stores_data_in_memory/ LabVIEW 8.2 Help&amp;gt;&amp;gt;How LabVIEW Stores Data in Memory]&lt;br /&gt;
*[http://zone.ni.com/reference/en-XX/help/371361B-01/lvhowto/numeric_data_types_table/ LabVIEW 8.2 Help&amp;gt;&amp;gt;Numeric Data Types Table]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=Associate_your_own_file_type_with_Windows_Explorer&amp;diff=1760</id>
		<title>Associate your own file type with Windows Explorer</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=Associate_your_own_file_type_with_Windows_Explorer&amp;diff=1760"/>
		<updated>2007-05-24T16:49:54Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added &amp;quot;Note about custom file type handing in LabVIEW 8.2&amp;quot; section at the head of the document&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Note about custom file type handing in LabVIEW 8.2 ==&lt;br /&gt;
In LabVIEW 8.2 an Application event called &amp;quot;OS Open Document&amp;quot; exists, which provides a LabVIEW native way to handle custom file types.  See [http://forums.lavag.org/index.php?showtopic=6456&amp;amp;view=findpost&amp;amp;p=25424 this LAVA posting] for information.&lt;br /&gt;
&lt;br /&gt;
== Guidelines to open your own file type from Windows Explorer ==&lt;br /&gt;
When the user double-clicks on a document, the Registration Database is checked for an entry that associates the file extension with a particular application. If an entry does not specify Dynamic Data Exchange (DDE) command, the application specified in the registry is launched. If the registry specifies to use DDE commands, an attemp is made to establish a DDE communication with that application using the application topic. If an application responds to the DDE connection, a DDE Execute command is sent to the application, as specified in the registry. However, if attempts to establish the DDE conversation fail, the specified application is launched and the DDE connection is tried again.&lt;br /&gt;
&lt;br /&gt;
== File associations and LabVIEW ==&lt;br /&gt;
LabVIEW registers the file extensions *.vi, *.vit, *.ctl, *.ctt and *.llb in order to open these files when the user double-clicks on them. A LabVIEW standalone application registers file extensions *.vi and *.llb when its configuration file (.ini) contains the line RegisterExtensions? = True. However this allows LabVIEW to open its own files and does not provide a mechanism for your application to open its custom files using registered extensions.&lt;br /&gt;
&lt;br /&gt;
For example, your application reads and writes custom data files to which you consistently give the extension &amp;quot;.myx&amp;quot;. One thing you can do is to associate the file extension (no DDE command) to your application. When your application is not running, double-clicking on a .myx file launches your application and you can make a system call to read the command line from which you extract the file name to act upon. Remember that, whatever its extension, LabVIEW first tries to open the command line file to figure out if it is a LabVIEW file that it can open (VI, control or LLB).&lt;br /&gt;
&lt;br /&gt;
Once your application is running, double-clicks on your custom file starts a second instance of your application. This instance detects that there is already an instance running so it sends the command line information to the first instance through a DDE Execute command and terminates. The first instance receives the command line; if there is no VI or LLB paths to open, the command is discarded. Currently, there is no way to recover this command line because you have no access to the application built-in DDE Server. Therefore user double-clicks have no effects when your application is running.&lt;br /&gt;
&lt;br /&gt;
In order to receive DDE Execute commands, you would have to, after having properly registered DDE commands in the registry, implement in your application a DDE Server that responds to the DDE Execute commands sent by the system. Unfortunately, altough LabVIEW DDE Client palette offers a DDE Execute.vi that can be used to send commands to other application to open files, the DDE Execute server function is not supported. Such a function would allow to receive the commands sent from the system on user double-clicks (or other applications DDE clients).&lt;br /&gt;
&lt;br /&gt;
DDE being a legacy from Windows 16 bits OS, it is a fading out inter-application communication mechanism. In the latest version of LabVIEW, DDE VIs are still supported but have disappeared from the default palette. Therefore it is very unlikely that DDE VIs will ever be enhanced to support DDE Execute function. One could write a DLL that fully supports DDE, but given the obsolescence of the mechanism, it would be a waste of time.&lt;br /&gt;
&lt;br /&gt;
There are alternatives that we can use to emulate in part the file opening from the file system. The workaround to DDE is to have another executable intercept the command line each time your files are double-clicked on, transmit it to your application and terminate. I will describe three ways below but first let&#039;s see how you can register custom file extensions.&lt;br /&gt;
&lt;br /&gt;
== Register a File Extension ==&lt;br /&gt;
You register file extensions in Windows Registration Database running the regedit.exe application with a text file that contains the keys and values to register. For example, if you want to open .myx extensions with the application myx.exe (or myx.bat or other executable files) located in c:\myx directory, you create the file myx.reg with the following lines:&lt;br /&gt;
&lt;br /&gt;
[code]&lt;br /&gt;
 REGEDIT&lt;br /&gt;
&lt;br /&gt;
 HKEY_CLASSES_ROOT\.myx = myxfile&lt;br /&gt;
&lt;br /&gt;
 HKEY_CLASSES_ROOT\myxfile = My Custom Data File&lt;br /&gt;
&lt;br /&gt;
 HKEY_CLASSES_ROOT\myxfile\shell\open\command = c:\myx\myx.exe &amp;quot;%1&amp;quot;&lt;br /&gt;
[/code]&lt;br /&gt;
&lt;br /&gt;
You register the file association from your application using System Exec.vi with the input string&lt;br /&gt;
&lt;br /&gt;
[code]&amp;quot;regedit.exe /s c:\myx\myx.reg&amp;quot;[/code]&lt;br /&gt;
&lt;br /&gt;
Alternatively to the use of regedit.exe, LabVIEW 6 is now distributed with VIs to edit the registry. Registry edition VIs for previous versions of LabVIEW are also available at http://www.mhst.de/support.html, more specifically here: [http://www.mhst.de/downloads/winregistry.zip Windows 95/NT Registry VIs].&lt;br /&gt;
&lt;br /&gt;
== Associate the extension to a DOS batch file. ==&lt;br /&gt;
A simple way is to associate your file extension to a DOS batch file that writes the command line argument to a text file. The file myx.bat contains the following lines:&lt;br /&gt;
&lt;br /&gt;
[code]&lt;br /&gt;
 ECHO %1 &amp;gt; c:\myx\myx.txt&lt;br /&gt;
&lt;br /&gt;
 START c:\myx\myx.vi&lt;br /&gt;
[/code]&lt;br /&gt;
&lt;br /&gt;
On file double-click, the batch file executes. The first line of the batch file writes the DOS 8.3 file path/name to the file myx.txt (previous file content is overwritten). The second line starts the VI myx.vi. Provided that your application is currently associated to .vi extension (RegisterExtensions = True in its ini file), your application will load myx.vi. The VI myx.vi (set to run when opened) should read the myx.txt file to extract the name of the file to open. If your application is already running, it can now be notified by myx.vi that a file has been double-clicked in the file system. If your application was not running, only myx.vi will be loaded and run; the application Top Level VIs are not loaded therefore myx.vi should check for your main Top Level VIs and load/run them if necessary to properly launch your application. The batch files terminates immediately after the start command and is ready for the next double-click. It is preferable to set the batch file properties to run minimized and close when finished. The long Windows path of the file can be obtained with the VI &amp;quot;GetLongPathName?.vi&amp;quot; included in the sample code below.&lt;br /&gt;
&lt;br /&gt;
You will agree that sending a file name to your application using a DOS batch file and a text file for data tranfer is not state-of-the-art programming, using techniques older than DDE itself. The following methods use the same principle but allows to send the file name to your application using ActiveX, VI Server or TCP/IP.&lt;br /&gt;
&lt;br /&gt;
== Create your LVShellOpen.exe executable. ==&lt;br /&gt;
Instead of a batch file, one can use a small LabVIEW executable (let&#039;s say LVShellOpen.exe) to be associated with your file extension. Normally, when a LabVIEW executable is launched with a file path on the command line, it attempts to open the file to check if it is a LabVIEW file (VI) it can execute. To prevent this and speed up the process a little, the registry command can be modified to included a command line switch such as&lt;br /&gt;
&lt;br /&gt;
[code]HKEY_CLASSES_ROOT\myxfile\shell\open\command = c:\myx\LVShellOpen.exe - o&amp;quot;%1&amp;quot;[/code]&lt;br /&gt;
&lt;br /&gt;
Since the executable does not recognize a file path or a known switch on the command line, it ignores it. This has also the advantage that if you want to implement other file system commands LVShellOpen can distinguish them if different switches are used. For example, a second command Print could be registered as&lt;br /&gt;
&lt;br /&gt;
[code]HKEY_CLASSES_ROOT\myxfile\shell\print\command = c:\myx\LVShellOpen.exe -p&amp;quot;%1&amp;quot;[/code]&lt;br /&gt;
&lt;br /&gt;
When lauched after a double-click, LVShellOpen launches your application if it is not already running, sends the (Windows Long) file path to open and quits immediatly, ready for the next double-click.&lt;br /&gt;
&lt;br /&gt;
The mode of communication to transmit the file path from LVShellOpen to your application is up to your choice. VI Server or TCP/IP are good options (why not DDE?). When LVShellOpen awakes after a double-click, it attemps to establish a connection with your application (you have enabled the VI Server or run a TCP/IP Listener). If connection succeeds, the file path read from the command line is sent to your application. The connection is closed and LVShellOpen exits. If the connection fails, your application is launched using a System Exec.vi call. LVShellOpen can include the file path on the command line and let the application open the file from its command line or alternatively it can wait for the activation of the VI Server or the TCP/IP Listener to transmit the file path before exiting.&lt;br /&gt;
&lt;br /&gt;
== Visual Basic Script* and LabVIEW ActiveX Server. ==&lt;br /&gt;
LabVIEW and executables created with the Application Builder have a built-in ActiveX VI Server. By default, the ActiveX server is not enable in the application builder settings. On the &amp;quot;App Settings&amp;quot; tab of the Application Builder, check the box &amp;quot;Enable ActiveX server&amp;quot; and give an appropriate name to your application server.&lt;br /&gt;
&lt;br /&gt;
It is possible with a simple Visual Basic Script (vbscript) to call LabVIEW VIs using the ActiveX VI Server. Making the file association to the vbscript, this one can easily call one of your VIs to transmit the file path on double-clicks from the user. Opening a connection to ActiveX VI Server automatically starts your application (running Top Level VIs) if it is not already running. The script then makes a call to a VI (included as dynamic VI) that fills a front panel string of the VI with the file path.&lt;br /&gt;
&lt;br /&gt;
This technique does not require to build a separate application and thus can be used with all LabVIEW releases. By making the whole code reentrant it is possible for the user to select multiple files and to open them simultaneously.&lt;br /&gt;
&lt;br /&gt;
This is the technique I recommend the most.&lt;br /&gt;
&lt;br /&gt;
Download Sample Code for VBScript and ActiveX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&amp;quot;*To run a vbscript, you do not need Visual Basic but the Windows Script Host component which is included in all but the oldest versions of Windows and Internet Explorer.&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
In conclusion it is possible with some workarounds to manage custom file extensions in a LabVIEW application. However, a built-in LabVIEW feature to implement such interaction with Windows is, to my opinion, highly desirable. If you feel the same way, please add weight to my request for this feature on the LabVIEW Wish List and fill out the LabVIEW Feedback Form&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=File_extension&amp;diff=1711</id>
		<title>File extension</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=File_extension&amp;diff=1711"/>
		<updated>2007-05-16T15:02:08Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: added xnode, llb, mnu, and rtm. sorted list alphabetically.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all the file extensions supported by [[LabVIEW]]&lt;br /&gt;
&lt;br /&gt;
*[[ctl]]&lt;br /&gt;
*[[ctt]]&lt;br /&gt;
*[[llb]]&lt;br /&gt;
*[[lvlib]]&lt;br /&gt;
*[[lvproj]]&lt;br /&gt;
*[[mnu]]&lt;br /&gt;
*[[rtm]]&lt;br /&gt;
*[[vi]]&lt;br /&gt;
*[[vit]]&lt;br /&gt;
*[[xctl]]&lt;br /&gt;
*[[xnode]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=State_Machine&amp;diff=1319</id>
		<title>State Machine</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=State_Machine&amp;diff=1319"/>
		<updated>2007-05-09T06:12:22Z</updated>

		<summary type="html">&lt;p&gt;Jim kring: Added Category&amp;gt;&amp;gt;Design Patterns&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The state machine is a convenient LabVIEW construct where a case structure is contained with a while loop. Execution of particular cases in the structure is determined by the output from the previous case (or in the instance of the first execution) by the control selector input. The control of the order of case execution is controlled through the use of a shift register. By wiring the output from one case as the determinate to the subsequent case (wiring to the shift register on the right hand side) and wiring the input to the case selector from the left hand side shift register, operations can be ordered according to which state is executed.&amp;lt;br /&amp;gt;[[Image:Simple_State_Machine.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The state machine has the advantage of allowing several steps to be linked in series so that each individual step can be executed (or debugged) easily. The trap for the inexperienced programmer is the use of the state machine to step in a haphazard fashion through the cases in the loop. This can lead to complicated pathways through the state machine reminiscent of convoluted goto statements in conventional text based languages. However state machines are a valuable tool and can be used very effectively with this in mind.&lt;br /&gt;
&lt;br /&gt;
State machines can be based around integers, strings or enumerated types. The relative merits of each have been discussed in detail elsewhere. In summary an enumerated type state machine has the advantage of being automatically updated when the enum is changed (if the enum is a [[Type Definition]]) but has the disadvantage of requiring careful checking of all the code if new states (enums) are added or redundant states deleted. A string state machine has the advantage of easily added or removed states, but has the disadvantage of spelling mistakes causing programming errors (Note: this can be reduced by including the &amp;quot;Default&amp;quot; state showing the misspelled case in a pop up dialog box, as seen below).&amp;lt;br /&amp;gt;[[Image:String_Based_State_Machine_Default_Case.png]]&lt;br /&gt;
&lt;br /&gt;
== Controlling Order of State Execution ==&lt;br /&gt;
There are three possible ways to order a LabVIEW state machine. The first and easiest method (although NOT recommended) is to use an integer. The integer output from one case is wired as the selector for the subsequent case. The disadvantage of this method is that the numbers themselves are not very helpful in tracking through the code and the case selector becomes somewhat meaningless. Either of the following methods are preferred and there are pros and cons for each of them. Debate (strong at times) arises on the list quite frequently as to the best of these methods, but in practice either will work very nicely.&lt;br /&gt;
&lt;br /&gt;
The second method is to use a string as the case selector. With the correct choice of string states, this has the advantage of labeling each case so that your state machine becomes self documenting. A further advantage of this method is that all cases need not be written in the first instance and it is somewhat easier to include new states should the need arise (especially in earlier versions of LabVIEW (&amp;lt; 6.0)). The disadvantage is that it is easy to misspell a state and have the state machine buggy because of his. An easy way to overcome this disadvantage is to include a default case that pops up a warning including the spelling of the failed case.&lt;br /&gt;
&lt;br /&gt;
The third method is to use an enumerated type as the case selector. In preference this enum should be a [[Type Definition]] so that changes to the states are reflected easily and transparently when new states are added to the enum (via the LabVIEW auto update from [[Type Definition]] setting). Note that there are reports where this method causes problems in version of LabVIEW prior to 6.0, because the enum auto updating did not correctly handle newly inserted cases. This method has the advantage of the string method in code documentation, but requires the use of a default case if not all the cases are required to be written when the code is first created.&lt;br /&gt;
&lt;br /&gt;
== Passing Data Between States ==&lt;br /&gt;
Data is commonly passed between the states of a state machine using a [[Shift Register]], similar to how the state variable is passed between states.  It is a common practice to use a single [[Cluster]] (preferably a [[Type Definition]]) to hold all the data in a single [[Shift Register]], rather than multiple shift registers for multiple data elements.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Queued State Machine]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Design Patterns]]&lt;/div&gt;</summary>
		<author><name>Jim kring</name></author>
	</entry>
</feed>