Exemple #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="d"></param>
        private void ExecuteDeviceDataTrans(Device d)
        {
            if (d.CheckRemoteID())
            {
                Debug.Assert(d.RemoteID > 0, "device.RemoteID must > 0");

                while (true)
                {
                    // 1. get remote device last data datetime
                    //
                    RequestResult r = this.Request.Request(this.ClientID,
                        RequestNameEnum.GetDeviceLastDataDateTime, d.RemoteID);
                    if (r.ResultEnum == RequestResultEnum.OK)
                    {
                        DateTime lastDT = (DateTime)r.Result;
                        LogGetLastDataDateTime(d.RemoteID, lastDT);

                        // 2. get later data then last datetime
                        //
                        DataTable tbl = this.DB.GetWLDataTable(d.ID, lastDT);

                        // 3. trans to remote
                        //
                        object state = new object[] { d.RemoteID, tbl };
                        RequestResult r2 = this.Request.Request(this.ClientID, RequestNameEnum.SetWLData, state);
                        if (r2.ResultEnum != RequestResultEnum.OK)
                        {
                            //Log("SetWLData fail");
                            //Log(r2.ToString());
                            LogSetWLDataFail(d.RemoteID, r2.ResultEnum);
                        }
                        else
                        {
                            int count = tbl.Rows.Count;
                            DateTime b = DateTime.MinValue;
                            DateTime e = DateTime.MinValue;
                            if (count > 0)
                            {
                                b = Convert.ToDateTime(tbl.Rows[0]["DT"]);
                                e = Convert.ToDateTime(tbl.Rows[count - 1]["DT"]);
                            }
                            LogSetLWDataSuccess(d.RemoteID, count, b, e);
                        }

                        // 4. if trans count > 0 continue
                        if (tbl.Rows.Count < 30)
                            break;
                    }
                    else
                    {
                        LogGetLastDataDateTimeError(d.RemoteID);
                    }
                }
            }
        }