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

#121
Buenas:

En este enlace.

Se puede ver que cada uno de ellos que pinches, lees un PDF, los quería descargar uno a uno, pero me da pereza, a parte de ponerles sus nombres para orientarme.

Quiero saber si hay alguna forma de descargar toda esa documentación en PDF de alguna forma o es imposible. Quiero evitarlo hacerlo de uno en uno.

Saludos.
#122
Programación General / Cálculo a realizar
28 Julio 2020, 09:58 AM
Hola:

Quiero hacer un programa en Arduino en el cual te pide cuatro valores. Esos valores son números a introducir por el monitor Serie de Arduino IDE.

Hice un ejemplo en C# modo consola para que se entienda lo que quiero decir.

Estos son los datos que te piden, solo cuatro y nada más.


Desde que pulse Enter con todo lo que indica arriba, en C# lo muestra como indica abajo. Lo que indica en laimagen de abajo, es el resultado que tiene que dar el monitor Serie.

Esto ya parece un reto.


Códido C#:
using System;
using System.Speech.Recognition; // No olvidar. Micro.
using System.Speech.Synthesis; // No olvidar. Altavoz.

// No olvidar añadir en "Referencias" Speech en el "Explorador de soluciones".

namespace Calculo_cilindro_voz_consola_02_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Mostrar título de la ventana.
            Console.Title = "Cálculo litros de un depósito - By Meta. Electrónica PIC";

            // Tamaño de la ventna. 55 X y 16 Y.
            Console.SetWindowSize(55, 16);

            #region Variables.
            // Variables.
            const double Pi = 3.14;
            float PI = Convert.ToSingle(Pi);
            float radio, altura, volumen, litros, nivelAgua, resultadoPorcentaje,
                resultadoLitros, volumenLitros, mitadBarra, cantidadTubosLitros,
                totalLitros;
            float cantidadTubos;
            #endregion

            do
            {
                try
                {
                    // Inicializar una nueva instancia de SpeechSynthesizer.
                    using (SpeechSynthesizer altavoz = new SpeechSynthesizer())
                    {
                        #region Introducción de datos en la pantalla.
                        // Configure la salida de audio.
                        altavoz.SetOutputToDefaultAudioDevice();

                        // Velocidad de la voz.
                        altavoz.Rate = -2; // Valores entre -10 a 10.

                        // Volumen de la voz.
                        altavoz.Volume = 100; // Valores entre 0 y 100.

                        // Limpiar pantalla.
                        Console.Clear();

                        // Cursor visible.
                        Console.CursorVisible = true;
                        // Introducción de datos.
                        Console.Write("Introduce el radio en m.: ");
                        altavoz.Speak("Introduce el radio en metros.");
                        radio = float.Parse(Console.ReadLine());
                        Console.Write("Introduce la altura del tubo en m.: ");
                        altavoz.Speak("Introduce la altura del tubo en metros.");
                        altura = float.Parse(Console.ReadLine());
                        Console.Write("Introduce altura del agua. Máximo es de {0} m.: ", altura);
                        altavoz.Speak("Introduce altura del agua. Máximo es de " + altura + "metros.");
                        nivelAgua = float.Parse(Console.ReadLine());
                        Console.Write("Introduce cantidad de tubos: ");
                        altavoz.Speak("Introduce cantidad de tubos.");
                        cantidadTubos = int.Parse(Console.ReadLine());
                        #endregion

                        #region Cálculos.
                        // Cálculo volumen.
                        volumen = PI * (radio * radio) * altura;

                        // Cálculo litros.
                        litros = volumen * 1000;

                        // Cálculo porcentaje en % del litro de agua.
                        resultadoPorcentaje = nivelAgua * (100 / altura);

                        // Cálculo litros de agua.
                        volumenLitros = PI * (radio * radio) * nivelAgua;
                        resultadoLitros = volumenLitros * 1000;

                        // Cálculo litros por cantidad de tubos
                        cantidadTubosLitros = cantidadTubos * resultadoLitros;

                        // Cálculo cantidad de litros con total de tubos.
                        totalLitros = litros * cantidadTubos;
                        #endregion

                        #region Dibujado barra de progreso.

                        // Posición.
                        Console.SetCursorPosition(0, 4);

                        // Dibujo de la barra.
                        Console.WriteLine();
                        Console.WriteLine("0 %                     50 %                   100 %");
                        Console.WriteLine("┌────────────────────────┬───────────────────────┐");

                        // Mitad de la barra para que no sea muy grande en la pantalla.
                        mitadBarra = resultadoPorcentaje / 2;

                        if (resultadoPorcentaje <= 15)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                        }
                        else if (resultadoPorcentaje <= 40)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                        }
                        else if (resultadoPorcentaje <= 100)
                        {
                            Console.ForegroundColor = ConsoleColor.Green;
                        }

                        if (mitadBarra > 50)
                        {
                            mitadBarra = 50;
                        }

                        Console.SetCursorPosition(0, 7);
                        // Rellenar la barra.
                        for (int i = 1; i <= mitadBarra; i++)
                        {
                            Console.Write("█");
                        }

                        Console.ForegroundColor = ConsoleColor.Gray;

                        // Si llega a 100 se pone el # en rojo.
                        if (resultadoPorcentaje > 100)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write("#");
                            Console.ForegroundColor = ConsoleColor.Gray;
                        }
                        #endregion

                        #region Mostrar textos en pantalla.
                        // Cursor invisible.
                        Console.CursorVisible = false;

                        // Pisición del texto a mostrar.
                        Console.SetCursorPosition(0, 9);

                        // Muestra porcentaje del depósito.
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.Write("\nPorcentaje: ");
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.WriteLine(resultadoPorcentaje.ToString("N2") + " %.");
                        altavoz.Speak("Cantidad de agua que hay en el depósito es de " +
                            //resultadoPorcentaje.ToString("N2") + "%.");
                            resultadoPorcentaje + "%.");

                        // Muestra cantidad de agua que hay actualmente y el total.
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.Write("\nLitros de agua: ");
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write(resultadoLitros.ToString("N2"));
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.WriteLine(" / " + litros.ToString("N2") + " L. total de un tubo.");
                        altavoz.Speak("Cantidad de litros de agua en un tubo de " +
                            resultadoLitros.ToString("N2") + "de " +
                            litros.ToString("N2") + " litros total de un tubo.");

                        // Cantidad de tubos sin contar la base conectada, solo tubos independiente.
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.Write("\nCantidad de Litros total por " + cantidadTubos + " tubos: ");
                        Console.ForegroundColor = ConsoleColor.Cyan;
                        Console.Write(cantidadTubosLitros.ToString("N2"));
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.WriteLine(" / " + totalLitros.ToString("N2") + " L.");
                        altavoz.Speak("Cantidad de litros en total por " + cantidadTubos.ToString("N2") +
                            " tubos: " + cantidadTubosLitros.ToString("N2") +
                            " de " + totalLitros.ToString("N2") + " litros.");
                        #endregion
                    }
                }

                catch (FormatException)
                {
                    Console.BackgroundColor = ConsoleColor.Gray;
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Clear();
                    Console.SetCursorPosition(8, 5);
                    Console.Write(@"La cadena de entrada no tiene el
        formato correcto.

        Solo debes introducir números y comas.");
                    Console.CursorVisible = false;
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.ForegroundColor = ConsoleColor.Gray;
                }

                // Pulse cualquier tecla para continuar.
                Console.ReadKey();
            } while (true);
        }
    }
}


En resumen, quiero hacer lo mismo de C#, sin voz y lo más sencillo posible en Arduino IDE.

Saludos.
#123
Hecho, ya crea Archivo.txt, que puede ser cualquiera.

Si me pongo como dices, el tipo de dato, se puede hacer hasta en binario.

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

namespace radioButton_consola_03_cs
{
    class Program
    {
        #region Variables.
        private static readonly string[] TEXTO = new string[]
        {
            "( ) Opción A        ",
            "( ) Opción B        ",
            "( ) Opción C        ",
            "( ) Opción D        ",
            "( ) Opción E        ",
            "( ) Opción F        ",
            "( ) Opción G        ",
            "    SALIR"
        };

        private static int itemSeñalado;

        private static int itemSeleccionado;
        #endregion

        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "RadioButton";

            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5);

            // Fondo azul.
            Console.BackgroundColor = ConsoleColor.Blue;

            // Letras blanco.
            Console.ForegroundColor = ConsoleColor.White;

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

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

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

                // Posición del cursor del título del MENÚ PRINCIPAL.
                Console.SetCursorPosition(0, 0);

                // Título.
                Console.Write("   MENÚ PRINCIPAL   ");

                // Pocisión de la hora.
                Console.SetCursorPosition(4, 2);

                // Formato numérico dd/MM/yyyy.
                Console.Write(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.
        private static void MenuPrincipal()
        {
            bool salir = false;

            // En itemSelecionado:
            // -1 = Sin seleccionar con * ninguna opción.
            // 0 = Seleccionar con * la Opción A.
            // 1 = Seleccionar con * la Opción B.
            // 2 = Seleccionar con * la opción C.
            // 3 = Seleccionar con * la opción D.
            // 4 = Seleccionar con * la opción E.
            // 5 = Seleccionar con * la opción F.
            // 6 = Seleccionar con * la opción G.

            // Capturar tecla para luego validar.
            ConsoleKey tecla;

            // Cada vez que se vuelva al menú, está señalizado con el *.
            itemSeñalado = 0;
            int pagina;

            // Crear archivo y guarda el * seleccioinado en él.
            if (File.Exists("Archivo.txt"))
            {
                string data = File.ReadAllText("Archivo.txt");
                itemSeleccionado = Convert.ToInt32(data);
                //itemSeñalado = itemSeleccionado;
            }

            do
            {
                //******************************************************************
                // Dibujo el menú principal.

                // Limpiar pantalla.
                Console.Clear();

                pagina = 0;
                if (itemSeñalado >= 4)
                {
                    pagina = 4;
                }

                // Recorre la lista de las opciones.
                for (int k = 0; k < 4; k++)
                {
                    Console.SetCursorPosition(0, k);
                    Console.Write(itemSeñalado == k + pagina ? "> " : "  ");
                    Console.Write(TEXTO[k + pagina]);
                    Console.SetCursorPosition(3, k);
                    Console.Write(itemSeleccionado == k + pagina ? "*" : " ");
                }

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

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

                switch (tecla)
                {
                    // Al pulsar Enter, marcas un radioButton con *.
                    case ConsoleKey.Enter:
                        if (itemSeñalado < 7)
                        {
                            itemSeleccionado = itemSeñalado;
                        }
                        salir = (itemSeñalado == TEXTO.Length - 1);

                        // Si sales del programa, escribes en el archivo.
                        //if (salir == true)

                        // Si pulsa Enter, escribes en el archivo.
                        if (tecla == ConsoleKey.Enter)
                        {
                            File.WriteAllText("Archivo.txt", itemSeleccionado.ToString());
                        }

                        break;

                    // Pulsar flecha abajo del teclado.
                    case ConsoleKey.DownArrow:
                        if (++itemSeñalado >= TEXTO.Length)
                        {
                            itemSeñalado = 0;
                            Console.Clear();
                        }
                        else if (itemSeñalado == 4)
                        {
                            Console.Clear();
                        }
                        break;

                    // Pulsar flecha arriba del teclado.
                    case ConsoleKey.UpArrow:
                        if (--itemSeñalado < 0)
                        {
                            itemSeñalado = TEXTO.Length - 1;
                            Console.Clear();
                        }
                        else if (itemSeñalado == 3)
                        {
                            Console.Clear();
                        }
                        break;
                }
                // Uso la tecla escape como salida.
            } while (!salir);
        }
        #endregion
    }
}


Saludos.
#124
Tienes razón.

[youtube=640,360]https://www.youtube.com/watch?v=NlTv8Xv7cW0[/youtube]
#125
Electrónica / Re: Morse
27 Julio 2020, 16:53 PM
Siguen sin ponerse de acuerdo.

Lo de raya, puede ser un estado alto de voltaje, solo que el hombre todavía no ha soltado el dedo.

Saludos.
#126
Hola:

En C++ nativo con Visual Studio Community 2019, tengo este código,  que no se muestra el cursor.

Código (cpp) [Seleccionar]
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.
#include <stdio.h>   // Cambio color de fondo y letras.

using namespace std;
//using std::cout;
//using std::cin;

// Función posición del cursor.
void gotoxy(int x, int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon, dwPos);
}

int main()
{
    // Mostrar caracteres correctamente en pantalla y título de la ventana.
SetConsoleOutputCP(65001);
wchar_t titulo[128];
MultiByteToWideChar(CP_UTF8, 0, "Título de la ventana. Win32 C++ 2019.", -1, titulo, 128);
SetConsoleTitle(titulo);

// Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
SMALL_RECT r = { 0, 0, 49, 9 }; // X = 49, Y = 9.
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);

// Cambio color de 8 (gris), color letras 0 (negro).
//system("color 80");

// Ocultar cursor.
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
cci.bVisible = 0; // 0 oculta. 1 muestra cursor.
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);

// Mostrar textos en pantalla.
cout << "Terminarías. Conocerías. Título. Analógico. \n";
cout << "Muchas gracias mi muy distinguido amigo.";

// Limpiar pantalla.
system("cls");

// Mostrar textos en pantalla.
cout << "Se escribe este texto después de haber " << endl;
cout << "borrado el anterior." << endl;

// Posición del cursor.
gotoxy(5, 5);

cout << "Posición." << endl;

// Ocultar cursor.
CONSOLE_CURSOR_INFO cci2;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci2);
cci2.bVisible = 1; // 0 oculta. 1 muestra cursor.
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci2);

// Esperando pulsar Enter para salir.
cin.get();
return 0;
}


Si quito este código.
Código (cpp) [Seleccionar]
// Cambio color de 8 (gris), color letras 0 (negro).
system("color 80");


Se muestra el cursor parpadeando como siempre.

¿Esto es normal?

Para mi no lo es, una cosa es cambiar el color de la ventana y letras, es independiente al parpadeo del cursor si está activado o no.

Saludos.
#127
Por el tema de la compatibilidad según tengan instalado el office.
#128
Hola:

Antes que nada, no se si esto va aquí.
Hice un ejemplo con C# sobre el cambio de tamaño del array. Quiero ahcer lo mismo pero con Arduino IDE. Lo que se tiene que mostrar en ARduino IDE es en el "Monitor serie", en el cual se usa el comando:

Código C de Arduino IDE:
Serial.println("Se muestra este texto en el Monitor serie.");

El código que tengo abajo de C#, quiero de alguna forma transformarlo en Arduino IDE. En realidad este es un ejemplo tonto para que se entienda lo que hace de agrandar o reducir el tamaño del array en C#, pero quiero hacerlo en C de Arduino IDE.

Código C#:
Código (csharp) [Seleccionar]
sing System;

namespace Cambiar_tamaño_array_consola_02_cs
{
   class Program
   {
       static void Main(string[] args)
       {
           // Título de la ventana.
           Console.Title = "Tamaño del array";

           // Crea e inicializa una nueva matriz de cadenas.
           String[] miArray = {"Hola", "mi", "muy", "distinguido", "amigo",
           "¿Cómo", "estás", "por", "aquí?"};

           // Muestra los valores de la matriz.
           Console.WriteLine(
               "La matriz de cadenas contiene inicialmente los siguientes valores:");
           MostrarIndicesYValores(miArray);

           // Cambiar el tamaño de la matriz a un tamaño más grande (cinco elementos más grandes).
           Array.Resize(ref miArray, miArray.Length + 5);

           // Muestra los valores de la matriz.
           Console.WriteLine("Después de cambiar el tamaño a un tamaño más grande,");
           Console.WriteLine("la matriz de cadenas contiene los siguientes valores:");
           MostrarIndicesYValores(miArray);

           // Cambiar el tamaño de la matriz a un tamaño más pequeño (cuatro elementos).
           Array.Resize(ref miArray, 4);

           // Muestra los valores de la matriz.
           Console.WriteLine("Después de cambiar el tamaño a un tamaño más pequeño,");
           Console.WriteLine("la matriz de cadenas contiene los siguientes valores:");
           MostrarIndicesYValores(miArray);

           // Pulse cualquier tecla para salir.
           Console.ReadKey();
       }

       public static void MostrarIndicesYValores(String[] miArray)
       {
           for (int i = 0; i < miArray.Length; i++)
           {
               Console.WriteLine("   [{0}] : {1}", i, miArray[i]);
           }
           Console.WriteLine();
       }
   }
}


Mostrar captura de C#
:




Saludos.
#129
Electrónica / Re: Morse
27 Julio 2020, 14:12 PM
Entonces. ¿MORSE es analógico o digital?

Parece que la cosa no está clara.
#130
Electrónica / Re: Morse
25 Julio 2020, 23:58 PM
Lo llamo digital entonces, solo era pulsos.