varios pulsadores pulsador pines off mega interruptor esquema conectar como codigo c# .net

c# - pulsadores - pulsador arduino mega



leer interruptor de línea de comando (7)

¿Por qué no simplemente analiza el conjunto de argumentos pasados ​​y actúa basándose en ellos, como este?

foreach (string arg in args) { switch (arg.Substring(0, 2).ToUpper()) { case "/F": // process argument... break; case "/Z": // process arg... break; case "/D": paramD = arg.Substring(3); break; default: // do other stuff... break; } }

Estoy tratando de leer los argumentos del usuario en una aplicación de C #. Sé cómo leerlos en base a la posición con

string[] args = Environment.GetCommandLineArgs();

pero me gustaría leerlos desde interruptores como

app.exe /f /d:foo

Estoy realmente luchando para encontrar información sobre cómo hacer esto ...



Creo que tendrás que rodar tu propia implementación. Después de escribir pruebas unitarias para evaluar el nuevo método, podría comenzar a pensar en las líneas de ...

foreach (string arg in args) { flagF = flagF || arg == "/f"; // assuming F is boolean flagD = flagD ?? (arg.Substring(0,3) =="/d:" ? arg.Substring(3) : null); }


He visto un par de respuestas que recorren la colección de cadenas args. El problema es que necesita el siguiente elemento después de haber pulsado el interruptor que está buscando. Usé el índice de matriz de la colección para obtener el siguiente elemento.

En mi muestra estoy buscando un servidor y un puerto / S y / P. Espero que esto ayude a alguien:

var server = string.Empty; var port = string.Empty; for(var x = 0; x < args.Count(); x++) { switch (args[x].Trim().ToUpper()) { case "/S": server = args[x + 1]; break; case "/P": port = args[x + 1]; break; } }


Qué pasa,

// first is exe of executing program string[] args = Environment.CommandLine.Split(''/'').Skip(1).ToArray(); foreach (string arg in args) { string value = arg.Trim(); switch (value) { case "f": //... continue; } if (value.StartsWith("d:")) { value = value.Substring(2); // ... continue; } }


Soy el autor de una biblioteca de línea de comandos .NET de código abierto que puede satisfacer sus necesidades: C # CLI .

También es posible que desee leer this pregunta para otras sugerencias.


void Main(string[] args ) { foreach( var arg in args ) { // process each arg if needed, i.e., // remove ''-'', ''/'', uppercase, whatever switch(arg) { case "blah": // ... } } }

Las bibliotecas existen para este propósito, lo que hace que todo el proceso sea mucho más fácil, pero si se trata de una aplicación única, puede que no valga la pena. Depende de cuán complejos sean sus argumentos de línea de comando.