/// <summary> /// Si se indica un ID de puerto, se emplea para establecer la conexión /// con el dispositivo, de lo contrario, se intenta localizar un /// dispositivo cuyo nombre disponga de un patron de texto determinado. /// </summary> /// <param name="selecPort"> /// Número de puerto COM. /// </param> /// <param name="patrones"> /// Matriz que contiene los patrones de texto a localizar en el nombre /// del dispositivo. /// </param> private void ValidaParamPort(int selecPort, IEnumerable <string> patrones) { if (selecPort > 0) { var conexionSerie = new SerialCom(selecPort); ParamPort = conexionSerie.ComPort; } // Si no se ha especificado ningún Id de puerto else { // Realiza la busqueda de dispositivo por patrón foreach (var patron in patrones) { var conexionSerie = new SerialCom(patron); // Si se localiza una conexión que coincida con el patrón if (conexionSerie.ComPort == null) { continue; } ParamPort = conexionSerie.ComPort; return; } } }
/// <summary> /// Acciones a realizar con los parámetros. /// Verifica si los parámetros introducidos están dentro /// de rango, de lo contrario asigna valores por defecto /// o muestra mensajes de error. /// </summary> /// <param name="parser"> /// Analiza los parámetros pasados por línea de comandos. /// </param> /// <param name="param"> /// Parámetros pasados por línea de comandos. /// </param> public void SeleccionParametros(CommandLineParser.CommandLineParser parser, Parametros param) { var consola = new Consola(); // Ayuda if (param.Help) { MostrarAyudaParametros(parser, param); } // Version if (param.Version) { consola.MsgVersion(); } // Listado de puertos if (param.ListCom) { consola.MsgListadoPuertos(); } // Flujo de configuración manual if (ParamPort == null || param.Help || param.ListCom || param.Version) { return; } // Puerto ValidaParamPort(param.Port, _patrones); Console.WriteLine($"{consola.Prompt}Puerto: {ParamPort}"); // Velocidad ValidaParamSpeed(param.Speed); Console.WriteLine($"{consola.Prompt}Velocidad: {ParamSpeed}"); // Paridad ValidaParidad(param.Parity); Console.WriteLine($"{consola.Prompt}Bit de paridad: {ParamParity}"); // Bits de datos ValidaDataBits(param.DataBits); Console.WriteLine($"{consola.Prompt}Bits de comunicaciones: {ParamDataBits}"); // Bits de parada ValidaStopBits(param.StopBits); Console.WriteLine($"{consola.Prompt}Asignado bit de parada: {ParamStopBits}"); // >>> CONEXIÓN <<< var conexionSerie = new SerialCom(ParamPort, ParamSpeed, ParamParity, ParamDataBits, ParamStopBits); if (param.Info && conexionSerie.ComOk) { consola.MostrarParametros(conexionSerie); } conexionSerie.Conectar(); }
/// <summary> /// Muestra los parámetros que se han empleado para /// establecer la comunicación. /// </summary> public void MostrarParametros(SerialCom conexionSerie) { var listaParametros = "Parámetros de la conexión: \n" + $" - ComPort: {conexionSerie.ComPort} \n" + $" - ComSpeed: {conexionSerie.ComSpeed} \n" + $" - ComParity: {conexionSerie.ComParity} \n" + $" - ComBits: {conexionSerie.ComDataBits} \n" + $" - ComStopBits: {conexionSerie.ComStopBits}"; Console.WriteLine($"{Prompt}{listaParametros}"); }
/// <summary> /// Muestra el listado de dispositivos conectados a puertos COM /// </summary> public void MsgListadoPuertos() { var puertos = SerialCom.ListarPuertosCom(); string listado = null; var cnt = 0; foreach (var puerto in puertos) { var comEnUsoOsx = Regex.IsMatch(puerto, RegExpOsx); var comEnUsoWin = Regex.IsMatch(puerto, RegExpWin); if (comEnUsoOsx || comEnUsoWin) { cnt++; listado += "| " + cnt + " | " + puerto + "\n"; } } Console.WriteLine($"{Prompt}Listado de puertos \n"); Console.WriteLine("|----|--------------------------------------"); Console.WriteLine("| ID | DISPOSITIVO COM"); Console.WriteLine("|----|--------------------------------------"); Console.WriteLine($"{listado}"); }