コード例 #1
0
 private void virtualMeterTask(object state)
 {
     while (isRunning)
     {
         for (int m = 0; m < homegenie.Modules.Count; m++)
         {
             var             module    = homegenie.Modules[m];
             ModuleParameter parameter = null;
             parameter = module.Properties.Find(delegate(ModuleParameter mp) { return(mp.Name == ModuleParameters.MODPAR_VIRTUALMETER_WATTS); });
             if (parameter == null)
             {
                 continue;
             }
             else
             {
                 try
                 {
                     double watts = double.Parse(parameter.Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);
                     if (watts > 0)
                     {
                         parameter = module.Properties.Find(delegate(ModuleParameter mp) { return(mp.Name == ModuleParameters.MODPAR_STATUS_LEVEL); });
                         double level     = double.Parse(parameter.Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);
                         double fuzzyness = (new Random().Next(0, 50) - 25) / 100D;
                         //
                         homegenie.migService_InterfacePropertyChanged(new InterfacePropertyChangedAction()
                         {
                             Domain     = module.Domain,
                             SourceId   = module.Address,
                             SourceType = module.Description,
                             Path       = ModuleParameters.MODPAR_METER_WATTS,
                             Value      = level == 0 ? "0.0" : ((watts * level) + fuzzyness).ToString(System.Globalization.CultureInfo.InvariantCulture)
                         });
                         //
                         Thread.Sleep(10);
                     }
                 }
                 catch { }
             }
         }
         Thread.Sleep(reportFrequency);
     }
 }