Ejemplo n.º 1
0
 /// <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;
 }