public override void Close() { base.Close(); if (Media != null) { Media.Close(); } if (batteryUseTimeCounter != null) { batteryUseTimeCounter.Stop(); batteryUseTimeCounter = null; } }
/// <summary> /// In this example we have only two register objects. Battery use time counter that can be reset and CPU temperature. /// Battery use time counter is increased from the own thread. /// </summary> void Init() { Media.OnReceived += new Gurux.Common.ReceivedEventHandler(OnReceived); Media.OnClientConnected += new Gurux.Common.ClientConnectedEventHandler(OnClientConnected); Media.OnClientDisconnected += new Gurux.Common.ClientDisconnectedEventHandler(OnClientDisconnected); Media.OnError += new Gurux.Common.ErrorEventHandler(OnError); Media.Open(); //Load added objects. LoadSettings(); temperature = this.Items.FindByLN(ObjectType.Register, "0.0.96.9.0.255") as GXDLMSRegister; if (temperature == null) { // CPU temperature. temperature = new GXDLMSRegister("0.0.96.9.0.255"); temperature.Scaler = 1; temperature.Unit = Unit.Temperature; temperature.Value = 100; temperature.SetDataType(2, DataType.Int8); this.Items.Add(temperature); } // Battery use time counter GXDLMSRegister r = this.Items.FindByLN(ObjectType.Register, "0.0.96.6.0.255") as GXDLMSRegister; if (r == null) { r = new GXDLMSRegister("0.0.96.6.0.255"); r.SetDataType(2, DataType.UInt16); this.Items.Add(r); } batteryUseTimeCounter = new GXBatteryUseTimeCounter(r); batteryUseTimeCounter.Start(); /////////////////////////////////////////////////////////////////////// //Server must initialize after all objects are added. Initialize(); }