Пример #1
0
        public void RemoveIDStation(string stationUUID)
        {
            m_mutexRouterTables.WaitOne();

            //Comprobamos si el Station UUID existe
            if (m_htStationUUID2Phy.Contains(stationUUID))
            {
                CCommunicationChannel PhysicalChannel = (CCommunicationChannel)(m_htStationUUID2Phy[stationUUID]);

                //Borramos la relación Station UUID -> Physical
                m_htStationUUID2Phy.Remove(stationUUID);

                //Borramos la relación Station UUID -> Address
                m_htStationUUID2Address.Remove(stationUUID);

                //Borramos la relación Physical -> Station ID
                List <string> listStationUUID = (List <string>)(m_htPhy2ListStationUUID[PhysicalChannel]);
                listStationUUID.Remove(stationUUID);

                if (listStationUUID.Count > 0)
                {
                    m_htPhy2ListStationUUID[PhysicalChannel] = listStationUUID;
                }
                else
                {
                    m_htPhy2ListStationUUID.Remove(PhysicalChannel);

                    //Como el canal de comunicaciones no tiene ninguna estación asociada lo eliminamos
                    PhysicalChannel.Dispose();
                    PhysicalChannel = null;
                }
            }

            m_mutexRouterTables.ReleaseMutex();
        }
Пример #2
0
        public CStation_SF(byte _StationNumDevice, Protocol _CommandProtocol, Protocol _FrameProtocol, string _StationModel, string _SoftwareVersion, string _HardwareVersion, CCommunicationChannel _ComChannel, string _ParentUUID = "")
        {
            m_StationData.Info.ParentUUID = _ParentUUID;
            m_StationNumDevice            = _StationNumDevice;
            m_CommandProtocol             = _CommandProtocol;
            m_FrameProtocol = _FrameProtocol;
            m_ComChannel    = _ComChannel;

            m_StationData.Info.Version_Software = _SoftwareVersion;
            m_StationData.Info.Version_Hardware = _HardwareVersion;

            //Protocol
            m_StationData.Info.Protocol = Strings.Format(System.Convert.ToInt32(_CommandProtocol), "00");

            //Model
            //En protocol 01: model or model_modelversion
            //En protocol 02: model_modeltype_modelversion
            CModelData stationModelData = new CModelData(_StationModel);

            m_StationData.Info.Model        = stationModelData.Model;
            m_StationData.Info.ModelType    = stationModelData.ModelType;
            m_StationData.Info.ModelVersion = stationModelData.ModelVersion;

            //Initialize ports and tools and station type
            InitializeStationPortsToolsType(m_StationData.Info.Model);

            //Features
            m_StationData.Info.Features = new CFeaturesData(m_StationData.Info.Model, m_StationData.Info.ModelType, m_StationData.Info.ModelVersion, m_StationData.Info.Protocol);

            //default values for Programs
            for (int i = 0; i <= m_StationData.Settings.Programs.Length - 1; i++)
            {
                m_StationData.Settings.Programs[i] = new CProgramDispenserData_SF();
            }
        }
Пример #3
0
        public bool CheckAddressComChannel(string stationParentUUID, byte address)
        {
            bool bExists = false;

            m_mutexRouterTables.WaitOne();

            //Comprobamos si el Station UUID existe
            if (m_htStationUUID2Phy.Contains(stationParentUUID))
            {
                //Obtenemos el canal de comunicación de la estación
                CCommunicationChannel PhysicalChannel = (CCommunicationChannel)(m_htStationUUID2Phy[stationParentUUID]);

                //Obtenemos todas las estaciones del canal de comunicación
                List <string> listStationUUID = (List <string>)(m_htPhy2ListStationUUID[PhysicalChannel]);

                //Comprobamos si alguna estación está asociada al address
                foreach (string stationUUID in listStationUUID)
                {
                    if (System.Convert.ToByte(m_htStationUUID2Address[stationUUID]) == address)
                    {
                        bExists = true;
                        break;
                    }
                }
            }
            m_mutexRouterTables.ReleaseMutex();

            return(bExists);
        }
Пример #4
0
        public void AddUUIDStation(string stationUUID, byte address, ref CCommunicationChannel PhysicalChannel)
        {
            m_mutexRouterTables.WaitOne();

            //Comprobamos si el canal de comunicación existe
            if (m_htPhy2ListStationUUID.Contains(PhysicalChannel))
            {
                //Añadimos la relación Physical -> Station UUID
                List <string> listStationUUID = (List <string>)(m_htPhy2ListStationUUID[PhysicalChannel]);
                listStationUUID.Add(stationUUID);
                m_htPhy2ListStationUUID[PhysicalChannel] = listStationUUID;

                //Si no existe el canal de comunicación lo añadimos
            }
            else
            {
                //Añadimos la relación Physical -> Station UUID
                List <string> listStationUUID = new List <string>();
                listStationUUID.Add(stationUUID);
                m_htPhy2ListStationUUID.Add(PhysicalChannel, listStationUUID);
            }

            //Añadimos la relación Station UUID -> Physical
            m_htStationUUID2Phy.Add(stationUUID, PhysicalChannel);

            //Añadimos la relación Station UUID -> Address
            m_htStationUUID2Address.Add(stationUUID, address);

            m_mutexRouterTables.ReleaseMutex();
        }
Пример #5
0
 public CStationFrames02_SF(CStationData_SF _StationData, CPortData_SF[] _PortData, CCommunicationChannel _ComChannel, byte _StationNumDevice)
 {
     m_StationData = _StationData;
     m_PortData    = _PortData;
     m_ComChannel  = _ComChannel;
     m_ComChannel.MessageResponse += ProcessMessageResponse;
     m_ComChannel.ConnectionError += ComChannelConnectionError;
     m_ComChannel.ResetSended     += ComChannelResetSended;
     m_StationNumDevice            = _StationNumDevice;
 }
Пример #6
0
        public void GetComChannel(string stationUUID, ref CCommunicationChannel comChannel)
        {
            m_mutexRouterTables.WaitOne();

            if (m_htStationUUID2Phy.Contains(stationUUID))
            {
                comChannel = (CCommunicationChannel)(m_htStationUUID2Phy[stationUUID]);
            }

            m_mutexRouterTables.ReleaseMutex();
        }
Пример #7
0
        public List <string> GetListStationSameComChannel(string stationUUID)
        {
            List <string> listStationUUID = new List <string>();

            m_mutexRouterTables.WaitOne();

            //Comprobamos si el Station UUID existe
            if (m_htStationUUID2Phy.Contains(stationUUID))
            {
                //Obtenemos el canal de comunicación de la estación
                CCommunicationChannel PhysicalChannel = (CCommunicationChannel)(m_htStationUUID2Phy[stationUUID]);

                //Obtenemos todas las estaciones del canal de comunicación
                listStationUUID = (List <string>)(m_htPhy2ListStationUUID[PhysicalChannel]);
            }
            m_mutexRouterTables.ReleaseMutex();

            return(listStationUUID);
        }
Пример #8
0
 public void DeleteComChannel()
 {
     m_ComChannel.Dispose();
     m_ComChannel = null;
 }
Пример #9
0
 public void Dispose()
 {
     m_MessagesSentManager.Dispose();
     m_ComChannel = null;
 }