Пример #1
0
        /// <summary>
        /// Extrae un campo ascii con formato.
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="length"></param>
        /// <param name="optional"></param>
        /// <returns></returns>
        protected string Extract_P(BinReader cmd, int length, bool optional)
        {
            _ = length;
            _ = optional;

            SkipFieldSep(cmd);

            var sb = new StringBuilder();

            while (!cmd.EOC)
            {
                if (cmd.PeekNext() == FLD)
                {
                    if (cmd.PeekNext(1) != FLD)
                    {
                        break;
                    }

                    cmd.ReadNext();     // Read the escaped FLD
                }

                sb.Append((char)cmd.ReadNext());
            }
            return(sb.ToString());
        }
Пример #2
0
 /// <summary>
 /// Saltea un 'posible' separador de campo.
 /// </summary>
 ///
 /// <param name="cmd">el lector del comando</param>
 private void SkipFieldSep(BinReader cmd)
 {
     if (cmd.ReadNext() != FLD)
     {
         throw new ArgumentException("Esperaba separador FLD");
     }
 }
Пример #3
0
        /// <summary>
        /// Extrae un campo si/no.
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="length"></param>
        /// <param name="optional"></param>
        /// <returns></returns>
        protected bool Extract_Y(BinReader cmd, int length, bool optional)
        {
            _ = length;
            _ = optional;

            SkipFieldSep(cmd);
            if (!cmd.EOC && cmd.PeekNext() != FLD)
            {
                char ch = (char)cmd.ReadNext();
                return(ch != 'n' && ch != 'N');
            }
            return(false);
        }
Пример #4
0
        /// <summary>
        /// Extrae un campo Binario.
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="length"></param>
        /// <param name="optional"></param>
        /// <returns></returns>
        protected byte[] Extract_B(BinReader cmd, int length, bool optional)
        {
            _ = length;
            _ = optional;

            var result = new List <byte>();

            while (!cmd.EOC && cmd.PeekNext() != FLD)
            {
                result.Add(cmd.ReadNext());
            }
            return(result.ToArray());
        }
Пример #5
0
        /// <summary>
        /// Extrae un campo de texto enriquecido.
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="length"></param>
        /// <param name="optional"></param>
        /// <returns></returns>
        protected string Extract_RT(BinReader cmd, int length, bool optional)
        {
            _ = length;
            _ = optional;

            SkipFieldSep(cmd);

            var sb = new StringBuilder();

            while (!cmd.EOC && cmd.PeekNext() != FLD)
            {
                sb.Append((char)cmd.ReadNext());
            }
            return(sb.ToString());
        }
Пример #6
0
        /// <summary>
        /// Parse las partes comunes de todas las respuestas a comandos.
        /// </summary>
        ///
        /// <param name="cmd">El lector de comandos.</param>
        protected void ParseAnswerHeader(BinReader cmd)
        {
            cmd.Ptr       = 1;
            printerStatus = cmd.ReadNext() * 0x100 + cmd.ReadNext();

            SkipFieldSep(cmd);
            fiscalStatus = cmd.ReadNext() * 0x100 + cmd.ReadNext();

            SkipFieldSep(cmd);  // Reserved 1

            SkipFieldSep(cmd);
            errorCode = cmd.ReadNext() * 0x100 + cmd.ReadNext();

            if (errorCode != 0)
            {
                this.Error = "Codigo: 0x" + errorCode.ToString("X").PadLeft(4, '0');
            }

            SkipFieldSep(cmd);  // Reserved 1
        }