public bool AddReading(H2Generator generator)
 {
     try {
         //using var this._context = new FacilityContext();
         var device = this._context.ModbusDevices.Find(generator.Id);
         if (device != null)
         {
             generator.LastRead.GeneratorId = generator.Id;
             this._context.GeneratorSystemErrors.Add(generator.LastRead.AllSystemErrors);
             this._context.GeneratorSystemWarnings.Add(generator.LastRead.AllSystemWarnings);
             generator.SystemState             = generator.LastRead.SystemState;
             generator.OperationMode           = generator.LastRead.OperationMode;
             this._context.Entry(device).State = EntityState.Modified;
             this._context.H2GenReadings.Add(generator.LastRead);
             this._context.SaveChanges();
             //GC.Collect();
             return(true);
         }
         else
         {
             return(false);
         }
     } catch (Exception e) {
         StringBuilder builder = new StringBuilder();
         builder.AppendFormat("{0} Save Failed", generator.Identifier)
         .AppendFormat("Exception: {0}", e.Message).AppendLine();
         if (e.InnerException != null)
         {
             builder.AppendFormat("Inner Exception: {0}", e.InnerException.Message).AppendLine();
         }
         return(false);
     }
 }
예제 #2
0
 public static bool ImportGeneratorRegisters(H2Generator generator, FacilityContext context)
 {
     if (File.Exists(h2File))
     {
         try {
             var lines = File.ReadAllLines(h2File);
             foreach (var line in lines)
             {
                 var row = line.Split('\t');
                 GeneratorRegister register = new GeneratorRegister();
                 register.Name           = row[0];
                 register.FunctionCode   = RegisterConverters.GetFunctionCode(Convert.ToInt32(row[1]));
                 register.RegisterIndex  = Convert.ToInt32(row[2]);
                 register.RegisterLength = Convert.ToInt32(row[3]);
                 register.DataType       = RegisterConverters.GetH2Type(row[4]);
                 register.Connected      = true;
                 register.Bypass         = false;
                 register.PropertyMap    = register.Name;
                 generator.Registers.Add(register);
                 generator.Registers.Add(register);
             }
             context.SaveChanges();
             return(true);
         } catch {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
예제 #3
0
        private static void ImportModbusH2(string name, string IpAddress, int slave)
        {
            using (FacilityContext context = new FacilityContext()) {
                H2Generator monitorBox = new H2Generator();
                monitorBox.Identifier   = name;
                monitorBox.IpAddress    = IpAddress;
                monitorBox.Port         = 502;
                monitorBox.SlaveAddress = slave;
                monitorBox.Status       = "Okay";
                monitorBox.ReadInterval = 10;
                monitorBox.SaveInterval = 30;
                context.ModbusDevices.Add(monitorBox);
                context.SaveChanges();
                if (ImportModbusSettings.ImportGeneratorRegisters(monitorBox, context))
                {
                    Console.WriteLine("Success: H2 Registers Imported");
                }
                else
                {
                    Console.WriteLine("Error: Import Failed");
                }

                Console.WriteLine();
                Console.WriteLine("Done, Press any key to exit");
                Console.ReadKey();
            }
        }
        public async Task <bool> AddReadingAsync(H2Generator generator)
        {
            try {
                //this._context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
                //this._context.ChangeTracker.LazyLoadingEnabled = false;
                //this._context.ChangeTracker.AutoDetectChangesEnabled = false;
                var device = await this._context.ModbusDevices.FindAsync(generator.Id) as H2Generator;

                if (device != null)
                {
                    generator.LastRead.GeneratorId = generator.Id;
                    this._context.H2GenReadings.Add(generator.LastRead);
                    this._context.GeneratorSystemErrors.Add(generator.LastRead.AllSystemErrors);
                    this._context.GeneratorSystemWarnings.Add(generator.LastRead.AllSystemWarnings);
                    device.SystemState                = generator.LastRead.SystemState;
                    device.OperationMode              = generator.LastRead.OperationMode;
                    generator.SystemState             = generator.LastRead.SystemState;
                    generator.OperationMode           = generator.LastRead.OperationMode;
                    this._context.Entry(device).State = EntityState.Modified;
                    await this._context.SaveChangesAsync();

                    this._context.Entry(generator).State = EntityState.Detached;
                    //GC.Collect();
                    return(true);
                }
                else
                {
                    return(false);
                }
            } catch (Exception e) {
                StringBuilder builder = new StringBuilder();
                builder.AppendFormat("{0} Save Failed", generator.Identifier)
                .AppendFormat("Exception: {0}", e.Message).AppendLine();
                if (e.InnerException != null)
                {
                    builder.AppendFormat("Inner Exception: {0}", e.InnerException.Message).AppendLine();
                }
                return(false);
            }
        }