Exemplo n.º 1
0
        public CMensaje montarMensaje2()
        {
            int tam = (listaEB.Count - 1) * 7;

            byte[] datos = new byte[tam];
            int    cont  = 0;

            byte[] aux         = new byte[8];
            int    numPaquetes = (int)listaEB[0].Byte_3;
            int    numDatos    = (int)listaEB[0].Byte_1;

            for (int i = 1; i < listaEB.Count && i <= numPaquetes; i++)
            {
                for (int j = 1; j < 8 && cont < tam && cont < numDatos; j++)
                {
                    aux         = listaEB[i].getDatos();
                    datos[cont] = aux[j];
                    cont++;
                }
            }
            byte[] auxiliarBytes = new byte[numDatos];
            for (int i = 0; i < numDatos; i++)
            {
                auxiliarBytes[i] = datos[i];
            }
            CMensaje mensajeRetorno = new CMensaje();

            mensajeRetorno.setDatos(auxiliarBytes);
            string id1 = pasaByteToString(listaEB[0].Byte_6);
            string id2 = pasaByteToString(listaEB[0].Byte_5);

            mensajeRetorno.setId(listaEB[0].Id_0 + id1 + id2 + listaEB[0].Id_3);
            mensajeRetorno.Tipo = listaEB[0].Tipo;
            return(mensajeRetorno);
        }
Exemplo n.º 2
0
 //Imprime por pantalla los mensajes
 private void imprimir(CMensaje _mensaje)
 {
     if (this.InvokeRequired)
     {
         this.Invoke(new imprimeTotalDelegate(imprimir), new CMensaje[] { _mensaje });
     }
     else
     {
         string datosSep = separaDatos(_mensaje.getDatos()); //Formatea cadena, separando por byte
         string hex      = separaId(_mensaje);
         int    aux;
         if (Int32.TryParse(_mensaje.Tipo, out aux))
         {
             int num_bandera = aux;
             if (num_bandera == 0)//Standar
             {
                 listBox1.Items.Add(_mensaje.Tiempo.PadLeft(7, '0') + "   " + hex + "  " + datosSep);
                 listBox1.SelectedIndex = listBox1.Items.Count - 1;
             }
             else if (num_bandera == 1) //Extendido
             {
                 string insert = "";
                 insert = _mensaje.Tiempo.PadLeft(7, '0') + "   " + hex + "  " + datosSep;
                 listBox2.Items.Add(insert);
                 //listBox2.Items.Add(_mensaje.Tiempo.PadLeft(7, '0') + "  " + hex + "  " + datosSep);
                 listBox2.SelectedIndex = listBox2.Items.Count - 1;
             }
         }
         _mensaje = null;
     }
 }
Exemplo n.º 3
0
        //Para mensajes multipaquete
        private void procesoNormal2(CMensaje _mensaje, dsMensajes.mensajesRow _fila)
        {
            //this.listaTotal.Add(_mensaje); //introduce en la lista total
            if (existeId(_mensaje))
            //si el codigo leido existe en la tabla resumen
            {
                //devuelve la fila anterior con el mismo id que exista en la lista resumen
                dsMensajes.mensajesRow filaExistente = devuelveId(_mensaje);

                if (filaExistente != null)//si la fila  no es nula
                {
                    //se cambian los datos de la fila anterior por los de la fila nueva
                    filaExistente.datos    = _fila.datos;
                    filaExistente.recuento = filaExistente.recuento + 1;
                }
            }
            else
            {
                //se introduce el registro nuevo
                _fila.recuento = 1;                             //inicializo recuento a 1 antes de introducirlo en la tabla
                this.dsMensajes.mensajes.AddmensajesRow(_fila); //Añade la fila leida
            }
            //imprimir(_mensaje);
            //Recoleccion de basura
            _mensaje = null;
            _fila    = null;
            //Debug.WriteLine(fila.datos);
        }
Exemplo n.º 4
0
 //Solo EC
 private void procesoNormal3(CMensaje _mensaje, dsMensajes.mensajesRow _fila)
 {
     this.listaTotal.Add(_mensaje); //introduce en la lista total
     imprimir(_mensaje);
     //Recoleccion de basura
     _mensaje = null;
     _fila    = null;
 }
Exemplo n.º 5
0
        //Funcion que formatea el ID
        private static string separaId(CMensaje _mensaje)
        {
            string hex = _mensaje.Id.Substring(0, 2) + " " +
                         _mensaje.Id.Substring(2, 2) + " " +
                         _mensaje.Id.Substring(4, 2) + " " +
                         _mensaje.Id.Substring(6, 2);

            return(hex);
        }
Exemplo n.º 6
0
        //Convierte una fila en un objeto CMensaje
        public CMensaje MensajesRowToCMensaje(dsMensajes.mensajesRow _mensaje)
        {
            CMensaje mensaje = new CMensaje();

            mensaje.Tipo = _mensaje.tipo.ToString();
            mensaje.Id   = _mensaje.id_mostrar;

            mensaje.Recuento = _mensaje.recuento;

            return(mensaje);
        }
Exemplo n.º 7
0
 //Devuelve true si el mensaje recibido es de tipo EC o EB
 private bool noEsMensajeMultipaquete(CMensaje _mensaje)
 {
     //Los multipaquetes se forman por una cabercera (contiene en el Id - EC) y uno o varios cuerpos(contiene en el Id - EB)
     if (!_mensaje.Id_1.Equals("EC") && !_mensaje.Id_1.Equals("EB"))
     {
         return(true);//No es multipaquete
     }
     else
     {
         return(false);//Es multipaquete
     }
 }
Exemplo n.º 8
0
 //Devuelve Id del mensaje recibido
 private dsMensajes.mensajesRow devuelveId(CMensaje _mensaje)
 {
     //Revisar: dsMensajes.mensajesRow row = this.dsMensajes.mensajes.FindByid(men.Tipo + men.Id);
     dsMensajes.mensajesRow filaMensaje = this.dsMensajes.mensajes.FindByid(_mensaje.Id);
     if (filaMensaje != null)
     {
         return(filaMensaje);
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 9
0
 //Devuelve true si existe el Id del mensaje recibido
 private bool existeId(CMensaje _mensaje)
 {
     dsMensajes.mensajesRow filaMensaje = this.dsMensajes.mensajes.FindByid(_mensaje.Id);
     if (filaMensaje != null)
     {
         filaMensaje = null;
         return(true);
     }
     else
     {
         filaMensaje = null;
         return(false);
     }
 }
Exemplo n.º 10
0
        private bool mensajeCorrecto(CMensaje _in)
        {
            string id = _in.Id;

            if ((id[id.Length - 2].ToString() + id[id.Length - 1].ToString() == "0A" && _in.Byte_0.ToString() == "13"))
            {
                return(false);
            }
            if (_in.Byte_0.ToString() == "10" && _in.Byte_1.ToString() == "13")
            {
                return(false);
            }
            for (int i = 0; i < id.Length - 3; i += 2)
            {
                string idAux    = id[i].ToString() + id[i + 1].ToString();
                string idAuxSig = id[i + 2].ToString() + id[i + 3].ToString();
                if (idAux == "0A" && idAuxSig == "0D")
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 11
0
        public void exportar()
        {
            List <string> mensajesExportar = new List <string>();
            String        id = txPF.Text + " " + txPS.Text;

            if (Program.gFrmPpal.listBox2.Items.Count > 0)
            {
                for (int i = 0; i < Program.gFrmPpal.listBox2.Items.Count; i++)
                {
                    string aux = (string)Program.gFrmPpal.listBox2.Items[i];
                    if (aux.Contains(id))
                    {
                        mensajesExportar.Add(aux);
                    }
                }
            }
            else
            {
                for (int i = 0; i < Program.gFrmPpal.listBox1.Items.Count; i++)
                {
                    string aux = (string)Program.gFrmPpal.listBox1.Items[i];
                    if (aux.Contains(id))
                    {
                        mensajesExportar.Add(aux);
                    }
                }
            }


            List <CMensaje> listaCMensajes = new List <CMensaje>();

            for (int i = 0; i < mensajesExportar.Count; i++)
            {
                string   idMensajes_0 = mensajesExportar[i].Substring(10, 2);
                string   idMensajes_1 = mensajesExportar[i].Substring(13, 2);
                string   idMensajes_2 = mensajesExportar[i].Substring(16, 2);
                string   idMensajes_3 = mensajesExportar[i].Substring(19, 2);
                string   datos        = mensajesExportar[i].Substring(23, 23);
                string   tiempo       = mensajesExportar[i].Substring(0, 7);
                CMensaje m            = new CMensaje();
                m.Id = idMensajes_0 + idMensajes_1 + idMensajes_2 + idMensajes_3;
                byte[] b = stringDatosTobyte(datos);
                m.setDatos(b);
                m.Tiempo = tiempo;
                listaCMensajes.Add(m);
            }

            //Desglosar Mensajes para sacar SPN

            foreach (CMensaje m in listaCMensajes)
            {
                CIdenti identi = new CIdenti();
                identi.datos  = pasaBytesToString(m.getDatos());
                identi.PF     = txPF.Text;
                identi.PS     = txPS.Text;
                identi.SAhex  = txSA.Text;
                identi.tiempo = m.Tiempo;
                parametrosAuxiliar(identi.PF + identi.PS, identi);
            }

            //--------------------------//

            this.saveFileDialog1.ShowDialog();
            string name = this.saveFileDialog1.FileName;

            if (!name.Trim().Equals("") && this.saveFileDialog1.CheckPathExists)
            {
                ListViewItem        it;
                List <ListViewItem> lista = new List <ListViewItem>();
                ListViewItem.ListViewSubItemCollection itc;
                for (int i = 0; i < listView1.Items.Count; i++)
                {
                    if (listView1.Items[i].Checked)
                    {
                        it = listView1.Items[i];
                        lista.Add(it);
                    }
                }

                //Cargar en lista resto de mensajes

                if (lista.Count <= 0)
                {
                    //No hay ningun elemento seleccionado
                }
                else
                {
                    List <string> listaAuxiliar = new List <string>();
                    foreach (ListViewItem item in lista)
                    {
                        itc = item.SubItems;
                        listaAuxiliar.Add(itc[1].Text);
                        //dsMensajes1.MensajesExport2.Columns.Add(itc[1].Text + " - " + itc[0].Text);
                        //dsMensajes1.MensajesExport2.SPNColumn.ColumnName = itc[1].Text + " - " + itc[0].Text;
                        //dsMensajes1.MensajesExport.AddMensajesExportRow(itc[0].Text, itc[1].Text, itc[2].Text, itc[3].Text, itc[4].Text, "");
                        dsMensajes1.MensajesExport2.AddMensajesExport2Row(itc[2].Text + " - " + itc[5].Text);
                    }
                    foreach (ListViewItem item2 in general)
                    {
                        itc = item2.SubItems;
                        if (listaAuxiliar.Contains(itc[1].Text))
                        {
                            dsMensajes1.MensajesExport2.Columns.Add(itc[1].Text + " - " + itc[0].Text);
                            dsMensajes1.MensajesExport2.AddMensajesExport2Row(itc[2].Text + " - " + itc[5].Text);
                            //dsMensajes1.MensajesExport2.SPNColumn.ColumnName = itc[1].Text + " - " + itc[0].Text;
                        }

                        //dsMensajes1.MensajesExport.AddMensajesExportRow(itc[0].Text, itc[1].Text, itc[2].Text, itc[3].Text, itc[4].Text, "");
                    }
                    dsMensajes1.MensajesExport2.WriteXml(name);
                }
            }
        }
Exemplo n.º 12
0
        //Cuando se haga click en la lista Extendido
        private void listBox2_Click(object sender, EventArgs e)
        {
            try
            {
                if (hiloActivo == false)
                {
                    string fila   = (string)listBox2.SelectedItem;
                    string tiempo = fila.Substring(0, 10);
                    tiempo = tiempo.Trim();
                    string id            = fila.Substring(10, 11);
                    string datos         = fila.Substring(23, 23);
                    string mensajeString = id + " " + datos;
                    if (id.Substring(3, 2).Equals("EC"))
                    {
                        //Montar multipaquete

                        CMensaje mensajeEC = new CMensaje();
                        mensajeEC.Tipo = "01";
                        id             = id.Replace(" ", "");
                        mensajeEC.Id   = id;
                        mensajeEC.setDatos(pasaStringToBytes(datos));
                        listaEB.Add(mensajeEC);
                        bool correcto = true;
                        mensajeEC.Tiempo = tiempo;

                        //buscar X EB siempre que no encuentre 1 EC
                        for (int i = listBox2.SelectedIndex + 1; i < this.listBox2.Items.Count && correcto; i++)
                        {
                            fila          = listBox2.Items[i].ToString();
                            id            = fila.Substring(10, 11);
                            datos         = fila.Substring(23, 23);
                            mensajeString = id + " " + datos;
                            if (id.Substring(3, 2).Equals("EB"))
                            {
                                CMensaje mensajeEB = new CMensaje();
                                mensajeEB.Tipo = "01";
                                id             = id.Replace(" ", "");
                                mensajeEB.Id   = id;
                                mensajeEB.setDatos(pasaStringToBytes(datos));
                                if (!listaEB.Contains(mensajeEB))
                                {
                                    listaEB.Add(mensajeEB);
                                }
                            }
                            else if (id.Substring(3, 2).Equals("EC"))
                            {
                                correcto = false;
                            }
                        }

                        //var lista = from string s in this.listBox2.Items where s.Contains("EC") select s;

                        //MontarMultiPaquete
                        if (compruebaLista2())
                        {
                            //dsMensajes.mensajesRow filaAux = this.dsMensajes.mensajes.NewmensajesRow();
                            CMensaje mensajeAuxiliar = montarMensaje2();
                            identi.identificador = mensajeAuxiliar.Id;
                            identi.SAhex         = string.Format(mensajeAuxiliar.Id_3);
                            identi.PF            = string.Format(mensajeAuxiliar.Id_1);
                            identi.PS            = string.Format(mensajeAuxiliar.Id_2);
                            identi.PGNhex        = identi.PF + identi.PS;
                            string datosAuxiliar2 = pasaBytesToString(mensajeAuxiliar.getDatos());
                            identi.datos = datosAuxiliar2.Substring(0, 2) + datosAuxiliar2.Substring(2, 2)
                                           + datosAuxiliar2.Substring(4, 2) + datosAuxiliar2.Substring(6, 2)
                                           + datosAuxiliar2.Substring(8, 2) + datosAuxiliar2.Substring(10, 2)
                                           + datosAuxiliar2.Substring(12, 2) + datosAuxiliar2.Substring(14, 2)
                                           + datosAuxiliar2.Substring(16, 2) + datosAuxiliar2.Substring(18, 2);
                            prioridad(identi.identificador);
                            identi.PFint = int.Parse(identi.PF, System.Globalization.NumberStyles.HexNumber);

                            Form2 form = new Form2(this.identi);
                            form.ShowDialog();
                            listaEB.Clear();
                        }


                        //Form2 form = new Form2(this.identi);
                        //form.ShowDialog();
                    }
                    else if (id.Substring(3, 2).Equals("EB"))
                    {
                        //Ignorar
                    }
                    else
                    {
                        //Mensaje Normal
                        identi.identificador = mensajeString;
                        identi.SAhex         = id.Substring(9, 2);
                        identi.PF            = id.Substring(3, 2);
                        identi.PS            = id.Substring(6, 2);
                        identi.PGNhex        = identi.PF + identi.PS;
                        identi.datos         = datos.Substring(0, 2) + datos.Substring(3, 2)
                                               + datos.Substring(6, 2) + datos.Substring(9, 2)
                                               + datos.Substring(12, 2) + datos.Substring(15, 2)
                                               + datos.Substring(18, 2) + datos.Substring(21, 2);
                        prioridad(identi.identificador);
                        identi.PFint  = int.Parse(identi.PF, System.Globalization.NumberStyles.HexNumber);
                        identi.tiempo = tiempo;
                        Form2 form = new Form2(this.identi);
                        form.ShowDialog();
                    }
                }
            }
            catch (Exception exce)
            {
                MessageBox.Show("No hay mensajes");
            }
        }
Exemplo n.º 13
0
        //Procedimiento que procesa los datos
        private void LeerDatos()
        {
            byte[] datos = new byte[13];

            string   datos_cadena = "";
            CMensaje mensaje      = null;

            dsMensajes.mensajesRow fila = this.dsMensajes.mensajes.NewmensajesRow();
            if (compruebaCabeceroEsSalto())
            {
                try
                {
                    for (int i = 0; i < 13; i++)
                    {
                        datos[i] = (byte)this.serialPort1.ReadByte();
                    }

                    //historico.Add(datos);//Historico

                    string aux = pasaBytesToString(datos);

                    mensaje = new CMensaje(datos);

                    //historicoMensajes.Add(mensaje);//Historico
                    //contadorHistorico++;

                    //Este filtro no es valido, aunque quita algo de basura
                    if ((datos[0] == 0 || datos[0] == 1) && (mensajeCorrecto(mensaje)))
                    {
                        ahora          = DateTime.Now;
                        mensaje.Tiempo = Convert.ToInt32((ahora - dateTime).TotalMilliseconds).ToString();
                        datos_cadena   = pasaBytesToString(datos);
                        //Debug.WriteLine(datos_cadena);
                        fila.id         = mensaje.Id;
                        fila.tipo       = datos[0];
                        fila.datos      = this.pasaBytesToString(mensaje.getDatos());
                        fila.id_mostrar = mensaje.Id;
                        if (noEsMensajeMultipaquete(mensaje))
                        {
                            listaDescartes.Clear();//Limpia la lista, por si a fallado alguna lectura de miltupaquetes

                            datos = null;

                            if (compruebaLista())//Si la lista multipaquetes es correcta
                            {
                                dsMensajes.mensajesRow filaAux = this.dsMensajes.mensajes.NewmensajesRow();
                                CMensaje mensajeAuxiliar       = montarMensaje();
                                filaAux.id         = mensajeAuxiliar.Id;
                                filaAux.tipo       = 1;
                                filaAux.datos      = this.pasaBytesToString(mensajeAuxiliar.getDatos());
                                filaAux.id_mostrar = mensajeAuxiliar.Id;
                                procesoNormal2(mensajeAuxiliar, filaAux);
                                listaDescartes.Clear();
                            }
                            procesoNormal(mensaje, fila);
                            mensaje = null;
                            fila    = null;
                        }
                        else//Para tratar los multipaquetes
                        {
                            if (aux.Substring(4, 2).Equals("EC")) //Si es cabecera
                            {
                                listaDescartes.Clear();                  //Se limpia la lista puesto que a llegado una nueva cabecera
                                numMensajesMulti = sacaNumDatos(aux);    //Se obtiene el numero de multipaquetes que tienen que llegar
                            }
                            if (listaDescartes.Count < numMensajesMulti) //Mientras falten multipaquetes
                            {
                                listaDescartes.Add(mensaje);
                                procesoNormal3(mensaje, fila);
                            }
                            if (listaDescartes.Count == numMensajesMulti && listaDescartes.Count != 0 && numMensajesMulti != 0) //Cuando esten todos
                            {
                                if (compruebaLista())                                                                           //Si la lista es correcta
                                {
                                    dsMensajes.mensajesRow filaAux = this.dsMensajes.mensajes.NewmensajesRow();
                                    CMensaje mensajeAuxiliar       = montarMensaje();//Se monta el mensaje a partir de los multipaquetes //Exception
                                    filaAux.id         = mensajeAuxiliar.Id;
                                    filaAux.tipo       = 1;
                                    filaAux.datos      = this.pasaBytesToString(mensajeAuxiliar.getDatos());
                                    filaAux.id_mostrar = mensajeAuxiliar.Id;
                                    procesoNormal2(mensajeAuxiliar, filaAux);
                                }
                                listaDescartes.Add(mensaje);
                                procesoNormal3(mensaje, fila);//Se añade el mensaje montado
                            }
                        }
                    }//If para mensajes correctos
                }
                catch (TimeoutException)
                {
                    Console.WriteLine("Tiempo de espera en lectura superado");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception");
                }
            }
        }