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(); }
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(); } }
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); }
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(); }
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; }
public void GetComChannel(string stationUUID, ref CCommunicationChannel comChannel) { m_mutexRouterTables.WaitOne(); if (m_htStationUUID2Phy.Contains(stationUUID)) { comChannel = (CCommunicationChannel)(m_htStationUUID2Phy[stationUUID]); } m_mutexRouterTables.ReleaseMutex(); }
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); }
public void DeleteComChannel() { m_ComChannel.Dispose(); m_ComChannel = null; }
public void Dispose() { m_MessagesSentManager.Dispose(); m_ComChannel = null; }