/// <summary> /// Get info from available serial ports. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> static void OnAvailableSerialPorts(object sender, GXSerialPortInfo e) { e.SerialPorts = Gurux.Serial.GXSerial.GetPortNames(); }
/// <summary> /// Initialize data collector. Null is returned if collector is already registered. /// </summary> /// <param name="name"></param> /// <returns></returns> public GXAmiDataCollector Init(string name) { GXAmiDataCollector dc = null; if (DC.DataCollectorGuid == Guid.Empty) { dc = DC.RegisterDataCollector(); dc.Name = name; dc.Medias = Gurux.Communication.GXClient.GetAvailableMedias(); if (m_AvailableSerialPorts != null) { GXSerialPortInfo e = new GXSerialPortInfo(); m_AvailableSerialPorts(this, e); dc.SerialPorts = e.SerialPorts; } TraceLevel = dc.TraceLevel; DC.Update(dc); } else { dc = DC.GetDataCollectorByGuid(DC.DataCollectorGuid); string[] old = dc.Medias; dc.Medias = Gurux.Communication.GXClient.GetAvailableMedias(); bool changed = old != dc.Medias; if (m_AvailableSerialPorts != null) { GXSerialPortInfo e = new GXSerialPortInfo(); m_AvailableSerialPorts(this, e); old = dc.SerialPorts; dc.SerialPorts = e.SerialPorts; changed |= old != dc.SerialPorts; } TraceLevel = DC.GetTraceLevel(DC); //If medias or serial ports are changed. if (changed) { DC.Update(dc); } } DC.OnTasksClaimed += new TasksClaimedEventHandler(DC_OnTasksClaimed); DC.OnTasksAdded += new TasksAddedEventHandler(DC_OnTasksAdded); DC.OnTasksRemoved += new TasksRemovedEventHandler(DC_OnTasksRemoved); DC.OnDevicesUpdated += new DevicesUpdatedEventHandler(DC_OnDevicesUpdated); DC.OnDevicesRemoved += new DevicesRemovedEventHandler(DC_OnDevicesRemoved); DC.OnDataCollectorsUpdated += new DataCollectorsUpdatedEventHandler(DC_OnDataCollectorsUpdated); DC.StartListenEvents(); //Start Data Collector thread. Thread = new Thread(new ThreadStart(Run)); Thread.IsBackground = true; Thread.Start(); return dc; }