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

#131
.NET (C#, VB.NET, ASP) / Crear archivo excel
25 Julio 2020, 17:41 PM
Hola:

Quiero crear un archivo excel llamado Archivo.xlsx en consola C#.

Los datos son estos.

Código (csharp) [Seleccionar]
h V
1 4,429446918
2 6,264183905
3 7,672027112
4 8,858893836
5 9,904544412
6 10,84988479
7 11,71921499
8 12,52836781
9 13,28834075



Donde pone exactamente

Código (csharp) [Seleccionar]
4,429446918

Tiene este cálculo.
Código (csharp) [Seleccionar]

=RAIZ(2*9,81*A2)


También quiero saber, al menos si me crea gráfico incluido, lo hice a mano abajo, pare que vean de que hablo.


Ver Zoom.

Sin usar ninguna librería, esto ya es más complicado.

Saludos.
#132
Me parece qu eno dejan manipular el Whatsapp por el tema de fraudes y estafas, tambiñen para que no envíe mensajes tipo anuncios automáticos a todo el mundo.
#133
Hola:

Lo que hace el sensor PIR es que si detecta calor en el espacio, suelta una señal por un pin a 5 V que es activado, si es 0 V no ha detectado nada, así de simple. Eso si, otros tiene calibración.

Lo que buscas es otra cosa, con la RaspBerry Pi 4 de 8 GB si se puede hacer de sobra.

http://www.bujarra.com/raspberry-pi-reconocimiento-facial/

Saludos.
#134
Electrónica / Morse
24 Julio 2020, 14:22 PM
Hola:

¿El código morse en digital o analógico y por qué?

Como es del 1844 inventado por Samuel Morse, sobre puntos y rayas, en aquella época, ya unos 175 años, no había nada digital, por eso creo que es analógica, como solo es pulsar pulsadores un punto y otro más tiempo que es raya, solo es haber tensiones si pulsas y no haber nada si dejas de pulsar.

Ya no se que creer.

Saludos.
#135
Hola:

Aquí hay uno de sensor PIR.




[youtube=640,360]https://www.youtube.com/watch?v=kzcv6TrPhMY[/youtube]

Ver proyecto.

Saludos.
#136
Electrónica / Re: web de electronica
12 Julio 2020, 23:43 PM
Se agradece.
#137
Buenas:

Por lo que entiendo. cambiar esto:
Código (cpp) [Seleccionar]
cin >> entrada;
Por esto otro:
Código (cpp) [Seleccionar]
entrada = getch();

En la línea 58 aparecen estos dos errores.

Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Origen   Estado suprimido
Error (activo)   E0137   la expresión debe ser un valor L modificable   Bandeja_consola_nativo_cpp   C:\Users\Meta\Documents\Visual Studio 2019\Projects\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp.cpp   58   IntelliSense   


Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Origen   Estado suprimido
Error   C3863   el tipo de matriz 'char [2]' no es asignable   Bandeja_consola_nativo_cpp   C:\Users\Meta\Documents\Visual Studio 2019\Projects\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp.cpp   58   Compilación   
#138
Muchísimas gracias-
#139
Hola:

Este código funciona a medias. Más bien, no logro situarlo. Está escrito en consola C#.

Lo que hace el programa:

Se usa solo las teclas flechas del teclado y la tecla Enter.

El programa empieza así;


Como puedes ver arriba, puedes escribir con las flechas arriba y abajo letras para poner un nombre. Por ejemplo, voy a poner Hola amigo. Lo puedes ver en la captura de abajo.



Pulsa Enter.
Se muestra el > al lado de ATRÁS. Tal como muestra abajo.


Lo que debe hace en esta parte indicado en la imagen de arriba es:
1. Si toco las flechas del teclado izquierda y derecha, me señala con > Atrás o en GUARDAR.
2. Si pulso las flecha arriba o abajo, puedes volver a editar la palabra "Hola amigo", puedes corregir o escribir otra cosa.
3. Si pulsas Enter donde estabas escribiendo "Hola amigo", vuelves en ATRÁS con el >.
4. Estando en > ATRÁS, si pulsas Enter, muestra un mensaje tal como muestra en la captura de abajo y el programa se acaba ahí.



El problema que no me funciona esta parte y la que voy a indicar ahora tampoco me funciona.
Si estoy en > ATRÁS, al pulsas las flechas derecha o izquierda, debo estar ya en > GUARDAR.

Precisamente no me sale.

A parte de esto, si pulsas Enter cuando estés en > GUARDAR. Se queda guardado el texto "Hola amigo" guardado en una variable que en este caso se llama static string guardarNombre = "";

Se tiene que mostrar la imagen de abajo.


Y se acaba el programa.

Me perdí. Alguna idea como se programa esto.

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

namespace LCD_nombre_archivo_consola_08
{
    class Program
    {
        static string guardarNombre = "";
        static int coordenadaX = 0;
        private static ConsoleKey tecla;

        // Caracteres de este array.
        static readonly char[] roALFANUMERICO = new char[]
        {
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',
            'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
            'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',
            'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','.', ',', '-', '_', ':', ';',
            '¿', '?', '(', ')', '[', ']', '{', '}','=', '$','&', '"', ' '
        };

        // Dirección del carácter del array. El 80 presenta al espacio del array roALFANUMERICO.
        static readonly int[] roINDICE_ARRAY = new int[]
        {
            80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
        };

        private static readonly string[] roTEXTO = new string[] { "ATRÁS", "GUARDAR" };

        static int index = 0;
        static void Main(string[] args)
        {
            // Título de la pantalla.
            Console.Title = "Cambiar nombre";

            Inicio();
        }

        #region Inico.
        private static void Inicio()
        {
            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5); // X

            // Fondo verde, azul, gris.
            Console.BackgroundColor = ConsoleColor.Gray;

            // Letras negras, blanco, negro.
            Console.ForegroundColor = ConsoleColor.Black;

            // Limpiar pantalla.
            Console.Clear();

            Console.SetCursorPosition(0, 0);
            Console.Write("Nombre del relé 1:  ");
            Console.SetCursorPosition(0, 1);
            //Console.Write("AAAAAAAAAAAAAAAA");

            // Recorre todo el índice del array y el de los datos alfanumérico
            // y los rellena.
            for (int i = 0; i < roINDICE_ARRAY.Length; i++)
            {
                Console.Write(roALFANUMERICO[roINDICE_ARRAY[i]]);
            }

            Console.SetCursorPosition(2, 3);
            Console.Write(roTEXTO[0]); // ATRÁS.
            Console.SetCursorPosition(12, 3);
            Console.Write(roTEXTO[1]); // GUARDAR.

            while (true)
            {
                Console.SetCursorPosition(coordenadaX, 1);

                // Almacena cualquier tecla pulsada en la variable key.
                tecla = Console.ReadKey(true).Key;
                switch (tecla)
                {
                    case ConsoleKey.RightArrow:
                        if (coordenadaX < 15)
                        {
                            coordenadaX++;
                        }
                        break;

                    case ConsoleKey.LeftArrow:
                        if (coordenadaX > 0)
                        {
                            coordenadaX--;
                        }
                        break;

                    case ConsoleKey.UpArrow:
                        roINDICE_ARRAY[coordenadaX]++;
                        if (roINDICE_ARRAY[coordenadaX] >= roALFANUMERICO.Length)
                        {
                            roINDICE_ARRAY[coordenadaX] = 0;
                        }
                        Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);
                        break;

                    case ConsoleKey.DownArrow:
                        roINDICE_ARRAY[coordenadaX]--;
                        if (roINDICE_ARRAY[coordenadaX] < 0)
                        {
                            roINDICE_ARRAY[coordenadaX] = roALFANUMERICO.Length - 1;
                        }
                        Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);
                        break;

                    case ConsoleKey.Enter:
                        Console.SetCursorPosition(1, 3);
                        Console.CursorVisible = false;
                        Console.Write(">");

                        while (true)
                        {
                            tecla = Console.ReadKey(true).Key;

                            switch (tecla)
                            {
                                case ConsoleKey.RightArrow:
                                case ConsoleKey.LeftArrow:
                                    index = 1 - index;
                                    break;

                                case ConsoleKey.UpArrow:
                                case ConsoleKey.DownArrow:
                                    Console.SetCursorPosition(coordenadaX, 1);
                                    break;

                                case ConsoleKey.Enter:
                                   
                                    break;
                            }

                            for (int a = 0; a < 2; a++)
                            {
                                Console.SetCursorPosition(1 + (10 * a), 3);
                                if (a == index)
                                {
                                    Console.Write(">");
                                }
                                else
                                {
                                    Console.Write(" ");
                                }
                            }

                            if (index == 0)  // se pulsó Atrás
                            {
                                Atras();
                                //break;  // vuelve a la edición de letras
                            }

                            if (index == 1)  // se pulsó Guardar
                            {
                                Guardar();
                            }
                        }
                }
            }
        }
        #endregion

        private static void Atras()
        {
            Console.Clear();
            Console.SetCursorPosition(0, 1);
            Console.Write("HAS PULSADO ATRÁS   ");
            Console.ReadKey(); // Pulse cualquier tecla para salir.
        }

        private static void Guardar()
        {
            Console.Clear();
            Console.SetCursorPosition(0, 1);
            Console.Write("HAS GUARDADO       ");
            for (int a = 0; a < roINDICE_ARRAY.Length; a++)
            {
                guardarNombre += roALFANUMERICO[roINDICE_ARRAY[a]].ToString();
            }
            Console.SetCursorPosition(0, 2);
            Console.Write(guardarNombre);
        }
    }
}


Gracias.
#140
Buenas:

Tengo este código en C++ nativo, en el cual aún no logro que funcione tal como lo quiero. Lo que hace este código es, que si pulsas la letra A o a, se abre la bandeja del lector del disco, si pulsas C o c se cierra.

Código C++ nativo:
Código (cpp) [Seleccionar]
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.

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(void)
{
// Mostrar caracteres correctamente en pantalla y título de la ventana.
SetConsoleOutputCP(65001);
wchar_t titulo[128];
MultiByteToWideChar(CP_UTF8, 0, "Consola C++ nativo 2019.", -1, titulo, 128);
SetConsoleTitle(titulo);

// Variable.
char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.

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

// 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);

// Muestra textos en pantalla.
cout << "Control bandeja del lector: " << endl << endl;
cout << "A - Abrir bandeja." << endl;
cout << "C - Cerrar bandeja." << endl;
cout << "===========================" << endl;

while (true)
{


// Aquí introduces letras A, a, C y c.
cin >> entrada;
cout << "\n" << endl;

// Abrir bandeja.
if ((entrada[0] == 'a') || (entrada[0] == 'A'))
{
// Posición del cursor.
gotoxy(0, 6);
cout << "Abriendo..." << endl << endl; // Muestra texto en pantalla.
mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
gotoxy(0, 6);
cout << "Abierto.   " << endl << endl; // Muestra texto en pantalla.
}

// Cerrar bandeja.
else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
{
gotoxy(0, 6);
cout << "Cerrando..." << endl << endl; // Muestra texto en pantalla.
mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
gotoxy(0, 6);
cout << "Cerrado.   " << endl << endl; // Muestra texto en pantalla.
}

// Si haz pulsado otro caracter distinto de A, C, a y c aparece
else
{
gotoxy(0, 6);
// este mensaje.
cout << "Solo pulsa A o C." << endl << endl;
}

}
return EXIT_SUCCESS;
}


En el código de C# si funciona tal como lo quiero, pongo un ejemplo abajo.

Código C#:
Código (c#) [Seleccionar]
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace Bandeja_consola_cs
{
    class Program
    {
        [DllImport("winmm.dll")]
        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
        int uReturnLength, IntPtr hwndCallback);
        public static StringBuilder rt = new StringBuilder(127);
        public static void DoEventsAbriendo()
        {
            Console.SetCursorPosition(0, 6);
            Console.Write("Abriendo...");
        }
        public static void DoEventsCerrando()
        {
            Console.SetCursorPosition(0, 6);
            Console.Write("Cerrando...");
        }
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Consola C# 2017";
            // Tamaño ventana consola.
            Console.WindowWidth = 29; // X. Ancho.
            Console.WindowHeight = 8; // Y. Alto.
            // Cursor invisible.
            Console.CursorVisible = false;
            // Posición del mansaje en la ventana.
            Console.SetCursorPosition(0, 0);
            Console.Write(@"Control bandeja del lector:
A - Abrir bandeja.
C - Cerrar bandeja.
===========================");
            ConsoleKey key;
            //Console.CursorVisible = false;
            do
            {
                key = Console.ReadKey(true).Key;
                string mensaje = string.Empty;
                //Asignamos la tecla presionada por el usuario
                switch (key)
                {
                    case ConsoleKey.A:
                        // mensaje = "Abriendo...";
                        Console.SetCursorPosition(0, 6);
                        DoEventsAbriendo();
                        mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
                        mensaje = "Abierto.   ";
                        break;
                    case ConsoleKey.C:
                        // mensaje = "Cerrando...";
                        Console.SetCursorPosition(0, 6);
                        DoEventsCerrando();
                        mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero);
                        mensaje = "Cerrado.   ";
                        break;
                }
                Console.SetCursorPosition(0, 6);
                Console.Write(" ");
                Console.SetCursorPosition(0, 6);
                Console.Write(mensaje);
            }
            while (key != ConsoleKey.Escape);
        }
    }
}


Lo que hace el código C# exactamente todos estos comportamientos.

1. Te pregunta si pulsas teclas, por ejemplo la A para abrir la bandeja y C para cerrar, independientemente si es mayúscula o no. Funciona todo.

2. Desde que pulse cualquier letra del teclado que non corresponda la A, a, C y la c, el programa no hace nada, como debe ser.

3. Si quiero abrir la bandeja del lector y pulso la tecla A, desde que pulse la tecla, se abre la bandeja.

4. Desde que pulse la tecla A, dice el mensaje "Abriendo...", cuando esté abierto la bandeja del todo, dice "Abierto.".

Lo que hace el código C++ nativo y no quiero.


1. Pulso la tecla A o la a, y aparece escrito en la consola.

2. Luego tengo que pulsar la tecla Enter para que la letra A o la a, funcione el comando. Entonces ya puede abrir la bandeja y mostrar los mensajes Abriendo... y Aabierto.

La pregunta es. ¿Se puede corregir este comportamiento de C++ nativo que sea igual al ejemplo de C#?

Saludos.