public async Task StartAsync(Meter meter, DataSet dataSet, MeterSessionSetting sessionSetting) { CurrentMeterSession = new MeterSession(meter, dataSet) { Guid = Guid.NewGuid(), SessionSetting = sessionSetting ?? throw new ArgumentNullException(nameof(sessionSetting)), StartDate = DateTime.UtcNow }; sessionTracer.Clear(); if (sessionSetting.CommunicationChannelSetting != null) { if ((sessionSetting.CommunicationChannelSetting.BaudRate != BaudRate.BaudRate_9600) || (sessionSetting.CommunicationChannelSetting.NumberOfPackets != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultNumberOfPackets : RemoteSession.DefaultNumberOfPackets)) || (sessionSetting.CommunicationChannelSetting.PacketSize != (PacketSize)((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultPacketSize : RemoteSession.DefaultPacketSize))) { negotiationSetting = new NegotiationSetting() { BaudRate = (BaudRateValue)sessionSetting.CommunicationChannelSetting.BaudRate, BaudRateSelector = BaudRateSelector.OneBaudRateRequested, NumberOfPackets = sessionSetting.CommunicationChannelSetting.NumberOfPackets, PacketSize = (short)sessionSetting.CommunicationChannelSetting.PacketSize }; } if ((sessionSetting.CommunicationChannelSetting.ChannelTrafficTimeout != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultChannelTrafficTimeout : RemoteSession.DefaultChannelTrafficTimeout)) || (sessionSetting.CommunicationChannelSetting.InterCharacterTimeout != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultInterCharacterTimeout : RemoteSession.DefaultInterCharacterTimeout)) || (sessionSetting.CommunicationChannelSetting.ResponseTimeout != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultResponseTimeout : RemoteSession.DefaultResponseTimeout)) || (sessionSetting.CommunicationChannelSetting.NumberOfRetries != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultRetryAttempts : RemoteSession.DefaultRetryAttempts))) { timingSetting = new TimingSetting() { ChannelTrafficTimeout = sessionSetting.CommunicationChannelSetting.ChannelTrafficTimeout, InterCharacterTimeout = sessionSetting.CommunicationChannelSetting.InterCharacterTimeout, ResponseTimeout = sessionSetting.CommunicationChannelSetting.ResponseTimeout, NumberOfRetries = sessionSetting.CommunicationChannelSetting.NumberOfRetries }; } reconnectionCountdownTimer = (sessionSetting.ReconnectionSchema != null) ? new Timer(OnReconnectionCountDown, null, -1, -1) : null; totalBytesReceived = 0; totalBytesSent = 0; } ansiProtocolSession = CreateProtocolSession(); await ansiProtocolSession.StartAsync(); }
public InsituSession(string portName, int userId, string userName, string password, int?sendAckResponseThershold, int?baudRate, bool?dtrEnabled, int?receivedBytesThershold, NegotiationSetting negotiationSetting = null, TimingSetting timingSetting = null) : base(userId, userName, password, sendAckResponseThershold, receivedBytesThershold, negotiationSetting, timingSetting) { PortName = portName; BaudRate = baudRate; DtrEnabled = dtrEnabled; serialDataReceivedEventHandler = new SerialDataReceivedEventHandler(OnSerialDataReceived); serialErrorReceivedEventHandler = new SerialErrorReceivedEventHandler(OnSerialErrorReceived); serialPinChangedEventHandler = new SerialPinChangedEventHandler(OnSerialPinChanged); }
public NegotiateService(NegotiationSetting setting) : base(ServiceRequestCode.Negotiate) { Setting = setting; }
protected override int DefaultCommunicationTimeout => 30000; // El Protocolo ANSI 12.21 define 30 segundos como tiempo máximo de espera en el canal de comunicación durante un lectura por su puerto RS232 #endregion #region Constructor public RemoteSession(string ip, int portNumber, int userId, string userName, string password, int?sendAckResponseThershold, int?startRemoteSessionAttempts, NegotiationSetting negotiationSetting = null, TimingSetting timingSetting = null, bool useMeterMaxProtocol = true) : base(userId, userName, password, sendAckResponseThershold, null, negotiationSetting, timingSetting) { _endPoint = new IPEndPoint(IPAddress.Parse(ip), portNumber); _startRemoteSessionAttempts = startRemoteSessionAttempts ?? DefaultStartRemoteSessionAttempts; _useMeterMaxProtocol = useMeterMaxProtocol; }
protected SessionBase(int userId, string userName, string password, int?sendAckResponseThershold, int?receivedBytesThershold, NegotiationSetting negotiationSetting = null, TimingSetting timingSetting = null) { if (string.IsNullOrEmpty(userName)) { throw new ArgumentNullException("El nombre de usuario no puede ser una cadena vacía o nula."); } if (string.IsNullOrEmpty(password)) { throw new ArgumentNullException("La contraseña de autenticación requerida no puede ser una cadena nula o vacía."); } _password = password; CommunicationTimeout = DefaultCommunicationTimeout; AckResponseThreshold = sendAckResponseThershold ?? DefaultSendAckResponseThreshold; ReceivedBytesThreshold = receivedBytesThershold; _serviceExecutionStopwatch = new Stopwatch(); SessionStatus = SessionStatus.Closed; Phase = SessionPhase.Idle; HandshakeState = HandshakeState.Identification; dataLinkPacket = new DataLinkPacket(); Services = new List <IService>(); identificationService = new IdentificationService(); logonService = new LogonService(userId, userName); if (negotiationSetting != null) { negotiateService = new NegotiateService(negotiationSetting); } if (timingSetting != null) { timingSetupService = new TimingSetupService(timingSetting); } }