154 lines
6.3 KiB
C#
154 lines
6.3 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()
|
|
{
|
|
add_cfg_comun();
|
|
|
|
//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;
|
|
}
|
|
|
|
/**
|
|
* Añade al str de cfg los parametros de configuración comunes a limpieza y recogida
|
|
*/
|
|
private void add_cfg_comun()
|
|
{
|
|
str_cfg = str_cfg +
|
|
//campos de la red navegable
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTC_onew + GeneralDef.EjecGeoParamIgual + ComunDef.CamposNW.cons_onew + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTC_kph + GeneralDef.EjecGeoParamIgual + ComunDef.CamposNW.cons_kph + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTC_fow + GeneralDef.EjecGeoParamIgual + ComunDef.CamposNW.cons_fow + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTC_name + GeneralDef.EjecGeoParamIgual + ComunDef.CamposNW.cons_name + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTA_TF + GeneralDef.EjecGeoParamIgual + ComunDef.AtributosNW.atr_TF + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTA_FT + GeneralDef.EjecGeoParamIgual + ComunDef.AtributosNW.atr_FT + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTA_N + GeneralDef.EjecGeoParamIgual + ComunDef.AtributosNW.atr_N + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GTA_pedes + GeneralDef.EjecGeoParamIgual + ComunDef.AtributosNW.atr_pedes + " " +
|
|
//nombre del tratamiento
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GG_strtto + GeneralDef.EjecGeoParamIgual + OliviaGlob.nomb_tto + " " +
|
|
//paths de archivos
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GG_pd + GeneralDef.EjecGeoParamIgual + OliviaGlob.Paths.PathData + " " +
|
|
GeneralDef.EjecGeoParamSep + GeneralDef.GG_pn + GeneralDef.EjecGeoParamIgual + OliviaGlob.Paths.PathNW + " ";
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|