private void Session_ServiceExecutionCompleted(object sender, ServiceExecutionEventArgs e) { handshakeInitializingCount = 0; var currentMeterSessionItemTask = GetMeterSessionItemTask(e.Service); var currentSessionTask = currentMeterSessionItemTask.SessionTask; currentMeterSessionItemTask.Success = true; currentMeterSessionItemTask.EndDate = DateTime.UtcNow; // verificamos si todos los items de la tarea están completos... if (currentSessionTask.Items.Count(x => !x.Value.Success) == 0) { currentSessionTask.Completed = true; currentSessionTask.EndDate = DateTime.UtcNow; SessionProgressChanged?.Invoke(this, new SessionProgressEventArgs() { SessionTask = currentSessionTask, ElapsedTime = e.ElapsedTime, PercentAdvance = e.ProgressPercent }); } if (e.Service is ReadService readService) { byte[] rawData = readService.TableData.ToArray(); currentMeterSessionItemTask.TaskResult = rawData; RaiseSessionStatusChangedAndTrace(MeterSessionStatus.MeterSessionItemTaskSuccess, $"#Lectura satisfactoria de Tabla {readService.Table.Name}. Tiempo Requerido: {e.ElapsedTime.ToString()}. Porcentaje de Avance: {e.ProgressPercent}"); switch (readService.Table.Name) { case TableName.GeneralManufacturerIdentification: if (!OnConfigurationTablesCompleted(rawData)) { OnFatalError("No se puede determinar las caractarísticas técnicas del Medidor. Intente la lectura nuevamente."); } break; case TableName.ActualLoadProfileTable: if (!OnLoadProfileConfigurationCompleted(rawData)) { OnFatalError("No se puede determinar la configuración del Perfil de Carga del Medidor. Intente la Lectura nuevamente."); } break; default: break; } } else if (e.Service is WriteService writeService) { //if (writeService.Table.Name == TableName.HistoryLogControlTable) //{ // _sessionTracer.AppendLine("#AutoReset: Realizado"); // DemandResetStatus = OpticalDemandResetStatus.Performed; //} //else if (writeService.Table.Name == TableName.EventLogControlTable) //{ // _sessionTracer.AppendLine("#Fecha del Medidor: Actualizada"); //} } }
private void Session_ServiceExecutionStarted(object sender, ServiceExecutionEventArgs e) { var currentMeterSessionItemTask = GetMeterSessionItemTask(e.Service); currentMeterSessionItemTask.StartDate = DateTime.UtcNow; if (e.Service is ReadService readService) { RaiseSessionStatusChangedAndTrace(MeterSessionStatus.ExecutingDataSetComponent, $"#Iniciando Lectura de Tabla {readService.Table.Name}. Fecha y Hora (UTC): {currentMeterSessionItemTask.StartDate.ToString("dd-MM-yy HH:mm:ss fff")}"); } }
private void Session_ServiceExecutionCanceled(object sender, ServiceExecutionEventArgs e) { if (e.Service is ReadService readService) { RaiseSessionStatusChangedAndTrace(MeterSessionStatus.MeterSessionItemTaskAborted, $"#Lectura Cancelada de Tabla {readService.Table.Name}. Fecha y Hora (UTC): {DateTime.UtcNow.ToString("dd-MM-yy HH:mm:ss fff")}"); } if (e.Service is WriteService writeService) { //if (writeService.Table.Name == TableName.HistoryLogControlTable) //{ // AddSessionTrace("#Fecha Medidor: Lectura cancelada durante el cambio de fecha y hora"); //} //else if (writeService.Table.Name == TableName.EventLogControlTable) //{ // AddSessionTrace("#AutoReset: Lectura cancelada durante el Reseteo de Demanda"); // DemandResetStatus = OpticalDemandResetStatus.Unknow; //} } }
private void Session_ServiceExecutionError(object sender, ServiceExecutionEventArgs e) { if (e.Service is ReadService readService) { RaiseSessionStatusChangedAndTrace(MeterSessionStatus.MeterSessionItemTaskFailed, $"#Error durante Lectura de Tabla {readService.Table.Name}. Código de Resultado: {readService.ResponseCode}. Fecha y Hora (UTC): {DateTime.UtcNow.ToString("dd-MM-yy HH:mm:ss fff")}"); } else if (e.Service is WriteService writeService) { //if (writeService.Table.Name == TableName.EventLogControlTable) //{ // AddSessionTrace("#Fecha Medidor: No actualizada. Error al intentar corregir"); //} //else if (writeService.Table.Name == TableName.HistoryLogControlTable) //{ // AddSessionTrace("#AutoReset: No realizado. Error al intentar un Reseteo de Demanda Automático."); // DemandResetStatus = OpticalDemandResetStatus.NotPerformed; //} } }