public void UploadVibrationValue(tEigenValueParam param)
        {
            string cacheData = string.Empty;

            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    if (iCMS.WG.Agent.ComFunction.IsExisted(iCMS.WG.Agent.ComFunction.CreateCacheData(param, EnumCacheType.CharacterValue)))
                    {
                        iCMS.WG.Agent.Common.LogHelper.WriteLog(iCMS.WG.Agent.Common.Enum.EnumLogType.InvalidData.ToString(), "重复特征值,MAC: " + param.mac.ToHexString() + "采集时间:" + iCMS.WG.Agent.ComFunction.GetSamplingTime(param.SampleTime));
                        return;
                    }

                    VibrationValueParameter vibrationValue = new VibrationValueParameter();
                    vibrationValue.SamplingTime            = iCMS.WG.Agent.ComFunction.GetSamplingTime(param.SampleTime);
                    vibrationValue.DAQStyle = ((int)param.DaqMode).ToString();
                    vibrationValue.WSMAC    = param.mac.ToHexString().ToUpper();


                    if ((int)param.AccWaveType == (int)enMeasDefType.eAccWaveform)
                    {
                        if (param.bAccRMSValid != 0)
                        {
                            vibrationValue.ACCEffValue = param.f32AccRMS;
                        }
                        else
                        {
                            vibrationValue.ACCEffValue = null;
                        }
                        if (param.bAccPKValid != 0)
                        {
                            vibrationValue.ACCPeakValue = param.f32AccPK;
                        }
                        else
                        {
                            vibrationValue.ACCPeakValue = null;
                        }
                        if (param.bAccPKPKValid != 0)
                        {
                            vibrationValue.ACCPeakPeakValue = param.f32AccPKPK;
                        }
                        else
                        {
                            vibrationValue.ACCPeakPeakValue = null;
                        }
                        vibrationValue.ACCSignalType = (int)enMeasDefType.eAccWaveform;
                    }
                    if ((int)param.VelWaveType == (int)enMeasDefType.eVelWaveform)
                    {
                        if (param.bVelRMSValid != 0)
                        {
                            vibrationValue.VelEffValue = param.f32VelRMS;
                        }
                        else
                        {
                            vibrationValue.VelEffValue = null;
                        }
                        if (param.bVelPKPKValid != 0)
                        {
                            vibrationValue.VelPeakPeakValue = param.f32VelPKPK;
                        }
                        else
                        {
                            vibrationValue.VelPeakPeakValue = null;
                        }
                        if (param.bVelPKValid != 0)
                        {
                            vibrationValue.VelPeakValue = param.f32VelPK;
                        }
                        else
                        {
                            vibrationValue.VelPeakValue = null;
                        }
                        vibrationValue.VelSignalType = (int)enMeasDefType.eVelWaveform;
                    }


                    if ((int)param.DspWaveType == (int)enMeasDefType.eDspWaveform)
                    {
                        if (param.bDspRMSValid != 0)
                        {
                            vibrationValue.DispEffValue = param.f32DspRMS;
                        }
                        else
                        {
                            vibrationValue.DispEffValue = null;
                        }
                        if (param.bDspPKPKValid != 0)
                        {
                            vibrationValue.DispPeakPeakValue = param.f32DspPKPK;
                        }
                        else
                        {
                            vibrationValue.DispPeakPeakValue = null;
                        }

                        if (param.bDspPKValid != 0)
                        {
                            vibrationValue.DispPeakValue = param.f32DspPK;
                        }
                        else
                        {
                            vibrationValue.DispPeakValue = null;
                        }


                        vibrationValue.DispSignalType = (int)enMeasDefType.eDspWaveform;
                    }


                    if ((int)param.AccEnvWaveType == (int)enMeasDefType.eAccEnvelope)
                    {
                        if (param.bAccEnvPKCValid != 0)
                        {
                            vibrationValue.EnvlCarpetValue = param.f32AccEnvPKC;
                        }
                        else
                        {
                            vibrationValue.EnvlCarpetValue = null;
                        }

                        if (param.bAccEnvPKValid != 0)
                        {
                            vibrationValue.EnvlPeakValue = param.f32AccEnvPK;
                        }
                        else
                        {
                            vibrationValue.EnvlPeakValue = null;
                        }
                        vibrationValue.EnvlSignalType = (int)enMeasDefType.eAccEnvelope;
                    }

                    cacheData = vibrationValue.ToClientString();
                    ComFunction.CreateRequest(EnumRequestType.UpLoadData, "UploadVibrationValue", cacheData);
                }
                catch (Exception ex)
                {
                    iCMS.WG.Agent.Common.LogHelper.WriteLog(iCMS.WG.Agent.Common.Enum.EnumLogType.Error.ToString(), "iCMS.WG.Agent.CommunicationWithServer.UploadVibrationValue执行失败,异常:" + ex.Message + "\r\n详细:" + ex.StackTrace.ToString());
                    if (iCMS.WG.Agent.ComFunction.GetAppConfig("isCache").Trim() == "1")
                    {
                        iCMS.WG.Agent.Common.LogHelper.WriteLog(iCMS.WG.Agent.Common.Enum.EnumLogType.Cache.ToString(), "UploadVibrationValue # \r\n" + cacheData);
                    }
                }
            });
        }
        /// <summary>
        /// 通信层的特征值的再次解析
        /// </summary>
        private void WsEigenDataAnalysis(tMeshEigenValueParam param)
        {
            lock (m_dicReceiveEignWs)
            {
                if (!m_dicReceiveEignWs.ContainsKey(param.mac.ToHexString()))
                {
                    m_dicReceiveEignWs.Add(param.mac.ToHexString(), false);
                }
                if (param.AccDef != null || param.VelDef != null || param.DspDef != null || param.AccEnvDef != null)
                {
                    m_dicReceiveEignWs[param.mac.ToHexString()] = true;
                }
                else
                {
                    m_dicReceiveEignWs[param.mac.ToHexString()] = false;
                }
            }
            if (param.AccDef != null || param.VelDef != null || param.DspDef != null || param.AccEnvDef != null)
            {
                tEigenValueParam Eigen = new tEigenValueParam();
                Eigen.mac.Assign(param.mac);
                Eigen.DaqMode            = enWsDaqMode.eTiming;
                Eigen.SampleTime.u8Year  = param.SampleTime.u8Year;
                Eigen.SampleTime.u8Month = param.SampleTime.u8Month;
                Eigen.SampleTime.u8Day   = param.SampleTime.u8Day;
                Eigen.SampleTime.u8Hour  = param.SampleTime.u8Hour;
                Eigen.SampleTime.u8Min   = param.SampleTime.u8Min;
                Eigen.SampleTime.u8Sec   = param.SampleTime.u8Sec;

                Eigen.AccWaveType = enMeasDefType.eAccWaveform;
                if (param.AccDef != null)
                {
                    Eigen.bAccRMSValid = (param.AccDef.bAccWaveRMSValid == true) ? 1 : 0;
                    Eigen.f32AccRMS    = param.AccDef.fAccRMSValue;
                    Eigen.bAccPKValid  = (param.AccDef.bAccWavePKValid == true) ? 1 : 0;
                    Eigen.f32AccPK     = param.AccDef.fAccPKValue;
                }
                Eigen.VelWaveType = enMeasDefType.eVelWaveform;
                if (param.VelDef != null)
                {
                    Eigen.bVelRMSValid = (param.VelDef.bVelWaveRMSValid == true) ? 1 : 0;
                    Eigen.f32VelRMS    = param.VelDef.fVelRMSValue;
                }
                Eigen.DspWaveType = enMeasDefType.eDspWaveform;
                if (param.DspDef != null)
                {
                    Eigen.bDspPKPKValid = (param.DspDef.bDspWavePKPKValid == true) ? 1 : 0;
                    Eigen.f32DspPKPK    = param.DspDef.fDspPKPKValue;
                }
                Eigen.AccEnvWaveType = enMeasDefType.eAccEnvelope;
                if (param.AccEnvDef != null)
                {
                    Eigen.bAccEnvPKValid  = (param.AccEnvDef.bAccEnvWavePKValid == true) ? 1 : 0;
                    Eigen.f32AccEnvPK     = param.AccEnvDef.fAccEnvPKValue;
                    Eigen.bAccEnvPKCValid = (param.AccEnvDef.bAccEnvWavePKCValid == true) ? 1 : 0;
                    Eigen.f32AccEnvPKC    = param.AccEnvDef.fAccEnvPKCValue;
                }
                //bEigentoDaq = true;
                if (WsEigenDataNotify != null)
                {
                    WsEigenDataNotify(Eigen);
                }
            }
            //解析LQ的特征值
            if (param.LQDef != null)
            {
                tLQParam LQ = new tLQParam();
                LQ.mac.Assign(param.mac);
                LQ.DaqMode            = enWsDaqMode.eTiming;
                LQ.SampleTime.u8Year  = param.SampleTime.u8Year;
                LQ.SampleTime.u8Month = param.SampleTime.u8Month;
                LQ.SampleTime.u8Day   = param.SampleTime.u8Day;
                LQ.SampleTime.u8Hour  = param.SampleTime.u8Hour;
                LQ.SampleTime.u8Min   = param.SampleTime.u8Min;
                LQ.SampleTime.u8Sec   = param.SampleTime.u8Sec;
                LQ.EigenValuePara     = param.LQDef.fLQRMSValue;
                LQ.WaveType           = enMeasDefType.eLQform;
                LQ.EigenType          = enEigenValueType.eLQ;
                if (WsLQNotify != null)
                {
                    WsLQNotify(LQ);
                }
            }
            //解析启停机的特征值
            if (param.RevStopDef != null)
            {
                tRevStopParam RevStop = new tRevStopParam();
                RevStop.mac.Assign(param.mac);
                RevStop.DaqMode            = enWsDaqMode.eTiming;
                RevStop.SampleTime.u8Year  = param.SampleTime.u8Year;
                RevStop.SampleTime.u8Month = param.SampleTime.u8Month;
                RevStop.SampleTime.u8Day   = param.SampleTime.u8Day;
                RevStop.SampleTime.u8Hour  = param.SampleTime.u8Hour;
                RevStop.SampleTime.u8Min   = param.SampleTime.u8Min;
                RevStop.SampleTime.u8Sec   = param.SampleTime.u8Sec;
                RevStop.f32EigenPK         = param.RevStopDef.fRevStopPKValue;
                RevStop.WaveType           = enMeasDefType.eAppRevStopform;
                RevStop.EigenType          = enEigenValueType.ePK;
                if (WsRevStopNotify != null)
                {
                    WsRevStopNotify(RevStop);
                }
            }
        }