Example #1
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;
     }
 }
Example #2
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);
                }
            }
        }
Example #3
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");
            }
        }
Example #4
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");
                }
            }
        }