コード例 #1
0
ファイル: ConsolaM2M.aspx.cs プロジェクト: jesumarquez/lt
        private void SendMessage(string cmd, string par)
        {
            if (cbSubEntidadMensaje.SelectedIndex < 0)
            {
                JsAlert(string.Format(CultureManager.GetError("NO_SELECTED"), CultureManager.GetEntity("PARENTI81")));
                return;
            }

            var ok    = 0;
            var error = 0;

            var sent   = string.Empty;
            var failed = string.Empty;

            foreach (ListItem li in cbSubEntidadMensaje.Items)
            {
                if (!li.Selected)
                {
                    continue;
                }

                var c = DAOFactory.SubEntidadDAO.FindById(Convert.ToInt32(li.Value));

                if (c.Sensor == null || c.Sensor.Dispositivo == null)
                {
                    JsAlert(string.Format(CultureManager.GetSystemMessage("UNASIGNED_VEHICLE"), c.Descripcion));
                    continue;
                }

                var dispositivo = c.Sensor.Dispositivo;
                var message     = M2mMessageSender.Create(dispositivo, new M2mMessageSaver(DAOFactory)).AddCommand(cmd);

                var cfgValue = par.Equals("On") ? "true" : "false";
                message.AddConfigParameter("DigitalOutput1", cfgValue, 0);

                var sendState = message.Send();

                if (sendState)
                {
                    ok++;
                    sent += "\\n" + li.Text;
                }
                else
                {
                    error++;
                    failed += "\\n" + li.Text;
                }
            }

            if (ok > 0)
            {
                JsAlert(string.Format(CultureManager.GetSystemMessage("MESSAGE_SENT"), sent));
            }
            if (error > 0)
            {
                JsAlert(string.Format(CultureManager.GetError("MESSAGE_NOT_SENT"), failed));
            }
        }
コード例 #2
0
ファイル: Parser.cs プロジェクト: jesumarquez/lt
            public override IMessage Decode(IFrame frame)
            {
                var dc    = new AbsolutDeviceCommand(frame.Payload);
                var parse = System.Text.Encoding.Default.GetString(frame.Payload).Split(',');
                var inode = DataProvider.FindByIMEI(parse[1], this);

                if (inode == null)
                {
                    inode      = new Parser();
                    inode.Imei = parse[1];
                }
                var dispositivo = DataProvider.GetDispositivo(inode.Id);

                if (dispositivo == null)
                {
                    dispositivo = new Dispositivo();
                }
                //T1 Temperatura 25ºC
                var message =
                    M2mMessageSender.Create(dispositivo, new M2mMessageSaver(new DAOFactory())).AddCommand("2850");

                //0   Encabezado del paquete
                //1   IMEI del equipo
                //2   Número de paquete            string[] parse = _command.Split(new[] { "<", ">" }, StringSplitOptions.RemoveEmptyEntries);
                //3   Evento que generó el paquete            var eventoLength = (_command.Length == 48 || _command.Length == 46 ? 3 : 2);
                //4   Nivel de señal GSM. (Entre 0 y 31)            var evento = (byte)0;
                //5   U1 en voltios            var hdop = (byte)0;
                //6   I1 en Ampere por 10. (10 equivale a 1.0 Amp)            var entradas = Convert.ToByte("0", 16);
                //7   U2 en voltios            var time = DateTimeUtils.SafeParseFormat(parse[10] + parse[2].Split('.')[0], "ddMMyyHHmmss");
                //8   I2 en Ampere por 10. (27 equivale a 2.7 Amp)
                //9   D1 Entrada DIN1 inactiva            /*
                //10  D2 Entrada D2 activa                Latitude: DD MM.MMMM
                //11  T1 Temperatura 25ºC               T1:valor,T2:valor
                //12  T2 Temperatura 23ºC
                //13  T3 Sensor NTC3 abierto
                //14  T4 Sensor NTC4 en cortocircuito
                //15  Latitud
                //16  Longitud
                //17  Modelo y versión de firmware del equipo             096*42.858868
                //18  Fecha y hora de la generación del evento GMT0             */
                //19  Fin de paquete

                //  T1:valor,T2:valor

                //11  T1 Temperatura 25ºC               T1:valor,T2:valor
                //12  T2 Temperatura 23ºC
                //13  T3 Sensor NTC3 abierto
                //14  T4 Sensor NTC4 en cortocircuito

                message.AddParameter("T1", parse[11]);
                message.AddParameter("T2", parse[12]);
                message.AddParameter("U1", parse[5]);
                message.AddParameter("I1", parse[6]);
                // message.Send();
                // IMessage mensaje = (M2mMessageSender)message;
                // return new UserMessage(dev.Id, dev.IdNum);



                //Tn;msgid;idmovil;Temperatura;aa/dd/mm,hh:mm:ss; número de sensor @checksum
                //??;parse[3];parse[1];parse[11];parse[18];

                var lowCmd  = parse[11];
                var subcode = MessageIdentifier.TemperatureInfo;
                //switch (lowCmd)
                //{
                //    case '0': //login
                //        // return ParseTLogin(partes, node);
                //    case '1': //Evento de medición.
                //        subcode = MessageIdentifier.TemperatureInfo;
                //        break;
                //    case '2': //Evento de desconexión del sensor.
                //        subcode = MessageIdentifier.TemperatureDisconected;
                //        break;
                //    case '3': //Evento de desconexión de la alimentación principal del sensor
                //        subcode = MessageIdentifier.TemperaturePowerDisconected;
                //        break;
                //    case '4': //Evento de reconexión de la alimentación principal del sensor
                //        subcode = MessageIdentifier.TemperaturePowerReconected;
                //        break;
                //    case '5': //Evento descongelamiento de heladera (Botón oprimido)
                //        subcode = MessageIdentifier.TemperatureThawingButtonPressed;
                //        break;
                //    case '6': //Evento de fin de descongelamiento de heladera (Botón liberado)
                //        subcode = MessageIdentifier.TemperatureThawingButtonUnpressed;
                //        break;
                //        //apertura de puerta 2851
                //        //
                //    case '7': //Evento de puerta abierta
                //        subcode = MessageIdentifier.DoorOpenned;
                //        break;
                //    case '8': //Evento de puerta cerrada
                //        subcode = MessageIdentifier.DoorClosed;
                //        break;
                //}

                IMessage msg;
                var      mid = Convert.ToUInt64(parse[2]);

                var dt = DateTimeUtils.SafeParseFormat(parse[18], "yyyy-MM-dd HH:mm:ss");
                MessageIdentifier code;

                switch (subcode)
                {
                case MessageIdentifier.TemperatureInfo:
                    code = MessageIdentifier.TelemetricData;
                    break;
                //debe enviarlos como M2M sino se descartan por dispositivo no asignado!
                //case MessageIdentifier.DoorClosed:
                //case MessageIdentifier.DoorOpenned:
                //code = MessageIdentifier.GenericMessage;
                //break;
                //                        trama
                //2850
                //TelemetricData = 2850,
                //apertura de puerta
                //2851
                //TelemetricEvent = 2851,

                default:
                    code = MessageIdentifier.TelemetricEvent;
                    break;
                }
                var msg_ = subcode.FactoryEvent(code, inode.Id, mid, null, dt, null, null);

                //5   U1 en voltios            var hdop = (byte)0;
                //6   I1 en Ampere por 10. (10 equivale a 1.0 Amp)            var entradas = Convert.ToByte("0", 16);
                //7   U2 en voltios            var time = DateTimeUtils.SafeParseFormat(parse[10] + parse[2].Split('.')[0], "ddMMyyHHmmss");
                //8   I2 en Ampere por 10. (27 equivale a 2.7 Amp)

                msg_.SensorsDataString = "U1:" + parse[5] + ",I1:" + parse[6] + ",T1:" + parse[11] + ",T2:" + parse[12] + ",T3:" + parse[13] + ",T4:" + parse[14];
                msg = msg_;
                var ackStr = dc.BuildAck().ToString(true);

                /*$B,353234020014377,ACK=12,$E*/
                return(msg.AddStringToSend(parse[0] + "," + parse[1] + ",ACK=" + parse[2] + "," + parse[19]));

                /*return
                 *  msg.AddStringToSend(String.Format(@"RT{0};{1:D3};{2:D5};{3:yy/MM/dd,HH:mm:ss}", lowCmd, mid,
                 *      inode.Id, DateTime.UtcNow));*/
            }