<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Continuous TCP Transfer in LabVIEW</title>
    <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893580#M1104635</link>
    <description>&lt;P&gt;TCP is connection based, so it needs to be initiated from one side, but once the connection is established, data can freely flow both ways. Your current code is deadlocked because the event structure prevents it from receiving data. You need more code!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that writing to a local variable ("run a step") will not fire any event. Events are mostly for user interactions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Of course what you can do is use two different connections, one established from each side.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What is your definition of "occasionally". If this is hours, unused connections might get shut down by a TCP timeout mechanism.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might also look into UDP, which is connectionless.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;However, a much better idea would be the use of "network shared variables". No real code needed. &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We cannot really debug a picture, so if you want help, please attach the actual VI instead. Where are the terminals? Do you really need all these local variables?&lt;/EM&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 14 Feb 2019 20:24:19 GMT</pubDate>
    <dc:creator>altenbach</dc:creator>
    <dc:date>2019-02-14T20:24:19Z</dc:date>
    <item>
      <title>Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893564#M1104629</link>
      <description>&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am trying to make 2 LabView Vi's detect when a change is made in the other.&amp;nbsp; Here is an example.&amp;nbsp; A and B are the names of the two VI's which are both running.&amp;nbsp; If a true/false button is pressed in A, then B will detect it and switch its button as well.&amp;nbsp; As well, if a button is pressed in B, then A will detect it.&amp;nbsp; All of the examples I have seen use a server/client system for the TCP connections which I have applied and works well, but this only seems to be a one way transfer system and the server can never detect what is happening in the client.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have attached the attempt I have made in order to detect them, which I can explain a little more about.&amp;nbsp; First the TCP connection is opened the same way any server/client pairs open.&amp;nbsp; The server computer sends a cluster of 5 elements which updates continuously.&amp;nbsp; When a button is pressed in the server (hence the event structure), it is supposed to change the same button on the client computer.&amp;nbsp; As well after the event, it is supposed to be reading the value of the button press in the client VI.&amp;nbsp; Is there an easier way to do this, or a way that acts as a two way road instead of having 2 individual 1 way tunnels?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 19:48:11 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893564#M1104629</guid>
      <dc:creator>Reisbicks</dc:creator>
      <dc:date>2019-02-14T19:48:11Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893580#M1104635</link>
      <description>&lt;P&gt;TCP is connection based, so it needs to be initiated from one side, but once the connection is established, data can freely flow both ways. Your current code is deadlocked because the event structure prevents it from receiving data. You need more code!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that writing to a local variable ("run a step") will not fire any event. Events are mostly for user interactions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Of course what you can do is use two different connections, one established from each side.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What is your definition of "occasionally". If this is hours, unused connections might get shut down by a TCP timeout mechanism.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might also look into UDP, which is connectionless.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;However, a much better idea would be the use of "network shared variables". No real code needed. &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We cannot really debug a picture, so if you want help, please attach the actual VI instead. Where are the terminals? Do you really need all these local variables?&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 20:24:19 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893580#M1104635</guid>
      <dc:creator>altenbach</dc:creator>
      <dc:date>2019-02-14T20:24:19Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893586#M1104638</link>
      <description>&lt;P&gt;Your problem is that the Event Structures are blocking your reading.&amp;nbsp; What I typically do is use a separate loop that handles the TCP connection.&amp;nbsp; That loop can just attempt to read a byte and continue reading if something comes in or let the timeout happen and try again.&amp;nbsp; But for your simple example, you can just throw your reading into the Timeout case of the Event Structure.&amp;nbsp; Have a timeout of something like 50ms on the Event Structure to make sure you are attempting to read often enough.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 20:29:48 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893586#M1104638</guid>
      <dc:creator>crossrulz</dc:creator>
      <dc:date>2019-02-14T20:29:48Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893589#M1104639</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.ni.com/t5/user/viewprofilepage/user-id/7614"&gt;@altenbach&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&lt;STRONG&gt;However, a much better idea would be the use of "network shared variables". No real code needed. &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In case you didn't know, I DESPISE Network Published Shared Variables (NPSV).&amp;nbsp; Been nothing but headaches for me.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 20:33:50 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893589#M1104639</guid>
      <dc:creator>crossrulz</dc:creator>
      <dc:date>2019-02-14T20:33:50Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893594#M1104642</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.ni.com/t5/user/viewprofilepage/user-id/75897"&gt;@crossrulz&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.ni.com/t5/user/viewprofilepage/user-id/7614"&gt;@altenbach&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&lt;STRONG&gt;However, a much better idea would be the use of "network shared variables". No real code needed. &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In case you didn't know, I DESPISE Network Published Shared Variables (NPSV).&amp;nbsp; Been nothing but headaches for me.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Do you remember Jim Black?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;He was with NI and located in OH.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;He warned me early on that I should avoid shared variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But back to the topic of this thread.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What you need to do is figure out if you can establish a "Master" somewhere in your grand scheme. Treating both A and B as peers will crate the possibility of a race condition if the two fight over what the state of the buttons should be. A race condition can be nasty to chase down but it is even worse if the race condition is across a network.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But first question is "Are A and B different nodes on a network or two VIs running on the same machine or same process context?"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you are indeed running across the network and they two&amp;nbsp;VIs have to be peers then you will need to establish some ground rules&amp;nbsp; so they are not fighting over which one gets to set/reset the button. A Semaphore that is served on one of the machines could be used where before changing the shared value, A OR B must first acquire the semaphore before making the change and then release the semaphore&amp;nbsp;after the change is made. When a change is made you should include a mechanism to let the OTHER VI know that the value has changed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ben&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 20:48:37 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893594#M1104642</guid>
      <dc:creator>Ben</dc:creator>
      <dc:date>2019-02-14T20:48:37Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893596#M1104643</link>
      <description>&lt;P&gt;Now if you could avoid making them peers and set-up a Client Server relationship, the Master could keep the "Master Copy" of the data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In an application developed back in LV 7.1 we needed to control the valves in a factory which routed nasty gas to or from where it was needed. No big deal there BUT... The setting had to be made available to four unique PC each controlling two stations each.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In that case we used a Master PC that had access to all of the I/O and exposed VI Served Action Engines to all of the client PC. When the stations were configured for "remote" mode, the Action Engines that were running on the Master PC but invoked from the clients would dictate what the value of the buttons were. When not in Remote mode the Master PC controlled the buttons and the clients would read the sate of the buttons on the Master PC.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That approach made it dirt simple to expose control to the clients since they were only mirroring the Master PC and submitting requests to the Master PC. The image on the client PC differed only in the which Action Engines each station invoked via VI Server.&amp;nbsp;There was no real logic on the Client side. All fo the logic was handle by the Master PC.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the answer depends on a lot of things so I should stop rambling now.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ben&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 20:58:34 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893596#M1104643</guid>
      <dc:creator>Ben</dc:creator>
      <dc:date>2019-02-14T20:58:34Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893696#M1104658</link>
      <description>&lt;P&gt;How quickly do you want to recipient to react to the message?&amp;nbsp; I've used Network Streams to set up Message Streams between a PC Host and a Real-Time Target.&amp;nbsp; Two channels allowed two-way Messaging (which, I'd estimate, had at most a 100 msec lag time, while two more Streams sent 1000kHz Analog data to the Host (50 samples at a time, i.e. a transfer rate of 20 Hz) and episodic "event" data (such as button presses) when they occurred.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Having two one-way channels means each side only needs one "receiver" and one "sender", a natural Producer/Consumer Design which is pretty (time)-efficient and (because of LabVIEW's parallelism) independent of each other.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bob Schor&lt;/P&gt;</description>
      <pubDate>Fri, 15 Feb 2019 03:39:31 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893696#M1104658</guid>
      <dc:creator>Bob_Schor</dc:creator>
      <dc:date>2019-02-15T03:39:31Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894853#M1105016</link>
      <description>&lt;P&gt;Thank you everyone with the help.&amp;nbsp; I have made some progress on the labVIEW VI and think I have a clearer example of what I would like to accomplish.&amp;nbsp; The server and client VI's attached are supposed to continuously read and write what the other boolean is reading.&amp;nbsp; If one gets turned to true, the other should become false and if one gets turned false the other turns false.&amp;nbsp; This way the only time any of the booleans will change is on the user command.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To run the VI's, make sure the ports both read 2055 and the address is localhost.&amp;nbsp; Run the Server, then the Client and try to press the boolean button.&amp;nbsp; The other boolean button should change regardless of which VI is pressed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When these two VIs are run, they aren't consistently changed to true because they are constantly overriding the mouse click.&amp;nbsp; Does anyone have a way to accomplish this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 19 Feb 2019 18:08:56 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894853#M1105016</guid>
      <dc:creator>Reisbicks</dc:creator>
      <dc:date>2019-02-19T18:08:56Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894861#M1105020</link>
      <description>&lt;P&gt;I haven't tested your code, and can't figure out just by looking at it what you are trying to do, but I think I can help with "over-riding the mouse click".&amp;nbsp; Go to the Boolean on the Front Panel, right-click it, and look at "Mechanical Action" (there are six of them).&amp;nbsp; You might try "Switch when released".&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bob Schor&lt;/P&gt;</description>
      <pubDate>Tue, 19 Feb 2019 18:25:13 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894861#M1105020</guid>
      <dc:creator>Bob_Schor</dc:creator>
      <dc:date>2019-02-19T18:25:13Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894890#M1105028</link>
      <description>&lt;P&gt;The problem is you are constantly updating client and server with the value of the controls (with a race condition mixed in on the client side).&amp;nbsp; You should only send an update when the value has changed.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Feb 2019 20:05:35 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894890#M1105028</guid>
      <dc:creator>Mancho00</dc:creator>
      <dc:date>2019-02-19T20:05:35Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894898#M1105030</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.ni.com/t5/user/viewprofilepage/user-id/343472"&gt;@Mancho00&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;The problem is you are constantly updating client and server with the value of the controls (&lt;STRONG&gt;with a race condition&lt;/STRONG&gt; mixed in on the client side).&amp;nbsp; You should only send an update when the value has changed.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;P&gt;Now if someone had warned about that issue...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Quoting from &lt;A href="https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3893594/highlight/true#M1104642" target="_self"&gt;post #5 in this thread&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"Treating both A and B as peers will crate the possibility of a race condition if the two fight over what the state of the buttons should be."&lt;/P&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ben&lt;/P&gt;</description>
      <pubDate>Tue, 19 Feb 2019 20:46:02 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894898#M1105030</guid>
      <dc:creator>Ben</dc:creator>
      <dc:date>2019-02-19T20:46:02Z</dc:date>
    </item>
    <item>
      <title>TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894974#M1105156</link>
      <description>&lt;P&gt;Hello, I have tried to make a server/client pair using the TCP connection functions in LabVIEW.&amp;nbsp; In the attached VI's, the top loop is my attempt at establishing a dual connection that I know will not work because of the race that is being run sending the boolean signal between the two programs.&amp;nbsp; I have tried event structures, case structures, and a few other ideas to isolate the read and write of the signal that is being passes but have not been successful.&amp;nbsp; As well, I do not understand how the notifiers and semaphores work so I am hoping someone can help me fix this connection issue.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the code below, the top while loop is where I would like someone to help me establish the ideal way to get the communication to work.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the bottom while loop, all it does is if the boolean is true, then the server will begin counting from 1 to 10 and if the boolean is false, the client will count from 1 to 10.&amp;nbsp; The boolean must read the same value at all times (except of course the amount of time for the signal to change the other one).&amp;nbsp; As well, both buttons need to be able to be pressed and the change recognized by the other.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 01:49:50 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894974#M1105156</guid>
      <dc:creator>Reisbicks</dc:creator>
      <dc:date>2019-02-20T01:49:50Z</dc:date>
    </item>
    <item>
      <title>Re: TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894993#M1105157</link>
      <description>&lt;P&gt;You are concentrating on the "how", but have not clearly explained (so that I can understand it, at least) the "what".&amp;nbsp; As in "What are you trying to do?".&amp;nbsp; You obviously have two machines, running two programs.&amp;nbsp; Describe the two programs, say (in "broad strokes")&amp;nbsp;&lt;U&gt;what&lt;/U&gt; they do, and describe their interaction.&amp;nbsp; Is one running on a Real-Time system or otherwise connected to the "outside world" (and collecting data or controlling some equipment)?&amp;nbsp; Is the other program a Controller/Displayer/Analyzer/Storer of Data?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are there important constraints involving the two programs?&amp;nbsp; Describe any timing/frequency/etc. relationships between the two systems.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is often easier to "Design from the Top Down", rather than from the Bottom Up.&amp;nbsp; I notice your code is developed using LabVIEW 2014 -- is that the LabVIEW Version you want to use for this Project?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bob Schor&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 03:28:50 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894993#M1105157</guid>
      <dc:creator>Bob_Schor</dc:creator>
      <dc:date>2019-02-20T03:28:50Z</dc:date>
    </item>
    <item>
      <title>Re: TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894996#M1105158</link>
      <description>&lt;P&gt;Sorry for the lack of the what.&amp;nbsp; As you pointed out, there are two programs on different computers.&amp;nbsp; One of them will be moving around some mechanical pieces and the other one will be collecting data.&amp;nbsp; I have put in the numeric loops for simplicity because the loops that are in my actual programs are extremely large and messy.&amp;nbsp; The most important thing is that when the mechanical VI is running, then collection VI must not be running and when the data collection VI is running, the mechanical VI must not run.&amp;nbsp; This is why I need a way for the Boolean controls to always read the same T/F value regardless of which one is pressed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hopefully this clears things up.&lt;/P&gt;
&lt;P&gt;Thanks!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 03:56:26 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894996#M1105158</guid>
      <dc:creator>Reisbicks</dc:creator>
      <dc:date>2019-02-20T03:56:26Z</dc:date>
    </item>
    <item>
      <title>Re: TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894999#M1105159</link>
      <description>&lt;P&gt;Is one program more in control than the other one?&amp;nbsp; If both say they want to do something at the same time, which one determines who gets to their job when?&amp;nbsp; It sounds like it has to be a master/slave relationship, or better terminology, a "server" and a "client".&amp;nbsp; Which ever one is more important should be the server.&amp;nbsp; When the client wants to do its job, it needs to request permission from the server.&amp;nbsp; Then the server side can stop what its doing when its ready, and send permission back to the client.&amp;nbsp; When the client gets permission, it does what it needs to and is required to tell the server when its done.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Don't think of it as a race between the two.&amp;nbsp; Let the more significant process be in charge and let it be the server.&amp;nbsp; Don't think of it as a "dual" connection.&amp;nbsp; I'm not even sure what that phrase means.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 04:10:34 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3894999#M1105159</guid>
      <dc:creator>RavensFan</dc:creator>
      <dc:date>2019-02-20T04:10:34Z</dc:date>
    </item>
    <item>
      <title>Re: TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895002#M1105160</link>
      <description>&lt;P&gt;I think this solution sounds like it would work for my setup, but I do not know how to "request permission from the server".&amp;nbsp; I am only aware of how to read/write using the TCP connection which seems like it is enforced rather than requested.&amp;nbsp; Is there a built in function somewhere which would do this in LabVIEW or is it some combination of the TCP options?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 04:21:50 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895002#M1105160</guid>
      <dc:creator>Reisbicks</dc:creator>
      <dc:date>2019-02-20T04:21:50Z</dc:date>
    </item>
    <item>
      <title>Re: TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895028#M1105161</link>
      <description>&lt;P&gt;You determine what that means!&amp;nbsp; All TCP/IP communication is based on strings.&amp;nbsp; So client opens a connection and literally writes "I want to do X".&amp;nbsp; When server is ready, it writes back "OK, Go ahead and do X".&amp;nbsp; When client is done, it writes to server "I am done with X".&amp;nbsp; Server responds "Thanks, I hear you".&amp;nbsp; At each step of the conversation, both sides will know whatever state they are in and can then go about doing their business or not doing their business every step whatever that business may be.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Make the text whatever you want it to actually say.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 05:53:29 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895028#M1105161</guid>
      <dc:creator>RavensFan</dc:creator>
      <dc:date>2019-02-20T05:53:29Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895265#M1105146</link>
      <description>&lt;P&gt;I understand that the race condition is occuring, but I do not know how to have both the client and server send and wait for the signal only at the time when it should be sent.&amp;nbsp; I have tried using event structures, but nothing triggers the event structure on the receiving side.&amp;nbsp; Can you point me to an example of how to do this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 15:51:23 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895265#M1105146</guid>
      <dc:creator>Reisbicks</dc:creator>
      <dc:date>2019-02-20T15:51:23Z</dc:date>
    </item>
    <item>
      <title>Re: Continuous TCP Transfer</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895272#M1105148</link>
      <description>&lt;P&gt;Create a User Event and use the ref of that User event to a dynamic event registration terminal for your event structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When the "Boolean change" messages is received via TCP, use the User Event ref to fire an event.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Event structure can react to the event and act as required.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ben&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 15:58:54 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895272#M1105148</guid>
      <dc:creator>Ben</dc:creator>
      <dc:date>2019-02-20T15:58:54Z</dc:date>
    </item>
    <item>
      <title>Re: TCP Dual Connection</title>
      <link>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895303#M1105162</link>
      <description>&lt;P&gt;Wait a minute, you've gone and created a whole new thread here when you were already discussing your issue in another thread.&amp;nbsp; This makes me feel like I wasted my time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm going to merge this thread into the original.&amp;nbsp; It seems like some of what I have said was already stated to you in the original thread.&amp;nbsp; I don't know why you didn't pay attention to that advice and decided to create a whole new thread!&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 16:43:51 GMT</pubDate>
      <guid>https://forums.ni.com/t5/LabVIEW/Continuous-TCP-Transfer/m-p/3895303#M1105162</guid>
      <dc:creator>RavensFan</dc:creator>
      <dc:date>2019-02-20T16:43:51Z</dc:date>
    </item>
  </channel>
</rss>

