using System;
using System.Text;
namespace Delimitador_consola_06
{
class Program
{
static void Main(string[] args)
{
#region Configuración ventana.
Console.Title = "Probando manipulación de cadena";
Console.SetWindowSize(100, 35);
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Clear();
Console.CursorVisible = true;
#endregion
Encoding UTF_8 = Encoding.GetEncoding("UTF-8");
#region Variables.
char[] delimitadorComandoB = { '#', ',', 'O', 'I', 'L', 'B', 'V', 'F', 'H', 'R', 'S', };
string respuestaB = "#I223.3O224.0L000B100V26.4F50.2H50.2R0080S„€€„\r";
string[] palabrasB = respuestaB.Split(delimitadorComandoB);
string[] DESCRIPCION_S1 = new string[8]
{
"Indica que este byte está disponible y es válido. [Siempre 1]",
"Indica falla de energía de la red pública; ver detalles en S2.0 y S2.1.",
"Indica que la capacidad de la batería es menor que el umbral de apagado.",
"Indica que el zumbador está en estado de pitido.",
"Indica que la prueba de batería se está procesando.",
"Indica que el apagado programado está pendiente.",
"Indica que la restauración programada está pendiente.",
"Indica falla de hardware; ver detalles sobre el comando X71."
};
string[] DESCRIPCION_S2 =
{
"Para indicar que este byte está disponible y es válido. [Siempre 1].",
"YY-- bit 6",
"XX-- bit 5",
"Indica sobretemperatura del inversor.",
"Indica que el inversor tiene una falla.",
"Indica que el inversor está apagado.",
"Indica que la frecuencia de la utilidad está fuera de rango.",
"Indica que el voltaje de la red pública está fuera de rango."
};
string[] DESCRIPCION_S3 =
{
"Para indicar que este byte está disponible y es válido. [Siempre 1].",
"Indica que la batería está completamente cargada.",
"Indica que la capacidad de la batería aún es menor que el umbral restaurado del UPS cuando la energía de la red pública restaurado.",
"Indica que la batería se está cargando.",
"Indica que la batería se está descargando.",
"Indica que la capacidad de la batería es inferior al 80 por ciento.",
"Reservado, debe ser 0.",
"Indica que la batería no está presente."
};
string[] DESCRIPCION_S4 =
{
"Para indicar que este byte está disponible y es válido. [Siempre 1].",
"Indica que el bypass es una sobrecarga.",
"Indica que la derivación está activa.",
"Indica que la salida sufre un cortocircuito.",
"Indica que la salida tiene carga.",
"Indica que la salida está sobrecargada.",
"Indica que la frecuencia de salida está fuera de rango en bypass.",
"Indica que el voltaje de salida está fuera de rango en derivación."
};
string[] DESCRIPCION_S5 =
{
"Para indicar que este byte está disponible y es válido. [Siempre 1].",
"Indica que no hay salida.",
"Para indicar que el tiempo de ejecución restante es inferior al umbral.",
"Para indicar que el zumbador está silenciado (no permanente) en este momento.",
"Para indicar falla de cableado.",
"Para indicar SAI en modo ECO.",
"Para indicar UPS en Bypass manual.",
"Arreglar 0."
};
string[] DESCRIPCION_S6 =
{
"Para indicar que este byte está disponible y es válido. [Siempre 1].",
"Indica UPS encendido.",
"Reservado, debe ser 0.",
"Reservado, debe ser 0.",
"Reservado, debe ser 0.",
"Reservado, debe ser 0.",
"Reservado, debe ser 0.",
"Reservado, debe ser 0."
};
bool boolS1 = true;
bool boolS2 = false;
bool boolS3 = false;
bool boolS4 = false;
bool boolS5 = false;
bool boolS6 = false;
bool boolContador = true;
bool boolContador2 = false;
#endregion
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("El voltaje de la utilidad es de {0} voltios. ", palabrasB[2]);
Console.WriteLine("El voltaje de salida del UPS es de {0} voltios. ", palabrasB[3]);
Console.WriteLine("La carga actual de UPS es del {0} por ciento. ", palabrasB[4]);
Console.WriteLine("La capacidad de la batería es del {0} por ciento. ", palabrasB[5]);
Console.WriteLine("El voltaje de la batería es de {0} voltios. ", palabrasB[6]);
Console.WriteLine("La frecuencia de salida del SAI es de {0} Hz. ", palabrasB[7]);
Console.WriteLine("La frecuencia de salida del SAI es de {0} Hz. ", palabrasB[8]);
Console.WriteLine("El tiempo de funcionamiento restante de la batería es de {0} minutos. ", palabrasB[9]);
Console.WriteLine();
char[] bits = palabrasB[10].ToCharArray();
int byteS1 = (byte)bits[0];
int byteS2 = (byte)bits[1];
int byteS3 = (byte)bits[2];
int byteS4 = (byte)bits[3];
int byteS5 = (byte)bits[4];
int byteS6 = (byte)bits[5];
Console.WriteLine("Byte S1: {0}", byteS1.ToString());
Console.WriteLine("Byte S2: {0}", byteS2.ToString());
Console.WriteLine("Byte S3: {0}", byteS3.ToString());
Console.WriteLine("Byte S4: {0}", byteS4.ToString());
Console.WriteLine("Byte S5: {0}", byteS5.ToString());
Console.WriteLine("Byte S6: {0}", byteS6.ToString());
Console.WriteLine();
Console.WriteLine(((byteS2 & 64) == 64) ? "ACTIVADO" : "DESACTIVADO");
Console.WriteLine(((byteS2 & 32) == 32) ? "1" : "0");
Console.WriteLine();
Tabla();
int contador = 0;
for (int b = 0; b < bits.Length; b++)
{
for (int a = 7; a >= 0; a--)
{
Console.Write((((byte)bits[b]) & (1 << a)) >> a);
Console.Write(" | ");
if ((contador <= 7) && (boolS1 == true))
{
Console.WriteLine(DESCRIPCION_S1[contador]);
if (contador == 7)
{
boolS1 = false;
boolS2 = true;
boolContador2 = true;
contador = 0;
}
}
else if ((contador <= 7) && (boolS2 == true))
{
Console.WriteLine(DESCRIPCION_S2[contador]);
boolContador2 = false;
if (contador == 7)
{
boolS2 = false;
boolS3 = true;
boolContador2 = true;
contador = 0;
}
}
else if ((contador <= 7) && (boolS3 == true))
{
Console.WriteLine(DESCRIPCION_S3[contador]);
boolContador2 = false;
if (contador == 7)
{
boolS3 = false;
boolS4 = true;
boolContador2 = true;
contador = 0;
}
}
else if ((contador <= 7) && (boolS4 == true))
{
Console.WriteLine(DESCRIPCION_S4[contador]);
boolContador2 = false;
if (contador == 7)
{
boolS4 = false;
boolS5 = true;
boolContador2 = true;
contador = 0;
}
}
else if ((contador <= 7) && (boolS5 == true))
{
Console.WriteLine(DESCRIPCION_S5[contador]);
boolContador2 = false;
if (contador == 7)
{
boolS5 = false;
boolS6 = true;
boolContador2 = true;
contador = 0;
}
}
else if ((contador <= 7) && (boolS6 == true))
{
Console.WriteLine(DESCRIPCION_S6[contador]);
boolContador2 = false;
if (contador == 7)
{
boolS6 = true;
boolContador2 = true;
contador = 0;
}
}
if (boolContador == true)
{
contador++;
if (boolContador2 == true)
{
contador = 0;
}
}
}
Console.WriteLine();
}
#region Tabla.
void Tabla()
{
Console.WriteLine();
Console.WriteLine("Byte | Bit | Estado | Descripción");
Console.WriteLine("-----+-----+-----------------------------------------------------------------------");
}
#endregion
Console.ReadKey();
}
}
}