<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to ExampleSetup</title><link>https://sourceforge.net/p/labrad/wiki/ExampleSetup/</link><description>Recent changes to ExampleSetup</description><atom:link href="https://sourceforge.net/p/labrad/wiki/ExampleSetup/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 12 Oct 2018 05:49:52 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/labrad/wiki/ExampleSetup/feed" rel="self" type="application/rss+xml"/><item><title>ExampleSetup modified by Markus Ansmann</title><link>https://sourceforge.net/p/labrad/wiki/ExampleSetup/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -86,7 +86,7 @@

 **Performance**

-Since the *ExptScrpt Client* does not need to worry about displaying or storing the data, it's performance will not be impacted by potentially complex plotting functions or slow data storage access. Since the "Store Data" Requests can be sent to the *DataStrg Server* in a fire-and-forget manner, the overall system's data taking speed will not be impacted by the rate at which the data can be stored or displayed by the (potentially numerous) *Graphing Client*.
+Since the *ExptScrpt Client* does not need to worry about displaying or storing the data, its performance will not be impacted by potentially complex plotting functions or slow data storage access. Since the "Store Data" Requests can be sent to the *DataStrg Server* in a fire-and-forget manner, the overall system's data taking speed will not be impacted by the rate at which the data can be stored or displayed by the (potentially numerous) *Graphing Client*.

 Since Modules can have multiple LabRAD Requests "in flight" at the same time, execution can be parallelized and even pipelined to a large degree in a very straight forward manner. Many of the common headaches associated with these practices like race conditions, etc., are handled gracefully behind the scenes, since Requests are always executed atomically and serialized correctly within a Context.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Ansmann</dc:creator><pubDate>Fri, 12 Oct 2018 05:49:52 -0000</pubDate><guid>https://sourceforge.net6948f736ded41c60915e06d78da5b917e9f8bccf</guid></item><item><title>ExampleSetup modified by Markus Ansmann</title><link>https://sourceforge.net/p/labrad/wiki/ExampleSetup/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -14,53 +14,88 @@
 || **Name** || **Module Type** || **Provides** ||
 ||----------||-----------------||--------------||
 || EXPT || N/A || Readings from and control mechanisms for the experiment ||
-|| RS232 Server || //Base Server// || Byte-level read and write access to COM ports ||
-|| GPIB Server || //Base Server// || Byte-level read and write access to a GPIB bus ||
-|| DataStrg Server || //Base Server// || Storage and retrieval of experimental datasets ||
-|| FnGen Server || //Abstraction Server// || Access to features of a function generator ||
-|| DAQ Server || //Abstraction Server// || Access to features of the data acquisition hardware ||
-|| Graphing Client || //Client// || Graphs of new data incoming to the DataStrg Server ||
-|| ExptScrpt Client || //Client// || Scripts to run the experiment ||
+|| RS232 Server || *Base Server* || Byte-level read and write access to COM ports ||
+|| GPIB Server || *Base Server* || Byte-level read and write access to a GPIB bus ||
+|| DataStrg Server || *Base Server* || Storage and retrieval of experimental datasets ||
+|| FnGen Server || *Abstraction Server* || Access to features of a function generator ||
+|| DAQ Server || *Abstraction Server* || Access to features of the data acquisition hardware ||
+|| Graphing Client || *Client* || Graphs of new data incoming to the DataStrg Server ||
+|| ExptScrpt Client || *Client* || Scripts to run the experiment ||

 Details
 -------
-===RS232 Server===
+
+**RS232 Server**
+
 Discovers the list of available COM ports on the computer it is running on and provides methods to open a port, choose the baud-rate and data format, send bytes, and read bytes. It does not know anything about the type of hardware connected.
-//This Module is written in Python, which makes access to COM ports easy through the pySerial package. Since COM ports are very low bandwidth interfaces, Python's execution performance is not a limiting factor for this task.//
-===GPIB Server===
+
+*This Module is written in Python, which makes access to COM ports easy through the pySerial package. Since COM ports are very low bandwidth interfaces, Python's execution performance is not a limiting factor for this task.*
+
+**GPIB Server**
+
 Gives access to a GPIB controller card, allowing the selection of a target address and the sending and receiving of raw data. Might do some basic device discovery by sending '*IDN?' commands to all addresses, but is otherwise unaware of the actual hardware connected and how it operates.
-//This Module is written in LabVIEW, since GPIB access is very convenient in this language using the VISA libraries.//
-===DataStrg Server===
+
+*This Module is written in LabVIEW, since GPIB access is very convenient in this language using the VISA libraries.*
+
+**DataStrg Server**
+
 Manages data storage by providing functions to create new datasets, list datasets, add and retrieve data points, store experimental parameters as meta-data, etc.
-//This Module is written in Python, where dynamic typing makes it straight forward to handle the different meta-data formats.//
-===FnGen Server===
-Maintains a list of all function generators hooked up to the LabRAD system through possibly multiple GPIB Servers running on many different computers. It creates a central location for access to the higher level functionality of these devices by name, i.e. "Output a 5kHz 0.5Vpp square wave on 'Input A'". These requests are turned into the required command strings and passed on to the correct //GPIB Servers//.
-//This Module is written in Python, because of its string assembly and parsing abilities.//
-===DAQ Server===
-Allows other LabRAD Modules to ask for the different readings provided by the experiment. It retrieves these by sending the correct command strings to the //RS232 Server// to tell the custom DAQ board to record voltages. It then parses the returned strings to extract the readings.
-//This Module is written in Python, because of its string assembly and parsing abilities.//
-===Graphing Client===
-Monitors the //DataStrg Server// for new datasets being created or existing ones being updated. It automatically shows plots of incoming data as it arrives in the DataStrg Server. It might provide the user with an interface to perform some quick on-the-fly data analysis, like fitting parabolas to extract maxima, or exponentials to gauge decay times. The //Graphing Client// can also be used to browse all existing datasets ever stored using the //DataStrg Server//.
-Since multiple copies of the //Graphing Client// can be run simultaneously on any computer connected to the Internet, collaborators can be watching the incoming data live and suggest changes to the runs in a teleconference.
-//This Module is written in Delphi for performance reasons and because Delphi programs compile into a stand-alone executable that can be shared easily with collaborators without requiring them to purchase or install other software. Alternatively, for small datasets, LabVIEW could be a natural choice for its plotting capabilities (for larger datasets, LabVIEW's plotting functions become extremely sluggish).//
-===ExptScrpt Client===
-Can either be a single script or a collection of scripts that send commands to the //FnGen Server// to set up the experimental parameters and request readings from the //DAQ Server//. The so collected data is then passed to the //DataStrg Server//.
-//This Module is written in Python, because of the simplicity and speed with which Python scripts can be developed.//
+
+*This Module is written in Python, where dynamic typing makes it straight forward to handle the different meta-data formats.*
+
+**FnGen Server**
+
+Maintains a list of all function generators hooked up to the LabRAD system through possibly multiple GPIB Servers running on many different computers. It creates a central location for access to the higher level functionality of these devices by name, i.e. "Output a 5kHz 0.5Vpp square wave on 'Input A'". These requests are turned into the required command strings and passed on to the correct *GPIB Servers*.
+
+*This Module is written in Python, because of its string assembly and parsing abilities.*
+
+**DAQ Server**
+
+Allows other LabRAD Modules to ask for the different readings provided by the experiment. It retrieves these by sending the correct command strings to the *RS232 Server* to tell the custom DAQ board to record voltages. It then parses the returned strings to extract the readings.
+
+*This Module is written in Python, because of its string assembly and parsing abilities.*
+
+**Graphing Client**
+
+Monitors the *DataStrg Server* for new datasets being created or existing ones being updated. It automatically shows plots of incoming data as it arrives in the DataStrg Server. It might provide the user with an interface to perform some quick on-the-fly data analysis, like fitting parabolas to extract maxima, or exponentials to gauge decay times. The *Graphing Client* can also be used to browse all existing datasets ever stored using the *DataStrg Server*.
+
+Since multiple copies of the *Graphing Client* can be run simultaneously on any computer connected to the Internet, collaborators can be watching the incoming data live and suggest changes to the runs in a teleconference.
+
+*This Module is written in Delphi for performance reasons and because Delphi programs compile into a stand-alone executable that can be shared easily with collaborators without requiring them to purchase or install other software. Alternatively, for small datasets, LabVIEW could be a natural choice for its plotting capabilities (for larger datasets, LabVIEW's plotting functions become extremely sluggish).*
+
+**ExptScrpt Client**
+
+Can either be a single script or a collection of scripts that send commands to the *FnGen Server* to set up the experimental parameters and request readings from the *DAQ Server*. The so collected data is then passed to the *DataStrg Server*.
+
+*This Module is written in Python, because of the simplicity and speed with which Python scripts can be developed.*

 Benefits
 --------
-===High Turn-Around===
-The //ExptScrpt Clients// do not need to worry about how the //FnGen Server// and the //DAQ Server// perform the requested actions or what happens to the data after it is passed on to the //DataStrg Server//. This makes the development of these clients extremely fast and clean allowing for a very high turn-around of new experiments.
-===Reduced Duplication of Effort===
+
+**High Turn-Around**
+
+The *ExptScrpt Clients* do not need to worry about how the *FnGen Server* and the *DAQ Server* perform the requested actions or what happens to the data after it is passed on to the *DataStrg Server*. This makes the development of these clients extremely fast and clean allowing for a very high turn-around of new experiments.
+
+**Reduced Duplication of Effort**
+
 Common functionality, like storing or plotting data, can be easily packaged into a separate LabRAD Module. This reduces the code necessary to implement these features separately in all locations where it is used.
-===Flexibility===
-Should the hardware layout of the experiment change, a new DAQ card, for example, can be swapped in and supported by the //DAQ Server// without a change in the interface that this Server provides to the System. Thus, all other parts of the system will remain functional (without even a recompile).
-===Performance===
-Since the //ExptScrpt Client// does not need to worry about displaying or storing the data, it's performance will not be impacted by potentially complex plotting functions or slow data storage access. Since the "Store Data" Requests can be sent to the //DataStrg Server// in a fire-and-forget manner, the overall system's data taking speed will not be impacted by the rate at which the data can be stored or displayed by the (potentially numerous) //Graphing Client//.
+
+**Flexibility**
+
+Should the hardware layout of the experiment change, a new DAQ card, for example, can be swapped in and supported by the *DAQ Server* without a change in the interface that this Server provides to the System. Thus, all other parts of the system will remain functional (without even a recompile).
+
+**Performance**
+
+Since the *ExptScrpt Client* does not need to worry about displaying or storing the data, it's performance will not be impacted by potentially complex plotting functions or slow data storage access. Since the "Store Data" Requests can be sent to the *DataStrg Server* in a fire-and-forget manner, the overall system's data taking speed will not be impacted by the rate at which the data can be stored or displayed by the (potentially numerous) *Graphing Client*.
+
 Since Modules can have multiple LabRAD Requests "in flight" at the same time, execution can be parallelized and even pipelined to a large degree in a very straight forward manner. Many of the common headaches associated with these practices like race conditions, etc., are handled gracefully behind the scenes, since Requests are always executed atomically and serialized correctly within a Context.
-===Maintainability===
+
+**Maintainability**
+
 Different programmers can service the different modules of the system independently. This reduces the burden on everyone to understand the entire system down to the last detail.

-==Next: [[QuickStart|Quick Start]] (for now)==
+**Next: [Quick Start](QuickStart) (for now)**
+
+ 

 ~ Markus Ansmann, Dec 12th, 2007
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Ansmann</dc:creator><pubDate>Fri, 30 Jan 2015 23:40:25 -0000</pubDate><guid>https://sourceforge.net2b3ec99b83b1182589833869fdbb6d9550a79aa8</guid></item><item><title>ExampleSetup modified by Markus Ansmann</title><link>https://sourceforge.net/p/labrad/wiki/ExampleSetup/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -3,11 +3,11 @@

 Connection Diagram
 ------------------
-&lt;center&gt;[[img src=ExampleSetupNetwork.png alt=screenshot]]&lt;/center&gt;
+&lt;center&gt;[[img src=ExampleSetupNetwork.jpg alt=screenshot]]&lt;/center&gt;

 Logical Diagram
 ---------------
-&lt;center&gt;[[img src=ExampleSetupLogical.png alt=screenshot]]&lt;/center&gt;
+&lt;center&gt;[[img src=ExampleSetupLogical.jpg alt=screenshot]]&lt;/center&gt;

 Overview
 --------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Ansmann</dc:creator><pubDate>Fri, 30 Jan 2015 23:37:53 -0000</pubDate><guid>https://sourceforge.net30cf08ea4cde3489f3fdea3c2cc2849b8ab6a833</guid></item><item><title>ExampleSetup modified by Markus Ansmann</title><link>https://sourceforge.net/p/labrad/wiki/ExampleSetup/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -3,11 +3,11 @@

 Connection Diagram
 ------------------
-&amp;gt; [[image:ExampleSetupNetwork.jpg]]
+&lt;center&gt;[[img src=ExampleSetupNetwork.png alt=screenshot]]&lt;/center&gt;

 Logical Diagram
 ---------------
-&amp;gt; [[image:ExampleSetupLogical.jpg]]
+&lt;center&gt;[[img src=ExampleSetupLogical.png alt=screenshot]]&lt;/center&gt;

 Overview
 --------
@@ -47,7 +47,8 @@
 Can either be a single script or a collection of scripts that send commands to the //FnGen Server// to set up the experimental parameters and request readings from the //DAQ Server//. The so collected data is then passed to the //DataStrg Server//.
 //This Module is written in Python, because of the simplicity and speed with which Python scripts can be developed.//

-==Benefits==
+Benefits
+--------
 ===High Turn-Around===
 The //ExptScrpt Clients// do not need to worry about how the //FnGen Server// and the //DAQ Server// perform the requested actions or what happens to the data after it is passed on to the //DataStrg Server//. This makes the development of these clients extremely fast and clean allowing for a very high turn-around of new experiments.
 ===Reduced Duplication of Effort===
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Ansmann</dc:creator><pubDate>Fri, 30 Jan 2015 23:37:20 -0000</pubDate><guid>https://sourceforge.netc119159716be5fbb4903a496a1fb96237a3f8655</guid></item><item><title>ExampleSetup modified by Markus Ansmann</title><link>https://sourceforge.net/p/labrad/wiki/ExampleSetup/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="labrad-example-setup"&gt;LabRAD Example Setup&lt;/h1&gt;
&lt;h2 id="connection-diagram"&gt;Connection Diagram&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[[image:ExampleSetupNetwork.jpg]]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="logical-diagram"&gt;Logical Diagram&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[[image:ExampleSetupLogical.jpg]]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Module Type&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Provides&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;EXPT&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Readings from and control mechanisms for the experiment&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RS232 Server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Base Server//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Byte-level read and write access to COM ports&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;GPIB Server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Base Server//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Byte-level read and write access to a GPIB bus&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;DataStrg Server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Base Server//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Storage and retrieval of experimental datasets&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;FnGen Server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Abstraction Server//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Access to features of a function generator&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;DAQ Server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Abstraction Server//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Access to features of the data acquisition hardware&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Graphing Client&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Client//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Graphs of new data incoming to the DataStrg Server&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;ExptScrpt Client&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;//Client//&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Scripts to run the experiment&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="details"&gt;Details&lt;/h2&gt;
&lt;p&gt;===RS232 Server===&lt;br /&gt;
Discovers the list of available COM ports on the computer it is running on and provides methods to open a port, choose the baud-rate and data format, send bytes, and read bytes. It does not know anything about the type of hardware connected.&lt;br /&gt;
//This Module is written in Python, which makes access to COM ports easy through the pySerial package. Since COM ports are very low bandwidth interfaces, Python's execution performance is not a limiting factor for this task.//&lt;br /&gt;
===GPIB Server===&lt;br /&gt;
Gives access to a GPIB controller card, allowing the selection of a target address and the sending and receiving of raw data. Might do some basic device discovery by sending '*IDN?' commands to all addresses, but is otherwise unaware of the actual hardware connected and how it operates.&lt;br /&gt;
//This Module is written in LabVIEW, since GPIB access is very convenient in this language using the VISA libraries.//&lt;br /&gt;
===DataStrg Server===&lt;br /&gt;
Manages data storage by providing functions to create new datasets, list datasets, add and retrieve data points, store experimental parameters as meta-data, etc.&lt;br /&gt;
//This Module is written in Python, where dynamic typing makes it straight forward to handle the different meta-data formats.//&lt;br /&gt;
===FnGen Server===&lt;br /&gt;
Maintains a list of all function generators hooked up to the LabRAD system through possibly multiple GPIB Servers running on many different computers. It creates a central location for access to the higher level functionality of these devices by name, i.e. "Output a 5kHz 0.5Vpp square wave on 'Input A'". These requests are turned into the required command strings and passed on to the correct //GPIB Servers//.&lt;br /&gt;
//This Module is written in Python, because of its string assembly and parsing abilities.//&lt;br /&gt;
===DAQ Server===&lt;br /&gt;
Allows other LabRAD Modules to ask for the different readings provided by the experiment. It retrieves these by sending the correct command strings to the //RS232 Server// to tell the custom DAQ board to record voltages. It then parses the returned strings to extract the readings.&lt;br /&gt;
//This Module is written in Python, because of its string assembly and parsing abilities.//&lt;br /&gt;
===Graphing Client===&lt;br /&gt;
Monitors the //DataStrg Server// for new datasets being created or existing ones being updated. It automatically shows plots of incoming data as it arrives in the DataStrg Server. It might provide the user with an interface to perform some quick on-the-fly data analysis, like fitting parabolas to extract maxima, or exponentials to gauge decay times. The //Graphing Client// can also be used to browse all existing datasets ever stored using the //DataStrg Server//.&lt;br /&gt;
Since multiple copies of the //Graphing Client// can be run simultaneously on any computer connected to the Internet, collaborators can be watching the incoming data live and suggest changes to the runs in a teleconference.&lt;br /&gt;
//This Module is written in Delphi for performance reasons and because Delphi programs compile into a stand-alone executable that can be shared easily with collaborators without requiring them to purchase or install other software. Alternatively, for small datasets, LabVIEW could be a natural choice for its plotting capabilities (for larger datasets, LabVIEW's plotting functions become extremely sluggish).//&lt;br /&gt;
===ExptScrpt Client===&lt;br /&gt;
Can either be a single script or a collection of scripts that send commands to the //FnGen Server// to set up the experimental parameters and request readings from the //DAQ Server//. The so collected data is then passed to the //DataStrg Server//.&lt;br /&gt;
//This Module is written in Python, because of the simplicity and speed with which Python scripts can be developed.//&lt;/p&gt;
&lt;p&gt;==Benefits==&lt;br /&gt;
===High Turn-Around===&lt;br /&gt;
The //ExptScrpt Clients// do not need to worry about how the //FnGen Server// and the //DAQ Server// perform the requested actions or what happens to the data after it is passed on to the //DataStrg Server//. This makes the development of these clients extremely fast and clean allowing for a very high turn-around of new experiments.&lt;br /&gt;
===Reduced Duplication of Effort===&lt;br /&gt;
Common functionality, like storing or plotting data, can be easily packaged into a separate LabRAD Module. This reduces the code necessary to implement these features separately in all locations where it is used.&lt;br /&gt;
===Flexibility===&lt;br /&gt;
Should the hardware layout of the experiment change, a new DAQ card, for example, can be swapped in and supported by the //DAQ Server// without a change in the interface that this Server provides to the System. Thus, all other parts of the system will remain functional (without even a recompile).&lt;br /&gt;
===Performance===&lt;br /&gt;
Since the //ExptScrpt Client// does not need to worry about displaying or storing the data, it's performance will not be impacted by potentially complex plotting functions or slow data storage access. Since the "Store Data" Requests can be sent to the //DataStrg Server// in a fire-and-forget manner, the overall system's data taking speed will not be impacted by the rate at which the data can be stored or displayed by the (potentially numerous) //Graphing Client//.&lt;br /&gt;
Since Modules can have multiple LabRAD Requests "in flight" at the same time, execution can be parallelized and even pipelined to a large degree in a very straight forward manner. Many of the common headaches associated with these practices like race conditions, etc., are handled gracefully behind the scenes, since Requests are always executed atomically and serialized correctly within a Context.&lt;br /&gt;
===Maintainability===&lt;br /&gt;
Different programmers can service the different modules of the system independently. This reduces the burden on everyone to understand the entire system down to the last detail.&lt;/p&gt;
&lt;p&gt;==Next: [[QuickStart|Quick Start]] (for now)==&lt;/p&gt;
&lt;p&gt;~ Markus Ansmann, Dec 12th, 2007&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Ansmann</dc:creator><pubDate>Fri, 30 Jan 2015 23:36:10 -0000</pubDate><guid>https://sourceforge.net8a6b42ce016e64a23b3e7201f096d0960702caac</guid></item></channel></rss>