Example #1
0
        public override bool  ProcessPacket(byte[] buffer, int offset, int count)
        {
            bool pResult  = false;
            byte bId      = buffer[0];                    //设备ID
            byte bFunCode = buffer[1];                    //功能码
            int  bDataLen = (buffer[2] << 8) | buffer[3]; //从第4字节到数据结束的总字节数

            if (32 != bDataLen)
            {
                Program.Logger.Debug("数据长度出错。。。放弃本帧数据");
                Console.WriteLine("数据长度出错。。。放弃本帧数据");
                return(false);
            }

            //字节高低位。高前低后
            double lData1 = ((buffer[4] << 8) | buffer[5]) * 0.1;    //CO2:数据库无此字段
            double lData2 = ((buffer[6] << 8) | buffer[7]) * 0.1;    //AIR_TEMPERATURE
            double lData3 = ((buffer[8] << 8) | buffer[9]) * 0.1;    //AIR_MOISTURE
            double lData4 = ((buffer[10] << 8) | buffer[11]) * 10;   //SUNSHINE
            double lData5 = ((buffer[12] << 8) | buffer[13]) * 0.01; //SOIL_PH
            double lData6 = ((buffer[14] << 8) | buffer[15]) * 0.1;  //SOIL_TEMPERATURE
            double lData7 = ((buffer[16] << 8) | buffer[17]) * 0.1;  //SOIL_MOISTURE//20cm
            double lData8 = ((buffer[18] << 8) | buffer[19]) * 0.1;  //SOIL_MOISTURE30

            DataClassLH dclh = new DataClassLH();

            dclh.ID = bId;
            dclh.dAirTemperature = lData2;
            dclh.dAirMoisture    = lData3;
            dclh.dSunshine       = lData4;
            dclh.dSoilPH         = lData5;
            dclh.dSoilTempture   = lData6;
            dclh.dSoilMoisture   = lData7;
            dclh.dSoilMoisture30 = lData8;

            DataManager.listLH.AddFirst(dclh);///新进来的放在第一条,与取出的方向不一样

            count++;
//
            //   string strOut = "CO2:" + lData1 + " 环境温度:" + lData2 + " 环境湿度:" + lData3 + " 光照:" + lData4 + " 土壤PH:" + lData5 + " 土壤温度:" + lData6 + " 土壤湿度:" + lData7 + " 土壤湿度30:" + lData8;

            //  Console.WriteLine(count + " " +strOut);

            //Convert.ToDouble();

            return(pResult);
        }
Example #2
0
        /// <summary>
        /// LH:土壤数据存入数据库
        /// </summary>
        private void DataProcessListLH()
        {
            while (true)
            {
                if (0 == listLH.Count)
                {
                    Thread.Sleep(100);
                    //   Console.WriteLine("+++++++++++none");
                    continue;
                }

                DataClassLH dclh   = (DataClassLH)listLH.Last();
                string      strOut = "CO2:" + 0 + " 环境温度:" + dclh.dAirTemperature + " 环境湿度:" + dclh.dAirMoisture + " 光照:" + dclh.dSunshine + " 土壤PH:" + dclh.dSoilPH + " 土壤温度:" + dclh.dSoilTempture + " 土壤湿度:" + dclh.dSoilMoisture + " 土壤湿度30:" + dclh.dSoilMoisture30;
                Console.WriteLine(System.DateTime.Now + ":" + strOut);

                Dictionary <string, double> dct = new Dictionary <string, double>();
                dct.Add("SOIL_TEMPERATURE", dclh.dSoilTempture);
                dct.Add("SOIL_MOISTURE", dclh.dSoilMoisture);
                dct.Add("SUNSHINE", dclh.dSunshine);
                dct.Add("AIR_TEMPERATURE", dclh.dAirTemperature);
                dct.Add("AIR_MOISTURE", dclh.dAirMoisture);
                dct.Add("SOIL_MOISTURE30", dclh.dSoilMoisture30);
                dct.Add("SOIL_PH", dclh.dSoilPH);

                ///将数据插入数据库
                ///
                DBOperation db = DBOperation.GetDbOperation();
                if (db != null)
                {
                    count++;
                    if (count > 20000)
                    {
                        count = 0;
                    }
                    db.updateSoilData(dclh.ID, dct);
                    Console.WriteLine(System.DateTime.Now + ":insert to soil database ok!!:" + count);
                }
                else
                {
                    Program.Logger.Debug("database open failed!!!");
                }
                listLH.RemoveLast();
            }
        }