OliviaAddIn/OliviaAddIn/Ejecuta.cs

130 lines
4.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SisNetBase;
using OliviaDef;
using System.Diagnostics;
using SisNetBase.Modulos;
using System.IO;
using System.Threading;
using System.Windows.Forms;
namespace OliviaAddIn
{
/**
* @file Ejecuta.cs
* Clase de ejecución del grueso de la herramienta Olivia.
* Guarda en un archivo de configuración la información configurada,
* lanza una ventana de progreso,
* llama al proceso Geofoto, y va leyendo en el archivo de configuración
* el progreso de la ejecución, que actualiza en la ventana.
*/
/**
* Clase de ejecución del grueso de la herramienta Olivia.
* Guarda en un archivo de configuración la información configurada,
* lanza una ventana de progreso,
* llama al proceso Geofoto, y va leyendo en el archivo de configuración
* el progreso de la ejecución, que actualiza en la ventana.
*/
class Ejecuta
{
//*************************************************************************************
//Enums
public enum ModosEjec
{
Secto,
Planif,
SoloPlanif,
}
//*************************************************************************************
//Variables
/**
* Cadena general de escritura de parámetros de configuración para envío por socket
*/
public string str_cfg;
/**
* Cadena general para indicar los errores de ejecución
*/
public string err_str="";
/**
* Cadena general de escritura de parámetros para envío por socket
*/
public string str;
//*************************************************************************************
//Métodos
public Ejecuta()
{
str = "";
}
~Ejecuta() // destructor (finalizers)
{
// cleanup statements...
}
/**
* Comienza las funciones de ejecución
*/
public bool ejec()
{
//lanza ventana marchando que lanza proceso en bucle para actualizar barra progreso
OliviaGlob.progr_eje = new ProgresoEjec();
//lanza proceso geofoto
if (!lanza_geofoto())
{
err_str = "Error al arrancar Geofoto (programa de procesado de datos): No ha arrancado correctamente la instancia Geofoto";
return false;
}
OliviaGlob.progr_eje.start(str_cfg);
return true;
}
/**
* Arranca el proceso geofoto con los parámetros correspondientes
*/
private bool lanza_geofoto()
{
Process[] pg;
string args;
ProcessStartInfo pfi;
try
{
//van ParamN parámetros, sin incluir "/olivia", si se añaden, incrementar ParamN
args = GeneralDef.EjecGeoParamSep + GeneralDef.EjecGeoProgName + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_tipo + GeneralDef.EjecGeoParamIgual + ((int)OliviaGlob.tip_oliv).ToString() + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_ip + GeneralDef.EjecGeoParamIgual + OliviaGlob.ip + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_port + GeneralDef.EjecGeoParamIgual + OliviaGlob.puerto + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_tout + GeneralDef.EjecGeoParamIgual + OliviaGlob.t_out_sock + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_pt + GeneralDef.EjecGeoParamIgual + OliviaGlob.Paths.PathTemp + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_pcfg + GeneralDef.EjecGeoParamIgual + OliviaGlob.Paths.PathWork + "cfg_geo.ini" + " " ;
pfi = new ProcessStartInfo(OliviaGlob.Paths.PathGeofoto, args);
System.Diagnostics.Process.Start(pfi);
//comprueba que haya arrancado geofoto
//le da 2 seg de margen para que arranque
pg = OliviaGlob.progr_eje.is_process(OliviaDef.GeneralDef.NombGeofoto, 2, true);
if (pg == null)
{
MessageBox.Show("No está Geofoto, args= "+args, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
catch (Exception)
{
return false;
}
return true;
}
}
}