Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Meta

#221
Hola:

Código que creo que se puede hacer es algo así.

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Musica_consola_01_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            #region Música.
            /* Posición Inicial: 00000000, Posición Final: 00001891, Longitud: 00001892 */

// Pongo pocos bytes para no agrandar el tema en el foro.

            byte[] rawData = {
    0x4D, 0x54, 0x68, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x08
};

#endregion

            var c1 = new System.Windows.Media.MediaPlayer();
            c1.Open(new System.Uri(rawData));
            c1.Play();
        }
    }
}



Me da este error.

Gravedad    Código    Descripción    Proyecto    Archivo    Línea    Estado suprimido
Error    CS0234    El tipo o el nombre del espacio de nombres 'Media' no existe en el espacio de nombres 'System.Windows' (¿falta alguna referencia de ensamblado?)    Musica_consola_01_cs    C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Musica_consola_01_cs\Musica_consola_01_cs\Program.cs    545    Activo

No encuentro en referencia el Media.

¿Alguna idea?

Saludos.
#222
Buen aporte, a leer, interpretar y actuar.

Muchas gracias por la ayuda. ;)
#223
Hola:

Teniendo un menú hecho por defecto en español en este caso. (Cuando todo esté acabado tiene que estar en Inglés por defecto).

Quiero crear menús que sea capaz de elegir el idioma, en al cual hoy en día no hay problema porque está este traductor para escapar.

Mi idea para tener un orden de cada idioma a introducir, por ejemplo, español, inglés, alemán, francés, italiano y portugués.

En este ejemplo hay 6 lenguas. No se si la mejor opción es crear una carpeta de idiomas y ahí meto cada lengua en el cual es llamado.



Código de ejemplo para.
Código (csharp) [Seleccionar]
using System;

namespace Idiomas_consola_01_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Menú - C# 2017";

            // Tamaño ventana consola.
            // X anchura.
            Console.WindowWidth = 80;

            // Y altura.
            Console.WindowHeight = 40;

            // Oculto el cursor.
            Console.CursorVisible = false;

            // Almacena la tecla pulsada en la variable.
            ConsoleKey teclaInicial;

            // Fondo verde.
            Console.BackgroundColor = ConsoleColor.Green;

            // Letras negras.
            Console.ForegroundColor = ConsoleColor.Black;

            do
            {
                // Limpiar pantalla.
                Console.Clear();

                // Formato numérico dd/MM/yyyy.
                Console.WriteLine(DateTime.Now.ToString("ddd dd MMM"));

                // Almacena en la variable una tecla pulsada.
                teclaInicial = Console.ReadKey(true).Key;

                // ¿Haz pulsado la tecla Enter?
                if (teclaInicial == ConsoleKey.Enter)
                {
                    // Sí. Se ejecuta esta función.
                    menuPrincipal();
                }
            } while (teclaInicial != ConsoleKey.Escape);
        }

        #region Menú Principal.
        public static void menuPrincipal()
        {

            // Contador de teclas y navegador.
            int opcion = 0;
            bool salir = false;
            // Capturar tecla para luego validar.
            ConsoleKey tecla;

            do
            {
                // Limpiar pantalla.
                Console.Clear();

                switch (opcion)
                {
                    case 0:
                        Console.SetCursorPosition(0, 0);
                        Console.Write("Language");
                        break;
                    case 1:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Opción 1.");
                        break;
                    case 2:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Opción 2.");
                        break;
                    case 3:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Opción 3.");
                        break;
                    case 4:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Opción 4.");
                        break;
                    case 5:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Opción 5.");
                        break;
                    case 6:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Opción 6.");
                        break;
                    case 7:
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("Salir menú");
                        break;
                    default:
                        break;
                }

                // Fin de pintar el menú.
                //******************************************************************

                // Leer tecla ingresada por el usuario.
                tecla = Console.ReadKey(true).Key;

                // Validar el tipo de tecla.
                if (tecla == ConsoleKey.Enter)
                {
                    switch (opcion)
                    {
                        case 1:
                            // Instrucciones.
                            break;
                        case 2:
                            // Instrucciones.
                            break;
                        case 3:
                            // Instrucciones.
                            break;
                        case 4:
                            // Instrucciones.
                            break;
                        case 6:
                            // Instrucciones.
                            break;
                        case 7:
                            salir = true;
                            break;
                        default:
                            break;
                    }
                }

                if (tecla == ConsoleKey.DownArrow)
                {
                    opcion += 1; // Equivalente ++.
                }

                if (tecla == ConsoleKey.UpArrow)
                {
                    opcion -= 1; // --.
                }

                // Si está en la última opción, salta a la primera.
                if (opcion > 7)
                {
                    opcion = 0;
                }

                // Si está en la primera posición, salta a la última.
                if (opcion < 0)
                {
                    opcion = 7;
                }

                // Uso la tecla escape como salida.
            } while (salir == false);
        }
        #endregion
    }
}


En el menú Languaje, si pulsas Enter, tiene que verse en Inglés, todos los idiomas que vayamos incorporando. El usuario elige el idioma y se queda seleccionado.

¿Alguna idea?

Saludos.
#224
Buena explicación. ;)

Gracias.
#225
Buenas:

No esperaba que usaras el kernel32.dll.

Voy a examinar.

Muchas gracias. ;)
#226
Muchas gracias.
#227
Hola:



Les dejo un mini tutorial rápido en PDF por si alguien lo necesita.

Ver tutorial.

Saludos.

PD: Gracias a los compañeros del foro.
#228
Muchas gracias mi muy distinguido amigo. ;)

Código (csharp) [Seleccionar]
using System;

namespace Parpadeo_texto_consola_01_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Blink";

            // Tamaño ventana consola.
            // X anchura.
            Console.WindowWidth = 16;

            // Y altura.
            Console.WindowHeight = 2;

            // Oculto el cursor.
            Console.CursorVisible = false;

            // Como estamos en un ejemplo, da igual en este caso
            // poner un bucle infinito. Quiero que se muestre el
            // resultado.

            int t = 0;
            System.Timers.Timer blink = new System.Timers.Timer(100);
            blink.Enabled = true;
            bool mostrar = true;
            blink.Elapsed += (a, b) =>
            {
                switch (t++)
                {
                    case 0:
                        mostrar = true;
                        break;
                    case 5:
                        mostrar = false;
                        break;
                    case 6:
                        t = -1;
                        break;
                }

                // Posición de la pantalla.
                Console.SetCursorPosition(0, 0);

                // Mostrar texto en pantalla.
                Console.Write(mostrar ? "Hola mundo" : "          ");
            };
            Console.ReadKey();
        }
    }
}


No me gusta el código de arriba, mejor el que dices. Sigo con ello y me alegro el ejemplo del gif que pusiste. ;)
#229
.NET (C#, VB.NET, ASP) / Timer en vez de Sleep.
9 Febrero 2019, 11:10 AM
Hola:

Quiero hacer un parpadeo de un texto en modo consola. Por ahora solo me sale con Sleep, pero no me gusta este. Aún así dejo un ejemplo de lo que quiero pero está hecho en Sleep.



Código (csharp) [Seleccionar]
using System;
using System.Threading; // No olvidar.

namespace Parpadeo_texto_consola_01_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Blink";

            // Tamaño ventana consola.
            // X anchura.
            Console.WindowWidth = 16;

            // Y altura.
            Console.WindowHeight = 2;

            // Oculto el cursor.
            Console.CursorVisible = false;

            // Como estamos en un ejemplo, da igual en este caso
            // poner un bucle infinito. Quiero que se muestre el
            // resultado.
            while (true)
            {
                // Posición de la pantalla.
                Console.SetCursorPosition(0, 0);

                // Mostrar texto en pantalla.
                Console.Write("Hola mundo");

                // Retardo de 0.5 segundos. 1000 ml (mili segundos)
                // es igual a 1 segundo.
                Thread.Sleep(500);

                // Posición de la pantalla.
                Console.SetCursorPosition(0, 0);

                // Mostrar espaciones en blanco para borrar texto anterior.
                Console.Write("          ");

                // Retardo 0.3 seg.
                Thread.Sleep(300);
            }
        }
    }
}


Quiero hacer lo mismo, pero con el Timer en modo consola, lo que me cuesta hacerlo. Ya qu el timer pude interrumpir el programa cuando está dentro del temporizador pero con el Sleep, hasta que no acabe el tiempo, el programa se queda como en esclavo, sobre todo en tiempos muy largos.

¿Hay alguna forma de hacerlo en modo consola?

Si se puede hacer el parpadeo en una función y lo llamo cuando quiera, mejor que mejor.

Saludos.
#230
Hola:

Sí, haz entedido bien, tamién es mejor la opción booleana. Lo saqué así al final.

Código (csharp) [Seleccionar]
        public static void radiazo()
        {
            ConsoleKey teclaRadio;
            Console.Clear();
            do
            {
                Console.SetCursorPosition(0, 0);
                Console.Write("Ver radio: ");           

                Console.SetCursorPosition(11, 0);
                Console.Write(radio ? "On " : "Off");
               

                teclaRadio = Console.ReadKey(true).Key;

                if ((teclaRadio == ConsoleKey.UpArrow) || (teclaRadio == ConsoleKey.DownArrow))
                {
                    radio = !radio;
                }

            } while (teclaRadio != ConsoleKey.Enter);
        }


Si vez que ahora dice el On y Off si pulso todo el rato arriba o abajo ya puedo cambiar, tal como lo haz entendido.

Si te fijas bien, el On y Off está fijo. Quiero que parpadee en cada 0.5 segundos, o lo que es lo mismo, 500 ms (mili segundos).

Iba a usar Sleep, pero prefiero usar timer para que no se quede esclavo el programa aunque sea corto de tiempo.

¿Por qué quiero hacer esto así?

Porque estoy practicando en modo consola usando el 16x2, aunque ahora mismo el 16x1. Cuando lo domine partes por partes lo que deseo, como el booleano, el XXXXXX-- del brillo, y me falta el volumen del 0 que es mute hasta aumentar el sonido hasta el 7. Poco a poco lo estoy haciendo.

Cuando acabe con C#, adaptaré este código a un LCD real de 16x2 como puedes ver aquí.

Quiero aprender hacer menús para LCD pero primero que acabo antes, en PC. ;)


Saludos.