Ejemplo n.º 1
0
        public void ConReceived(string value)
        {
            string cadena = BTMessages.addMessage(value);
            string checksum;

            //SHA_2 sha = new SHA_2();
            for (int i = 0; i < 20; i++)
            {
                sensors[i] = 0;
            }

            if (cadena.Contains("7EAB"))
            {
                int    pos          = cadena.IndexOf("7EAB");
                int    cantSensores = 0;
                string tempCadena   = cadena.Remove(0, pos + 4);
                if (tempCadena.Length > 2)
                {
                    cantSensores = Convert.ToInt32(tempCadena.Substring(0, 2));                         // TryParse.Int32 (intentar)
                }
                if (tempCadena.Length >= 2 + 4 + 6 * cantSensores + 6 + 2)
                {
                    tempCadena = tempCadena.Remove(0, 2);             // Quitamos la longitud de la cadena
                    string datosBasicos = tempCadena.Substring(0, 4); // Leemos los datos del vehiculo (cinturon)
                    tempCadena = tempCadena.Remove(0, 4);             // Llegamos a los sensores
                    tempCadena = tempCadena.Substring(0, 6 * cantSensores + 6);

                    string datosSensores = tempCadena.Substring(0, tempCadena.Length - 6);
                    checksum = tempCadena.Substring(datosSensores.Length, 6);

                    //string hash = sha.encrypt(datosSensores).Substring(0, 6).ToUpper();
                    string hash = "16E196";
                    if (hash.Equals(checksum))
                    {
                        while (datosSensores.Length > 0)
                        {
                            int sensorID = Readings.returnSensorID(datosSensores.Substring(0, 3));
                            datosSensores = datosSensores.Remove(0, 3);
                            int primerValor = Convert.ToInt32(datosSensores.Substring(0, 2), 16); //cambiar a hexadecimal
                            datosSensores = datosSensores.Remove(0, 2);
                            int segundoValor = Convert.ToInt32(datosSensores.Substring(0, 1));
                            datosSensores     = datosSensores.Remove(0, 1);
                            sensors[sensorID] = 1.0 * primerValor + 1.0 * segundoValor / 10;
                        }
                        BTMessages.deleteMessage(pos + 4 + 2 + 4 + 6 * cantSensores + checksum.Length);
                        //BTMessages.print();
                        saveDatatoWeb(sensors);
                        Debug.WriteLine("$$$$$$$$$$$$$$$$ Datos enviados");
                    }
                }
            }
        }