Пример #1
0
        /// <summary>
        /// Markiert einen Speicherbereich zum Löschen. Löscht Sie allerdings nicht!!! Dazu muss Flush() aufgerufen werden
        /// </summary>
        /// <param name="pFrom">From Position</param>
        /// <param name="pTo">To Position</param>
        /// <returns>
        /// <list type="bullet">
        /// <item>0 bei bei fehlerfreier Abarbeitung (<see cref="EDOLLHandler">EDOLL-Code</see>)</item>
        /// <item>-207 wenn pFrom größer als pTo (<see cref="EDOLLHandler">EDOLL-Code</see>)</item>
        /// <item>-208 wenn pTo über den beschriebenen Speicher hinauszeigt (<see cref="EDOLLHandler">EDOLL-Code</see>)</item>
        /// </list>
        /// </returns>
        /// <example>
        /// Beispieloperationen mit dem Buffer
        /// <para><img src="tbl_img/receiveBufferExample.jpg" /></para>
        /// <code>
        /// public static void receiveBufferExample()
        /// {
        ///     receiveBuffer testBuffer = new receiveBuffer();
        ///
        ///		testBuffer.AddByte((byte)'a');
        ///     testBuffer.AddByte((byte)'b');
        ///     testBuffer.AddByte((byte)'c');
        ///
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // printet 3
        ///     stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an
        ///
        ///     testBuffer.FreeBytes(0,1); // markiert 'a' und 'b' zum Löschen
        ///
        ///     stdOut.Info("a und b marked for erasing");
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // liefert 3, wurde ja erst markiert
        ///
        ///     testBuffer.Flush();
        ///
        ///     stdOut.Info("buffer flushed...");
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // liefert 1, 'c' wurde ganz nach vorne gerutscht
        ///     stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an
        ///
        ///     testBuffer.Clear(); // Buffer wieder ausleeren
        ///
        ///     stdOut.Info("buffer cleared");
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // liefert 0
        /// }
        /// </code>
        /// </example>
        public int FreeBytes(int pFrom, int pTo)
        {
            // Syntaxprüfung
            if (pFrom > pTo)
            {
                return(-207);
            }

            if (pTo >= dptr)
            {
                return(-208);
            }

            accessControl.WaitOne();

            fromToPair tmp = new fromToPair();

            tmp.From = pFrom;
            tmp.To   = pTo;

            toDelete.Add(tmp);
            accessControl.Release();

            return(0);
        }
Пример #2
0
        /// <summary>
        /// Markiert einen Speicherbereich zum Löschen. Löscht Sie allerdings nicht!!! Dazu muss Flush() aufgerufen werden
        /// </summary>
        /// <param name="pFrom">From Position</param>
        /// <param name="pTo">To Position</param>
        /// <returns>
        /// <list type="bullet">
        /// <item>0 bei bei fehlerfreier Abarbeitung (<see cref="EDOLLHandler">EDOLL-Code</see>)</item>
        /// <item>-207 wenn pFrom größer als pTo (<see cref="EDOLLHandler">EDOLL-Code</see>)</item>
        /// <item>-208 wenn pTo über den beschriebenen Speicher hinauszeigt (<see cref="EDOLLHandler">EDOLL-Code</see>)</item>
        /// </list>
        /// </returns>
        /// <example>
        /// Beispieloperationen mit dem Buffer
        /// <para><img src="tbl_img/receiveBufferExample.jpg" /></para>
        /// <code> 
        /// public static void receiveBufferExample()
        /// {
        /// 	receiveBuffer testBuffer = new receiveBuffer();
        /// 
        ///		testBuffer.AddByte((byte)'a');
        ///     testBuffer.AddByte((byte)'b');
        ///     testBuffer.AddByte((byte)'c');
        /// 
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // printet 3
        /// 	stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an
        ///  
        ///     testBuffer.FreeBytes(0,1); // markiert 'a' und 'b' zum Löschen
        ///            
        ///     stdOut.Info("a und b marked for erasing");
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // liefert 3, wurde ja erst markiert
        ///                            
        ///     testBuffer.Flush();
        ///            
        ///     stdOut.Info("buffer flushed...");
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // liefert 1, 'c' wurde ganz nach vorne gerutscht
        ///     stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an
        /// 
        ///     testBuffer.Clear(); // Buffer wieder ausleeren
        ///            
        ///     stdOut.Info("buffer cleared");
        ///     stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString());     // liefert 0
        /// }
        /// </code>
        /// </example>
        public int FreeBytes(int pFrom, int pTo)
        {
            // Syntaxprüfung
                if(pFrom > pTo)
                {
                    return(-207);
                }

                if(pTo >= dptr)
                {
                    return(-208);
                }

                accessControl.WaitOne();

                fromToPair tmp = new fromToPair();

                tmp.From = pFrom;
                tmp.To = pTo;

                toDelete.Add(tmp);
                accessControl.Release();

                return(0);
        }