protected string ObtenerDatosEstadisticaRecibidos() { string strDatos; strDatos = "[['NumeroBit', 'Bit'],"; ControlMensaje xmensaje = new ControlMensaje(); long IDmensaje = 0; long.TryParse(hiddenIDmensaje.Value, out IDmensaje); using (var db = new ProyectoCom2Entities1()) { var consulta = (from x in db.ControlMensajes where x.IDmensaje == IDmensaje select x).FirstOrDefault(); if (consulta != null) { xmensaje = consulta; } string valorBinarioOriginal = ""; string valorBinario = ""; char caracterOriginal; string mensajeOriginal = xmensaje.mensajeRecibido; char[] arregloMensajeOriginal = mensajeOriginal.ToCharArray(); string sBinariosOriginales = ""; int posicionCaracter = 0; long numeroBit = 0; foreach (char caracter in arregloMensajeOriginal) { //se convierte el caracter en binario valorBinario = Convert.ToString(caracter, 2).PadLeft(8, '0'); //se compara el valor obtenido con el correspondiente del archivo correcto. caracterOriginal = arregloMensajeOriginal[posicionCaracter]; valorBinarioOriginal = Convert.ToString(caracterOriginal, 2).PadLeft(8, '0'); sBinariosOriginales = sBinariosOriginales + valorBinarioOriginal; posicionCaracter++; } char[] arregloGraficaBinariosOriginales = sBinariosOriginales.ToArray(); foreach (char bit in arregloGraficaBinariosOriginales) { numeroBit++; strDatos = strDatos + "["; strDatos = strDatos + "'" + numeroBit + "'" + "," + bit.ToString(); strDatos = strDatos + "],"; } strDatos = strDatos.TrimEnd(',') + "]"; } return(strDatos); }
protected void CalculaBER(long mensajeID) { ControlMensaje xmensaje = new ControlMensaje(); try { using (var db = new ProyectoCom2Entities1()) { var consulta = (from x in db.ControlMensajes where x.IDmensaje == mensajeID select x).FirstOrDefault(); if (consulta != null) { xmensaje = consulta; } //Variables datos recibidos //Se lee el archivo con los datos recibidos desencriptados // StreamReader archDatosDecript = new StreamReader("c:\\jp/1s2019/Comunicaciones2/Lab/Receptor/DatosRecibidosDecript.txt"); string archivoDesencriptado = xmensaje.mensajeRecibido; //archDatosDecript.ReadToEnd(); char[] arregloCaracteresASCII = archivoDesencriptado.ToCharArray(); string valorBinario = ""; int posicionCaracter = 0; char[] arregloBinarioRecibido; int bitRecibido = 0; //variables datos mensaje original //StreamReader archMensajeOriginal = new StreamReader("c:\\jp/1s2019/Comunicaciones2/Lab/Receptor/DatosCorrectos.txt"); string mensajeOriginal = xmensaje.mensajeOriginal; //archMensajeOriginal.ReadToEnd(); char[] arregloMensajeOriginal = mensajeOriginal.ToCharArray(); char caracterOriginal; string valorBinarioOriginal; char[] arregloBinarioOriginal; int comparacionBinarios = 0; int bitOriginal = 0; int bitsErroneos = 0; int bitsTransmitidos = 0; //variables BER decimal BER = 0; string sBinariosOriginales = ""; //se recorre el arreglo de caracteres para convertir a binario foreach (char caracter in arregloCaracteresASCII) { //se convierte el caracter en binario valorBinario = Convert.ToString(caracter, 2).PadLeft(8, '0'); //se compara el valor obtenido con el correspondiente del archivo correcto. caracterOriginal = arregloMensajeOriginal[posicionCaracter]; valorBinarioOriginal = Convert.ToString(caracterOriginal, 2).PadLeft(8, '0'); sBinariosOriginales = sBinariosOriginales + valorBinarioOriginal; //se convierte en arreglo los binarios y se recorre cada uno de los valores en arreglo comparando cuantos bits no coinciden (en cuantos hay error) //dado que se sabe que ambos tendran una longitud de 8 posiciones (Por ASCII) entonces se recorren y comparan al mismo tiempo. arregloBinarioRecibido = valorBinario.ToArray(); arregloBinarioOriginal = valorBinarioOriginal.ToArray(); foreach (char caracterBinario in arregloBinarioOriginal) { bitRecibido = Convert.ToInt32(arregloBinarioRecibido[comparacionBinarios]); bitOriginal = Convert.ToInt32(caracterBinario); //se comparan ambos valores, si no son iguales entonces se recibio un bit erroneo y se ira acumulando este valor if (bitRecibido != bitOriginal) { bitsErroneos++; } //Se suman los bits transmitidos y la comparacion de binarios (limite de 8) bitsTransmitidos++; comparacionBinarios++; } //Se reinicia la variable para el siguiente caracter de 8 bits comparacionBinarios = 0; //se incrementa la posicion del caracter para la siguiente lectura posicionCaracter++; } //archDatosDecript.Close(); //archMensajeOriginal.Close(); //se calcula el BER (bits erroneos / bits transmitidos) BER = decimal.Round((Decimal)bitsErroneos / (Decimal)bitsTransmitidos, 6); lblBER.Text = bitsErroneos.ToString() + " " + "de" + " " + bitsTransmitidos.ToString() + " " + "bits fueron erroneos. La tasa de BER es de:" + " " + BER.ToString(); } //mostrar grafico } catch (Exception ex) { } }