{"id":295,"date":"2012-02-28T13:56:17","date_gmt":"2012-02-28T19:56:17","guid":{"rendered":"http:\/\/labviewjournal.com\/?p=295"},"modified":"2019-07-30T17:37:18","modified_gmt":"2019-07-30T22:37:18","slug":"maintaining-state-1","status":"publish","type":"post","link":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/","title":{"rendered":"Maintaining State Information in LabVIEW Applications, Part 1"},"content":{"rendered":"<p>I was having a discussion (sometimes called \u201carguing\u201d <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-400\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2013\/05\/wlEmoticon-winkingsmile.png?resize=19%2C19&#038;ssl=1\" alt=\"\" width=\"19\" height=\"19\" \/>\u00a0) with another engineer at NI about how to maintain state in a LabVIEW application.\u00a0 We disagreed on the best way to maintain state in his application.\u00a0 Since at least two LabVIEW experts don\u2019t agree on this topic, I think it will make a good topic for this blog. \u00a0We also talked about how LabVIEW could make some things easier for what he was trying to do.<\/p>\n<p>In this multi-part post, I want to start by explaining what state information is and why you might need it.\u00a0 Then I want to explain different ways you might want to implement it, including a comparison to how other languages support state information.<\/p>\n<p>In computer science, there\u2019s a concept of a purely \u201cfunctional\u201d subroutine, in which the subroutine returns values which are only a function of the inputs to that subroutine.\u00a0 Such a function has no side effects on the state of the rest of the system.<\/p>\n<p>Consider the \u201cadd\u201d function, for example\u2026<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-281 aligncenter\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/simple-add.png?resize=132%2C104&#038;ssl=1\" alt=\"\" width=\"132\" height=\"104\" \/><\/p>\n<p>Given the same input values for x and y, the add will always produce the same result.<\/p>\n<p>A subroutine that has one or more side effects can\u2019t be \u201cfunctional\u201d.\u00a0 Let\u2019s consider the case where we want to keep a running average of acquired data points.\u00a0 (You might do this if you want to smooth the data to remove noise.)<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-diagram.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-283 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-diagram.png?resize=728%2C243&#038;ssl=1\" alt=\"\" width=\"728\" height=\"243\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-diagram.png?w=728&amp;ssl=1 728w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-diagram.png?resize=300%2C100&amp;ssl=1 300w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-chart.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-285 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-chart.png?resize=352%2C293&#038;ssl=1\" alt=\"\" width=\"352\" height=\"293\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-chart.png?w=352&amp;ssl=1 352w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/filter-chart.png?resize=300%2C250&amp;ssl=1 300w\" sizes=\"auto, (max-width: 352px) 100vw, 352px\" \/><\/a><\/p>\n<p>(Ignore my lack of error reporting in this diagram.) Here, we\u2019re acquiring a single sample of data, software-timed at 250 Hz.\u00a0 You can see the data is a bit noisy, so we use the \u201cMean PtByPt.vi\u201d to average the last 100 samples to filter the data.\u00a0 This \u201cMean PtByPt.vi\u201d works by remembering a history of the last 100 values that it received.\u00a0 This is \u201cstate\u201d that the VI is remembering in an uninitialized shift register.<\/p>\n<p>Now suppose we wanted to handle two channels. What would we do?\u00a0 Here\u2019s one approach\u2026<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/06\/twochan-diagram.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-341 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/06\/twochan-diagram.png?resize=737%2C259&#038;ssl=1\" alt=\"\" width=\"737\" height=\"259\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/06\/twochan-diagram.png?w=737&amp;ssl=1 737w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/06\/twochan-diagram.png?resize=300%2C105&amp;ssl=1 300w\" sizes=\"auto, (max-width: 737px) 100vw, 737px\" \/><\/a><\/p>\n<p>We use two instances of \u201cMean PtByPt.vi\u201d\u2014one for each channel.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/twochan-panel.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-289 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/twochan-panel.png?resize=371%2C396&#038;ssl=1\" alt=\"\" width=\"371\" height=\"396\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/twochan-panel.png?w=371&amp;ssl=1 371w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/twochan-panel.png?resize=281%2C300&amp;ssl=1 281w\" sizes=\"auto, (max-width: 371px) 100vw, 371px\" \/><\/a><\/p>\n<p>There\u2019s an important concept that makes this work\u2014the \u201cMean PtByPt.vi\u201d is marked as reentrant, where clones are preallocated.\u00a0 If you\u2019re not familiar with the reentrancy of VIs, please read the LabVIEW help for how to change reentrancy.<\/p>\n<p>By default, new VIs in LabVIEW are not reentrant.\u00a0 If the \u201cMean PtByPt.vi\u201d weren\u2019t reentrant, what do you suppose would happen? It makes a mess of the data; that\u2019s what happens\u2026<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/not-reentrant.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-291 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/not-reentrant.png?resize=372%2C400&#038;ssl=1\" alt=\"\" width=\"372\" height=\"400\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/not-reentrant.png?w=372&amp;ssl=1 372w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/not-reentrant.png?resize=279%2C300&amp;ssl=1 279w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><\/a><\/p>\n<p>Here, the data from the two channels intermingles, so the averaging VI essentially averages the two waveforms together.\u00a0 The red and blue waveforms nearly overlap and aren\u2019t an accurate representation of either waveform.<\/p>\n<p>I sometimes refer to this as the \u201cN-up problem\u201d.\u00a0 I\u2019ve gone from a single channel (1-up) to two channels (2-up). If I\u2019m not aware of how state is used in my subVIs, I will not realize that my application may not work correctly when I add the second channel. When that happens, my first temptation is to make a copy of the VI\u2014\u201cmean1.vi\u201d and \u201cmean2.vi\u201d, so that they\u2019re separate in memory.\u00a0 Please don\u2019t ever do this. You have better options (most of which I\u2019m covering in this blog post), such as reentrancy.<\/p>\n<p>Okay, here\u2019s a little extra credit homework before part 2 of this blog post.\u00a0 Another option for reentrancy in LabVIEW is \u201cshared clones\u201d.\u00a0 Would it be correct to make \u201cMean PtByPt.vi\u201d reentrant using shared clones?\u00a0 Why, or why not?<\/p>\n<p>Hint:\u00a0 Here\u2019s what the data looks like using shared clones\u2026<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/shared-clones.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-293 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/shared-clones.png?resize=377%2C400&#038;ssl=1\" alt=\"\" width=\"377\" height=\"400\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/shared-clones.png?w=377&amp;ssl=1 377w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/02\/shared-clones.png?resize=283%2C300&amp;ssl=1 283w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/a><\/p>\n\n\n<p class=\"wp-block-paragraph\">Find out in <a href=\"http:\/\/labviewjournal.com\/2012\/05\/maintaining-state-information-in-labview-applications-part-2\/\">part 2<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was having a discussion (sometimes called \u201carguing\u201d \u00a0) with another engineer at NI about how to maintain state in a LabVIEW application.\u00a0 We disagreed on the best way to maintain state in his application.\u00a0 Since at least two LabVIEW experts don\u2019t agree on this topic, I think it will make a good topic for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":128,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4],"tags":[34,41,59,65],"class_list":["post-295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","tag-fgv","tag-labview","tag-reentrancy","tag-state"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Maintaining State Information in LabVIEW Applications, Part 1 - LabVIEW Field Journal Archives<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maintaining State Information in LabVIEW Applications, Part 1 - LabVIEW Field Journal Archives\" \/>\n<meta property=\"og:description\" content=\"I was having a discussion (sometimes called \u201carguing\u201d \u00a0) with another engineer at NI about how to maintain state in a LabVIEW application.\u00a0 We disagreed on the best way to maintain state in his application.\u00a0 Since at least two LabVIEW experts don\u2019t agree on this topic, I think it will make a good topic for [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/\" \/>\n<meta property=\"og:site_name\" content=\"LabVIEW Field Journal Archives\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-28T19:56:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-30T22:37:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t<meta property=\"og:image:height\" content=\"100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brian\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/\"},\"author\":{\"name\":\"Brian\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/person\\\/5a7979adfffe497f72353515e7e4698b\"},\"headline\":\"Maintaining State Information in LabVIEW Applications, Part 1\",\"datePublished\":\"2012-02-28T19:56:17+00:00\",\"dateModified\":\"2019-07-30T22:37:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/\"},\"wordCount\":604,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"keywords\":[\"FGV\",\"LabVIEW\",\"reentrancy\",\"state\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/\",\"name\":\"Maintaining State Information in LabVIEW Applications, Part 1 - LabVIEW Field Journal Archives\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"datePublished\":\"2012-02-28T19:56:17+00:00\",\"dateModified\":\"2019-07-30T22:37:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"width\":100,\"height\":100,\"caption\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/02\\\/maintaining-state-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maintaining State Information in LabVIEW Applications, Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#website\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\",\"name\":\"LabVIEW Field Journal Archives\",\"description\":\"Advanced LabVIEW with the NI Field Architects\",\"publisher\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\",\"name\":\"Stravaro, LLC\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/10\\\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/10\\\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Stravaro, LLC\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/person\\\/5a7979adfffe497f72353515e7e4698b\",\"name\":\"Brian\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g\",\"caption\":\"Brian\"},\"sameAs\":[\"https:\\\/\\\/stravaro.com\\\/\"],\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/author\\\/brian\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Maintaining State Information in LabVIEW Applications, Part 1 - LabVIEW Field Journal Archives","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/","og_locale":"en_US","og_type":"article","og_title":"Maintaining State Information in LabVIEW Applications, Part 1 - LabVIEW Field Journal Archives","og_description":"I was having a discussion (sometimes called \u201carguing\u201d \u00a0) with another engineer at NI about how to maintain state in a LabVIEW application.\u00a0 We disagreed on the best way to maintain state in his application.\u00a0 Since at least two LabVIEW experts don\u2019t agree on this topic, I think it will make a good topic for [&hellip;]","og_url":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/","og_site_name":"LabVIEW Field Journal Archives","article_published_time":"2012-02-28T19:56:17+00:00","article_modified_time":"2019-07-30T22:37:18+00:00","og_image":[{"width":100,"height":100,"url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","type":"image\/png"}],"author":"Brian","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Brian","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#article","isPartOf":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/"},"author":{"name":"Brian","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/person\/5a7979adfffe497f72353515e7e4698b"},"headline":"Maintaining State Information in LabVIEW Applications, Part 1","datePublished":"2012-02-28T19:56:17+00:00","dateModified":"2019-07-30T22:37:18+00:00","mainEntityOfPage":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/"},"wordCount":604,"commentCount":4,"publisher":{"@id":"https:\/\/stravaro.com\/lvjournal\/#organization"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","keywords":["FGV","LabVIEW","reentrancy","state"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/","url":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/","name":"Maintaining State Information in LabVIEW Applications, Part 1 - LabVIEW Field Journal Archives","isPartOf":{"@id":"https:\/\/stravaro.com\/lvjournal\/#website"},"primaryImageOfPage":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#primaryimage"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","datePublished":"2012-02-28T19:56:17+00:00","dateModified":"2019-07-30T22:37:18+00:00","breadcrumb":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#primaryimage","url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","contentUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","width":100,"height":100,"caption":""},{"@type":"BreadcrumbList","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/02\/maintaining-state-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/stravaro.com\/lvjournal\/"},{"@type":"ListItem","position":2,"name":"Maintaining State Information in LabVIEW Applications, Part 1"}]},{"@type":"WebSite","@id":"https:\/\/stravaro.com\/lvjournal\/#website","url":"https:\/\/stravaro.com\/lvjournal\/","name":"LabVIEW Field Journal Archives","description":"Advanced LabVIEW with the NI Field Architects","publisher":{"@id":"https:\/\/stravaro.com\/lvjournal\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/stravaro.com\/lvjournal\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/stravaro.com\/lvjournal\/#organization","name":"Stravaro, LLC","url":"https:\/\/stravaro.com\/lvjournal\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2014\/10\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2014\/10\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Stravaro, LLC"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/person\/5a7979adfffe497f72353515e7e4698b","name":"Brian","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g","caption":"Brian"},"sameAs":["https:\/\/stravaro.com\/"],"url":"https:\/\/stravaro.com\/lvjournal\/author\/brian\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/comments?post=295"}],"version-history":[{"count":6,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/295\/revisions"}],"predecessor-version":[{"id":644,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/295\/revisions\/644"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/media\/128"}],"wp:attachment":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/media?parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/categories?post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/tags?post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}