<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Focal.Communications.Modbus</name>
    </assembly>
    <members>
        <member name="T:Focal.Communications.Modbus.ITag">
            <summary>
            
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusController">
            <summary>
            Controls modbus register data refreshes.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.#ctor">
            <summary>
            Constructs a new ModbusController using default TCP connection parameters:
            IP = 192.168.0.100, Port = 502, Timeout = 1000ms, RefreshInterval = 200ms.
            </summary>
            <example>
            <code>
            var _modbusController = new ModbusController();
            </code>
            </example>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.#ctor(System.Net.IPAddress,System.Int32)">
            <summary>
            Constructs a new ModbusController using the specified TCP connection parameters,
            and default values for the following: (Port = 502, Timeout = 1000ms, 
            RefreshInterval = 200ms).
            </summary>
            <example>        
            <code>
            var _modbusController = new ModbusController(IPAddress.Parse("192.168.0.100"), 1000);
            </code>
            </example>
            <param name="ip">The IP address of the Model906 card.</param>
            <param name="timeout">The connection timeout (milliseconds).</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.#ctor(System.Net.IPAddress,System.Int32,System.Int32)">
            <summary>
            Constructs a new ModbusController using the specified TCP connection parameters,
            port, and timeout, and the default data refresh interval of 200ms.
            </summary>
            <example>        
            <code>
            var _modbusController = new ModbusController(IPAddress.Parse("192.168.0.100"), 502, 1000);
            </code>
            </example>
            <param name="ip">The IP address of the diagnostics card.</param>
            <param name="port">The TCP port number used for the modbus connection.</param>
            <param name="timeout">The connection timeout (milliseconds).</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.#ctor(System.Net.IPAddress,System.Int32,System.Int32,System.Int32)">
            <summary>
            Constructs a new ModbusController using the specified TCP connection parameters. 
            </summary>
            <example>        
            <code>
            var _modbusController = new ModbusController(IPAddress.Parse("192.168.0.100"), 502, 1000, 200);
            </code>
            </example>
            <param name="ip">The IP address of the diagnostics card.</param>
            <param name="port">The TCP port number used for the modbus connection.</param>
            <param name="timeout">The connection timeout (milliseconds).</param>
            <param name="refreshInterval">The interval at which the modbus tag data will be refreshed (milliseconds).</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.#ctor(System.Net.IPAddress,System.Int32,System.Int32,System.Int32,System.Collections.Generic.IEnumerable{Focal.Communications.Modbus.TagGroup})">
            <summary>
            Constructs a new ModbusController using the specified TCP connection parameters. 
            </summary>
            <example>        
            <code>
            var _modbusController = new ModbusController(IPAddress.Parse("192.168.0.100"), 502, 1000, 200);
            </code>
            </example>
            <param name="ip">The IP address of the diagnostics card.</param>
            <param name="port">The TCP port number used for the modbus connection.</param>
            <param name="timeout">The connection timeout (milliseconds).</param>
            <param name="refreshInterval">The interval at which the modbus tag data will be refreshed (milliseconds).</param> 
            <param name="tagGroups">A list of TagGroups that will be managed by this controller.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.RefreshData">
            <summary>
            Refreshes data from the Model 906 device. (ie. Modbus Holding Registers).
            </summary>
            <remarks>
            This method is typically executed as a separate thread.
            </remarks>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.RefreshRegisters(Focal.Communications.Modbus.TagGroup,Focal.Communications.Modbus.MBRegType)">
            <summary>
            Refreshes data for all tags of the specified ModbusRegisterType
            in the specified TagGroup.
            </summary>
            <remarks>
            We group tags of the specified type into sets of tags with
            consecutive register addresses to minimize the number of required
            transactions by executing block reads.
            </remarks>
            <param name="tagGroup">The tagroup in which to update the tag values.</param>
            <param name="regType">The type of tag values to update.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.GetModbusReadFunc(Focal.Communications.Modbus.MBRegType)">
            <summary>
            Gets a delegate to the appropriate register read method in the 
            ModbusTcpClient based on the supplied ModbusRegisterType.
            </summary>
            <param name="regType">The type of Modbus register to read.</param>
            <returns>A delegate to the appropriate register read method in ModbusTcpClient.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.GetAddressOffset(Focal.Communications.Modbus.MBRegType)">
            <summary>
            Gets the modbus register offset for the specified type of register.
            </summary>
            <param name="regType">The type of Modbus register for which to 
            obtain the offset.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.MapDataToRegisters(System.Collections.Generic.IEnumerable{Focal.Communications.Modbus.ITag},System.Byte[])">
            <summary>
            Sets the ushort tag value for each tag in the supplied list of tags 
            using data from the supplied byte array.
            </summary>
            <param name="tags">The t</param>
            <param name="data"></param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.StartDataRefresh">
            <summary>
            Starts auto data refresh.
            </summary>
            <returns>True if the data refresh thread was succesfully started,
            False otherwise, or if data refresh is already enabled.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.StopDataRefresh">
            <summary>
            Stops auto data refresh.
            </summary>
            <returns>True if the data refresh thread was successfully stopped,
            False otherwise, or if data refresh wasn't already enabled.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.WriteHoldingRegister(Focal.Communications.Modbus.ModbusTag,System.Int16)">
            <summary>
            Writes a the specified value to the holding register at the 
            specified address. 
            </summary>
            <param name="tag">The modbus tag to write.</param>
            <param name="value">The value to write to the register.</param>
            <returns>True if the write succeeded, False otherwise.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.BlockWriteHoldingRegister(Focal.Communications.Modbus.ModbusTag,System.Int16,System.Byte[])">
            <summary>
            Writes a the specified value to the holding registers at the 
            specified address. 
            </summary>
            <param name="tag">The modbus tag to write.</param>
            <param name="value">The value to write to the register.</param>
            <returns>True if the write succeeded, False otherwise.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.BlockReadHoldingRegister(Focal.Communications.Modbus.ModbusTag,System.Int16,System.Byte[])">
            <summary>
            Reads a the specified value to the holding registers at the 
            specified address. 
            </summary>
            <param name="tag">The modbus tag to write.</param>
            <param name="value">The value to write to the register.</param>
            <returns>True if the write succeeded, False otherwise.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.OnDataRefreshStarted">
            <summary>
            Raised when auto data refresh is started.
            See <see cref="E:Focal.Communications.Modbus.ModbusController.DataRefreshEnabled"/> for more details.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.OnDataRefreshStopped">
            <summary>
            Raised after auto data refresh has been stopped.
            See <see cref="E:Focal.Communications.Modbus.ModbusController.DataRefreshDisabled"/> for more details.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.OnDataRefreshComplete">
            <summary>
            Raised each time all data has been refreshed.
            See <see cref="E:Focal.Communications.Modbus.ModbusController.DataRefreshComplete"/> for more details.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.OnModbusExceptionCodeReceived(System.Int32)">
            <summary>
            Raised each time we receive an exception code from the ModbusTCP client.
            See <see cref="E:Focal.Communications.Modbus.ModbusController.ModbusExceptionCodeReceived"/> for more details.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusController.OnPropertyChanged(System.String)">
            <summary>
            Raises <see cref="E:Focal.Communications.Modbus.ModbusController.PropertyChanged"/> for the specified object property. 
            </summary>        
            <param name="propertyName">The name of the property that has
            changed.</param>
        </member>
        <member name="E:Focal.Communications.Modbus.ModbusController.DataRefreshEnabled">
            <summary>
            Raised when auto data refresh is started.
            </summary>
        </member>
        <member name="E:Focal.Communications.Modbus.ModbusController.DataRefreshDisabled">
            <summary>
            Raised after auto data refresh has been stopped.
            </summary>
        </member>
        <member name="E:Focal.Communications.Modbus.ModbusController.DataRefreshComplete">
            <summary>
            Raised each time all tag data has been refreshed.
            </summary>
        </member>
        <member name="E:Focal.Communications.Modbus.ModbusController.ModbusExceptionCodeReceived">
            <summary>
            Raised each time we receive an exception code from the ModbusTCP client.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusController.TagGroups">
            <summary>
            Gets or sets the list of tag groups maintained by the controller.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusController.Tags">
            <summary>
            Gets all tags from each TagGroup in the list of TagGroups 
            and collapses them into a single enumerable, ordered by tag address.
            </summary>
            <remarks>
            This property provides an easy means to view all ITags in the 
            system in one list.
            </remarks>
            <example>
            <![CDATA[ 
            [40001, 1],
            [40002, 55],
            ]]>
            </example>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusController.RefreshInterval">
            <summary>
            Gets or Sets the data refresh interval (milliseconds).
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusController.StatKeeper">
            <summary>
            Gets the modbus statistics.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusController.UseSixDigitAddressing">
            <summary>
            Gets whether 6-digit addressing is used (ie. register 400001 vs 40001)
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.MBRegType">
            <summary>
            Enumerates modus register types.
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusStatKeeper">
            <summary>
            Encapsulates a number of modbus communication statistics.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusStatKeeper.Reset">
            <summary>
            Resets the stat counters.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusStatKeeper.AddExceptionCode(System.Int32)">
            <summary>
            Adds a new exception code to the list.
            </summary>
            <param name="code">The exception code to add to the list.</param>
            <returns>True if the exception code was succesfully added to the list.
            False if the list already contains the maximum number of codes as 
            specified by <see cref="P:Focal.Communications.Modbus.ModbusStatKeeper.MaxExceptionCodesCount"/>.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusStatKeeper.GetStatSummary">
            <summary>
            Gets a string containing a summary of the current statistics.
            (Elapsed time, commands sent-succeeded-failed, etc).
            </summary>
            <remarks>
            Sample output:
            <code>
            Commands Sent:          66
            Commands Succeeded:     66      [100%]
            Commands Failed:        0       [0%]
            
            Elapsed: 00:00:01.1602645 (days:hrs:min:sec.ms)    
            </code>
            </remarks>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusStatKeeper.OnPropertyChanged(System.String)">
            <summary>
            Raises <see cref="E:Focal.Communications.Modbus.ModbusStatKeeper.PropertyChanged"/> for the specified object property. 
            </summary>        
            <param name="propertyName">The name of the property that has
            changed.</param>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.NumCommandsSent">
            <summary>
            The total number of commands sent since the last stat reset.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.NumCommandsSuccessful">
            <summary>
            The total number of successful commands sent since the last stat reset.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.NumCommandsFailed">
            <summary>
            The total number of failed commands sent since the last stat reset.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.MaxExceptionCodesCount">
            <summary>
            Gets or sets the maximum number of exception codes that will be
            retained by the ModbusStatKeeper.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.ExceptionCodes">
            <summary>
            The list of exception codes for any failed commands.
            </summary>
            <remarks>
            To add a new exception to the list, call the <see cref="M:Focal.Communications.Modbus.ModbusStatKeeper.AddExceptionCode(System.Int32)"/> 
            method.
            </remarks>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.ExceptionCodeNames">
            <summary>
            Gets a dictionary of Modbus Exception Codes, where
            the key is the exception code and the value is the description.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.RunTimer">
            <summary>
            Gets the run timer.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusStatKeeper.StatSummary">
            <summary>
            Gets a summary of the modbus statistics.
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusTag">
            <summary>
            Represents a single modbus register.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTag.OnPropertyChanged(System.String)">
            <summary>
            Raises <see cref="E:Focal.Communications.Modbus.ModbusTag.PropertyChanged"/>
            </summary>        
            <param name="propertyName">The name of the property that has
            changed.</param>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTag.Description">
            <summary>
            The description of the tag.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTag.Address">
            <summary>
            The modbus register address of the tag.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTag.Value">
            <summary>
            The value of the register.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTag.RegisterType">
            <summary>
            The type of modbus register (coil, holding, input, etc).
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusTcpClient">
            <summary>
            Provides methods for communicating over TCP using the ModbusTCP protocol.
            </summary>
            <remarks>
            <para>
            This class contains methods for the most common ModbusTCP functions such as reading and writing coils and register data.
            </para>
            <para>
            The object takes care of establishing a connection behind the scenes with the Modbus master, however, the connection can be
            reset by calling <b>ResetConnection</b> method.  This causes the connection to be closed so that any furthur request to
            communicate will cause a new connection to be established.
            </para>
            <para>
            The data passed to the ModbusTCP function methods is passed as a <i>byte</i> array.  However, the <b>ModbusTcpClient</b> class
            also contains a <b>BufferConverter</b> class that contains static methods for easy transformation of the data sent and received
            over ModbusTCP to native data types.
            </para>
            <para>
            The class also implements a synchronous and asynchronous method for each of the ModbusTCP functions.  The synchronous method
            will block the calling thread and return an exception code.  Any return value other than zero indicates that the function failed
            and the a description of the failure can be retrieved by calling the <b>GetExceptionMessage</b> method.  The asynchronous will
            not block the calling thread and are executed in a separate thread.  The methods will raise either the <b>ResponseReceived</b> or
            the <b>ExceptionReceived</b> event when the request has been completed.  Again, a description for the exception code can be
            retrieved by calling the <b>GetExceptionMessage</b> method.
            </para>
            </remarks>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.#ctor(System.String,System.Int32,System.Int32)">
            <summary>
            Default constructor.
            </summary>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ResetConnection">
            <summary>
            Resets the connection by closing the NetworkStream and TcpClient connection.
            </summary>
            <exception cref="T:System.InvalidOperationException">A transaction is currently in progress.</exception>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.GetExceptionMessage(System.Int32)">
            <summary>
            Returns a string representation of the exception code specified.
            </summary>
            <param name="code">The exception code used when looking up the exception message.</param>
            <returns>A string representation of the exception message.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadCoils(System.Int16,System.UInt16,System.Int16,System.Byte[]@)">
            <summary>
            Reads the specified coils synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <param name="values">The data values read from the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadCoilsAsync(System.Int16,System.UInt16,System.Int16)">
            <summary>
            Reads the specified coils synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadDiscreteInputs(System.Int16,System.UInt16,System.Int16,System.Byte[]@)">
            <summary>
            Reads the specified discrete inputs synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <param name="values">The data values read from the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadDiscreteInputsAsync(System.Int16,System.UInt16,System.Int16)">
            <summary>
            Reads the specified discrete inputs synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadHoldingRegisters(System.Int16,System.UInt16,System.Int16,System.Byte[]@)">
            <summary>
            Reads the specified holding registers synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <param name="values">The data values read from the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadHoldingRegistersAsync(System.Int16,System.UInt16,System.Int16)">
            <summary>
            Reads the specified holding registers synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadInputRegisters(System.Int16,System.UInt16,System.Int16,System.Byte[]@)">
            <summary>
            Reads the specified input registers synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <param name="values">The data values read from the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ReadInputRegistersAsync(System.Int16,System.UInt16,System.Int16)">
            <summary>
            Reads the specified input registers synchronously from the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be read.</param>
            <param name="quantity">The number of data items to read.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteSingleCoil(System.Int16,System.UInt16,System.Boolean)">
            <summary>
            Writes the specified coil to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the coil.</param>
            <param name="value">The value of the coil to be written.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteSingleCoilAsync(System.Int16,System.UInt16,System.Boolean)">
            <summary>
            Writes the specified coil to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the coil.</param>
            <param name="value">The value of the coil to be written.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteSingleRegister(System.Int16,System.UInt16,System.Int16)">
            <summary>
            Writes the specified register to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the holding register.</param>
            <param name="value">The value to be written to the holding register.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteSingleRegisterAsync(System.Int16,System.UInt16,System.Int16)">
            <summary>
            Writes the specified register to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the holding register.</param>
            <param name="value">The value of the holding register to be written.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteMultipleCoils(System.Int16,System.UInt16,System.Int16,System.Byte[])">
            <summary>
            Writes the specified coils to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be write.</param>
            <param name="quantity">The number of data items to write.</param>
            <param name="values">The data values to write to the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteMultipleCoilsAsync(System.Int16,System.UInt16,System.Int16,System.Byte[])">
            <summary>
            Writes the specified coils to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be write.</param>
            <param name="quantity">The number of data items to write.</param>
            <param name="values">The data values to write to the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteMultipleRegisters(System.Int16,System.UInt16,System.Int16,System.Byte[])">
            <summary>
            Writes the specified registers to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be write.</param>
            <param name="quantity">The number of data items to write.</param>
            <param name="values">The data values to write to the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.WriteMultipleRegistersAsync(System.Int16,System.UInt16,System.Int16,System.Byte[])">
            <summary>
            Writes the specified registers to the server.
            </summary>
            <param name="tid">The transaction identifier associated with the request.</param>
            <param name="address">The address of the data to be write.</param>
            <param name="quantity">The number of data items to write.</param>
            <param name="values">The data values to write to the server.</param>
            <returns>The exception code returned by the server or zero if no exception was returned.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.OnExceptionReceived(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction)">
            <summary>
            Executes any necessary code and triggers the ExceptionReceived event whenever an exception is received.
            </summary>
            <param name="trans">The transaction data for the Modbus transaction.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.OnResponseReceived(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction)">
            <summary>
            Executes any necessary code and triggers the ResponseReceived event whenever an exception is received.
            </summary>
            <param name="trans">The transaction data for the Modbus transaction.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.DoSendAndReceive">
            <summary>
            Sends and receives data from the Modbus server.
            </summary>
            <remarks>
            This method executes in its own thread.
            </remarks>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.SendAndReceive(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction)">
            <summary>
            Sends and receives the data associated with the ModbusTransaction
            </summary>
            <param name="trans">The ModbusTransaction that contains the data to send and receive.</param>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.Address">
            <summary>
            Gets/Sets the I/P address to which the client will connect.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.Connection">
            <summary>
            Gets the TcpClient associated with the connection.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.Port">
            <summary>
            Gets/Sets the port to which the client will connect.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.ReadBuffer">
            <summary>
            Gets the read buffer associated with the connection.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.Timeout">
            <summary>
            Gets/Sets the timeout used for the connection.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.TransactionInProgress">
            <summary>
            Indicates that a current transaction is in progress.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.ModbusTcpClient.WriteBuffer">
            <summary>
            Gets the write buffer associated with the connection.
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusTcpClient.FunctionCodes">
            <summary>
            A structure to define the possible functions codes used in a request.
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusTcpClient.ExceptionCodes">
            <summary>
            A structure to define the possible exception codes returned in a response.
            </summary>
        </member>
        <member name="T:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction">
            <summary>
            Holds data for a single Modbus request/response transaction.
            </summary>
            <remarks>
            The class holds the data for a request/response from a Modbus server.  It also contains static methods that
            can be used to build the request and handle the response.
            </remarks>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForReadCoils(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a read coils request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForReadDiscreteInputs(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a read discrete inputs request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForReadHoldingRegisters(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a read holding registers request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForReadInputRegisters(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a read input registers request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForWriteMultipleCoils(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a write multiple coils request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForWriteMultipleRegisters(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a write multiple registers.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForWriteSingleCoil(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a write single coil request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.BuildRequestForWriteSingleRegister(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Builds the Modbus ADU for a write single register.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForReadCoils(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a read coils request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForReadDiscreteInputs(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a read discrete inputs request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForReadHoldingRegisters(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a read holding registers request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForReadInputRegisters(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a read input registers request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForWriteMultipleCoils(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a write multiple coils request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForWriteMultipleRegisters(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a write multiple registers request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForWriteSingleCoil(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a write single coil request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction.HandleResponseForWriteSingleRegister(Focal.Communications.Modbus.ModbusTcpClient.ModbusTransaction,Focal.Communications.Modbus.ModbusTcpClient)">
            <summary>
            Handles a response for a write single register request.
            </summary>
            <param name="transaction">The ModbusTransaction containing the required information about the transaction.</param>
            <param name="cm">The ModbusCommunicationManager used to communicate with the server.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.GetBytes(System.Boolean[],System.Int32,System.Int32,System.Byte[],System.Int32)">
            <summary>
            Copies the data from the source array into an array of bytes.
            </summary>
            <param name="source">The boolean array containing the data to be copied.</param>
            <param name="sourceOffset">The element offset in the array where the data begins.</param>
            <param name="sourceCount">The number of boolean values to copy.</param>
            <param name="dest">The byte array that is to contain the copied data.</param>
            <param name="destOffset">The element offset in the array where the data will begin.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.GetBytes(System.Int16[],System.Int32,System.Int32,System.Byte[],System.Int32)">
            <summary>
            Copies the data from the source array into an array of bytes.
            </summary>
            <param name="source">The short array containing the data to be copied.</param>
            <param name="sourceOffset">The element offset in the array where the data begins.</param>
            <param name="sourceCount">The number of Int16's to copy.</param>
            <param name="dest">The byte array that is to contain the copied data.</param>
            <param name="destOffset">The element offset in the array where the data will begin.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.GetBytes(System.String,System.Int32,System.Int32,System.Byte[],System.Int32)">
            <summary>
            Copies the data from the string into an array of bytes.
            </summary>
            <param name="source">The string containing the data to be copied.</param>
            <param name="sourceOffset">The element offset in the string where the data begins.</param>
            <param name="sourceCount">The number of characters to copy.</param>
            <param name="dest">The byte array that is to contain the copied data.</param>
            <param name="destOffset">The element offset in the array where the data will begin.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.GetBooleans(System.Byte[],System.Int32,System.Boolean[],System.Int32,System.Int32)">
            <summary>
            Copies the values from a byte array into an array of booleans.
            </summary>
            <param name="source">The byte array containing the data to be copied.</param>
            <param name="sourceOffset">The element offset in the array where the data begins.</param>
            <param name="dest">The boolean array that is to contain the copied data.</param>
            <param name="destOffset">The element offset in the array where the data will begin.</param>
            <param name="destCount">The number of boolean values to copy.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.GetInt16s(System.Byte[],System.Int32,System.Int16[],System.Int32,System.Int32)">
            <summary>
            Copies the values from a byte array into an array of Int16's
            </summary>
            <param name="source">The byte array containing the data to be copied.</param>
            <param name="sourceOffset">The element offset in the array where the data begins.</param>
            <param name="dest">The short array that is to contain the copied data.</param>
            <param name="destOffset">The element offset in the array where the data will begin.</param>
            <param name="destCount">The number of Int16's to copy.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.GetString(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Copies the values from a byte array into a string.
            </summary>
            <param name="source">The byte array containing the data to be copied.</param>
            <param name="sourceOffset">The element offset in the array where the data begins.</param>
            <param name="maxLength">The maximum length of the string.</param>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.ExtractInt16(System.Byte[],System.Int32)">
            <summary>
            Extracts an Int16 from the source array at the specified offset.
            </summary>
            <param name="source">The source array containing the data.</param>
            <param name="sourceOffset">The offset at which the Int16 will be extracted.</param>
            <returns>An Int16 with a value equal to the contents of the source array at the specified offset.</returns>
        </member>
        <member name="M:Focal.Communications.Modbus.ModbusTcpClient.BufferConverter.ExtractInt32(System.Byte[],System.Int32)">
            <summary>
            Extracts an Int32 from the source array at the specified offset.
            </summary>
            <param name="source">The source array containing the data.</param>
            <param name="sourceOffset">The offset at which the Int32 will be extracted.</param>
            <returns>An Int32 with a value equal to the contents of the source array at the specified offset.</returns>
        </member>
        <member name="T:Focal.Communications.Modbus.TagGroup">
            <summary>
            Provides a means to keep related ITags organized. 
            </summary>
            <remarks>
            <para>For example, one might create a TagGroup containing all Modbus
            Holding Registers in a system.</para>
            <para>Alternatively, one could create a TagGroup for each 'device' in a system.
            Perhaps the device contains a number of holding registers, coil registers,
            and input registers.</para>
            </remarks>
        </member>
        <member name="M:Focal.Communications.Modbus.TagGroup.GroupConsecutiveTags">
            <summary>
            Groups tags with consecutive addresses.  
            </summary>
            <remarks>
            This method allows us to do block reads for each group of 
            tags with consecutive addresses in a TagGroup. 
            </remarks>
            <returns></returns>
        </member>
        <member name="M:Focal.Communications.Modbus.TagGroup.OnPropertyChanged(System.String)">
            <summary>
            Raises <see cref="E:Focal.Communications.Modbus.TagGroup.PropertyChanged"/>
            </summary>        
            <param name="propertyName">The name of the property that has
            changed.</param>
        </member>
        <member name="P:Focal.Communications.Modbus.TagGroup.Description">
            <summary>
            The description of the tag group.
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.TagGroup.Tags">
            <summary>
            
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.TagGroup.UpdateRate">
            <summary>
            Currently has no effect (we use one master update rate for all taggroups).
            </summary>
        </member>
        <member name="P:Focal.Communications.Modbus.TagGroup.TagUpdatesEnabled">
            <summary>
            
            </summary>
        </member>
    </members>
</doc>
