• Jueves 28 de Marzo de 2024, 15:55

Mostrar Mensajes

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


Mensajes - Meta

Páginas: [1] 2 3 ... 6
1
C# / Que aparezca el mensaje en pantalla
« en: Martes 11 de Junio de 2019, 21:38 »
Buenas:

En la consola C# me aparece el asunto a la hora de leer el último email del, pero no aparece el mensaje. Quiero que me aparezca en pantalla tanto el asunto y el mensaje.

No se su código del pop3 para leer mensajes, si me envian un mensaje nuevo y luego ejecuto el programa, me apecere así sin mensaje porque no se como programarlo.


Ver zoom.

Código C#:
Código: [Seleccionar]
using System;
using System.Collections.Generic;
using OpenPop.Pop3;

namespace Recibir_email_Consola_01
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Recibir e-mail con Consola C#";

            // Tamaño ventana consola.
            Console.WindowWidth = 80; // X. Ancho.
            Console.WindowHeight = 40; // Y. Alto.

            // Cursor invisible.
            Console.CursorVisible = false;

            // Título del programa.
            Console.WriteLine("\t\t----------------------------------------");
            Console.WriteLine("\t\t\tRecibir Correo Electrónico");
            Console.WriteLine("\t\t----------------------------------------");

            try
            {
                ConnectPop3 oC = new ConnectPop3();

                List<OpenPop.Mime.Message> lstMessages = oC.GetMessages();


                if (lstMessages != null)
                {

                    foreach (var oMessage in lstMessages)
                    {
                        Console.WriteLine("ASUNTO:  " + oMessage.Headers.Subject + "\n"); // Asunto.
                                                //Console.WriteLine();
                        Console.WriteLine("MENSAJE: "); // Aquí se pone código del mensaje que no se cual es.
                    }
                }
                Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
                Console.WriteLine();
                Console.WriteLine("FIN DEL PROGRAMA.");
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }

    public class ConnectPop3
    {
        public string email = "celltium@gmail.com";
        public string contraseña = "g0923490xgh0945g450Xj4025g"; // Ficticio.
        public int puerto = 995;
        public bool usarSLL = true;
        public string Hostame = "pop.gmail.com";

        public List<OpenPop.Mime.Message> GetMessages()
        {
            using (Pop3Client oClient = new Pop3Client())
            {
                oClient.Connect(Hostame, puerto, usarSLL);
                oClient.Authenticate(email, contraseña);

                int messageCount = oClient.GetMessageCount();
                List<OpenPop.Mime.Message> lstMessages = new List<OpenPop.Mime.Message>(messageCount);

                for (int i = messageCount; i > 0; i--)
                {
                    lstMessages.Add(oClient.GetMessage(i));
                }

                return lstMessages;
            }
        }
    }
}

Lo que si le logrado es poner email, fecha y algunos más datos, precisamente el que más quiero que es el mensaje no se como hacerlo o como buscarlo.

¿Alguna idea?

Saludos.

2
C# / ¿Cómo entrar en las opciones del menú?
« en: Martes 5 de Febrero de 2019, 20:36 »
Hola:

Usando el modo consola de C# 2017. Hice un mini menú de opciones gracias a los compañeros de este foro. Puedo seleccionar con los botones arriba y abajo las opciones.

Se usa formato de la pantalla 16x2.

En este caso lo que hace es seleccionar opciones en el menú, pero no hace nada más. Las opciones en el menú se llama.

Menú ▲▼

1. UNO
2. DOS
3. TRES
4. CUATRO
5. ESC - SALIR

Por ejemplo, seleccionamos el 3. TRES. Pulse Enter y justo una línea de abajo dice:

3. TRES ▲▼

Después de pulsar Enter, se sustituye el texto 3. TRES ▲▼ por otro abajo.

Alum. ●●●●●●○○

En el cual podemos hacer cosas, estando ya en la subopción indicado arriba. Si pulsamos Enter, de Alum. ●●●●●●○○ vuelve al menú principal en este caso donde estaba, llamdo 3. TRES ▲▼. Si etás todavía en Alum. ●●●●●●○○, puedes pulsar la teclas arriba y abajo para mover las opciones indicadas de esta manera mostrada abajo.

Son 8 puntos. Lo que hace es alumbrar el brillo de una luz, el brillo más débil es de esta manera. Alum. ○○○○○○○○. El brillo máximo es de otra manera, Alum. ●●●●●●●●. Con las flechas del teclado arriba y abajo, seleccionamos un punto, de 1 hasta 8. La mitad sería así: Alum. ●●●●○○○○. Pulsa enter, guarda la configuración en una variable para que la recuerde y sale al menú principal.

Espero que se entienda lo que quiero hacer.

Dejo el código base, solo selecciona opciones pero al pulsar Enter tiene que hacer al menos el 3. TRES.

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

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

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

            // Y altura.
            Console.WindowHeight = 2;

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

            // Contador de teclas y navegador.
            int contador = 0;

            // Capturar tecla para luego validar.
            ConsoleKey tecla;

            do
            {

                //******************************************************************
                // Dibujo el menú.
               
                // Rellenar fondo verde.
                Console.BackgroundColor = ConsoleColor.Green;

                // Letras negras.
                Console.ForegroundColor = ConsoleColor.Black;
               
                // Limpiar pantalla.
                Console.Clear();

                if (contador == 0)
                {
                    Console.SetCursorPosition(0, 0);
                    Console.Write("MENú ▲▼");
                }

                if (contador == 1)
                {
                    Console.SetCursorPosition(0, 0);
                    Console.WriteLine("1.   UNO");
                }

                if (contador == 2)
                {
                    Console.SetCursorPosition(0, 0);
                    Console.WriteLine("2.   DOS");
                }

                if (contador == 3)
                {
                    Console.SetCursorPosition(0, 0);
                    Console.WriteLine("3.   TRES");
                }

                if (contador == 4)
                {
                    Console.SetCursorPosition(0, 0);
                    Console.WriteLine("4.  CUATRO");
                }

                if (contador == 5)
                {
                    Console.SetCursorPosition(0, 0);
                    Console.WriteLine("5. ESC = SALIR");
                }

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

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

                //validar el tipo de tecla
                if (tecla == ConsoleKey.DownArrow)
                {
                    contador += 1;
                }

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

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

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

                // Uso la tecla escape como salida.
            } while (tecla != ConsoleKey.Escape);
        }
    }
}

Captura:


Una cosa a tener en cuenta. En vez de aparecer

MENú ▲▼

En pantalla, lo primero que debe aparecer en el programa en HOLA. Si pulsas Enter, entonces ya aparece el Menú. Si pulsa salir apareces en HOLA. Luego hacer lo demás con el 3. TRES indicado arriba.

¿Alguna ayuda?

Saludos.

3
Visual Basic para principiantes / Recibir datos desde el puerto serie VB6
« en: Domingo 5 de Abril de 2015, 20:40 »
Hola a todos y a todas:

Gracias a muchos sitios he logrado enviar comandos o datos al puerto serie para que Arduino lo entienda, ya se puede apagar y encender un Led.

En estos momentos me falta lograr que desde el puerto serie con VB 6 me lleguen los datos y se muestre en el componente Text como indica esta imagen.



Su código es hecho hasta el momento es:
Código: [Seleccionar]
Private Sub Form_Load()
    With Me.ComboBoxCOM
        Set WMIObjectSet = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_PnPEntity")
        For Each wmiobject In WMIObjectSet
            If InStr(wmiobject.Name, "COM") Then
                ComboBoxCOM.AddItem wmiobject.Name
               
                Dim nCom%   ' Buscamos el número del puerto:
                nCom = InStrRev(wmiobject.Name, "COM", , vbTextCompare)
                nCom = Val(Mid(wmiobject.Name, nCom + 3))
   
                ComboBoxCOM.ItemData(ComboBoxCOM.NewIndex) = nCom
            End If
        Next
        Set WMIObjectSet = Nothing
               
        If ComboBoxCOM.ListCount = 0 Then
            MsgBox "No se encontraron puertos COM."
            Exit Sub
        End If

        ' Para seleccionar el primer puerto encontrado:
        ComboBoxCOM.ListIndex = 0
    End With
End Sub

Private Sub ComboBoxCOM_Click()
    ' Configurar MSComm
    With Me.ComboBoxCOM
        MSComm_Puerto_Serie.CommPort = ComboBoxCOM.ItemData(ComboBoxCOM.ListIndex)
    End With
End Sub

' Si ya has seleccionado un puerto en el comboBox
' Si pulsas conectar abre el puerto y si no lo cierra.
Private Sub Command_CONECTAR_Click()
    If Not MSComm_Puerto_Serie.PortOpen Then
       MSComm_Puerto_Serie.PortOpen = True ' Abrir puerto serie.
       Command_CONECTAR.Caption = "DESCONECTAR" ' Mostrar texto en el botón.
       ComboBoxCOM.Enabled = False
       Command_Led_8_ON.Enabled = True ' Activar botón ON.
       Command_Led_8_OFF.Enabled = True ' Activar botón OFF.
    Else
       MSComm_Puerto_Serie.PortOpen = False ' Cerrar puerto serie.
       Command_CONECTAR.Caption = "CONECTAR" ' Mostrar texto en el botón.
       ComboBoxCOM.Enabled = True
       Command_Led_8_ON.Enabled = False ' Desactivar botón ON.
       Command_Led_8_OFF.Enabled = False ' Desactivar botón OFF.
    End If
End Sub

Private Sub Command_Led_8_OFF_Click()
' Envía este cadena de carácter por el puerto serie.
    MSComm_Puerto_Serie.Output = "Led_8_OFF"
End Sub

Private Sub Command_Led_8_ON_Click()
' Envía este cadena de carácter por el puerto serie.
    MSComm_Puerto_Serie.Output = "Led_8_ON"
End Sub

Aquí dejo un enlace temporal de un tutorial en pdf para novatos de como hacer su propia interfaz con VB 6.
https://www.dropbox.com/s/4s6txlfkit9d1xv/Tutorial%20VB6%20puertoCOM.pdf?dl=0

Como dije antes, necesito una ayudita sobre recibir datos desde el puerto serie para completas este tutorial.

¿Estás dispuesto a ayudar?

Un cordial saludo.

PD: Tengo otro  con VB .net, C++, C# y Java de lo mismo en PDF, el que lo quiera lo hace saber y pongo unenlace temporal aquí mismo.

PD2: Dejo claro que el tutorial está aún incompelto, sobre todo me falta la parte de la electrónica y en tutorial de VB 6 será colocado dentro del mismo pdf que los demás lenguajes.

4
C# / Re:C# y arduino no se ejecutan las instrucciones de la tarjeta
« en: Lunes 30 de Marzo de 2015, 17:22 »
Hola:

Te dejo el tutorial del 2008 portado a pdf con todo detalle, eso si, contola Visual C# y el PIC.
http://electronica-pic.blogspot.com.es/2008/11/electrnica-pic.html

En este mismo momento, estoy haciendo un tutorial controlando Arduino con Visual C#/C++/VB .net / VB 6 y Java.
El que lo quiera, me puede enviar su correo electrónico y le envío lo que tengo hecho hasta el momento, a pesar que tiene ejemplos completos, aún me falta la parte de Arduino. Puedes valorar el tutorial en PDF y me cuentan que opina para mejorarlo.



Saludos.

5
C# / No consigo slocuionar estos errores en C# 2013
« en: Lunes 30 de Marzo de 2015, 17:14 »
Hola:

Estoy creando un menú sobre puerto serie.
Debe aparecer el menú principal al iniciar el programa.


Si lograse ejecutarlo, pulsa la tecla número 2 del teclado y tienes que configurar el puerto serie como quieras o lo dejas predeterminado.

Código y errores.
Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.IO.Ports; // No olvidar.
using System.Threading;

namespace PuertoCOM_CS_PRUEBA
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().Modal();
        }

        void Modal()
        {
            for (; ; )
            {
                Console.Title = "Interfaz puerto serie - v 0.04"; // Mostrar título en la ventana de la consola.

                string Menu_Principal = @"
╔═════════════════════════════════════════════════════════════════════════════╗
║                               MENÚ PRINCIPAL                                ║
╠═════════════════════════════════════════════════════════════════════════════╣
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                            0. Salir.                                        ║
║                            1. Interfaz.                                     ║
║                            2. Configuración.                                ║
║                            3. Guardar configuración.                        ║
║                            4. Información desde el dispositivo.             ║
║                            5. Ayuda.                                        ║
║                            6. Acerca de ...                                 ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
║                                                                             ║
╚═════════════════════════════════════════════════════════════════════════════╝
";
                Console.CursorVisible = false; // Ocultar cursor.
                Console.Clear(); // Limpiar pantalla.
                Console.Write(Menu_Principal); // Mostrar menú principal.
                ConsoleKeyInfo switchExpression = Console.ReadKey(); // Detactar una tecla del teclado.

                switch (switchExpression.KeyChar)
                {
                    case '0':
                        return;

                    case '1':
                        new Interfaz().Modal_Interfaz();
                        break;

                    case '2':
                        new Configuracion().Modal_Configuracion();
                        break;

                    case '3':
                        new Guardar_Configuracion().Modal_Guardar_Configuracion();
                        break;

                    case '4':
                        new Informacion().Modal_Informacion();
                        break;

                    case '5':
                        new Ayuda().Modal_Ayuda();
                        break;

                    case '6':
                        new Acerca_de().Modal_Acerca_de();
                        break;

                    default:
                        Console.WriteLine("No has elegido ninguna opción. Vuelva teclear del 0 al 68.");
                        break;
                }
            }

        }
    }

    class Interfaz
    {
        public void Modal_Interfaz()
        {
            for (; ; )
            {
                Console.Clear();
                Console.WriteLine("===== INTERFAZ =====");
                Console.WriteLine("Pulse 0 para vovler al menú principal.");

                ConsoleKeyInfo op = Console.ReadKey();

                switch (op.KeyChar)
                {
                    case '0':
                        return;

                    default:
                        break;
                }
            }
        }
    }



    class Configuracion
    {
        public void Modal_Configuracion()
        {
            for (; ; )
            {
                Console.Clear();
                Console.WriteLine(@"
┌─────────────────────────────────────────────────────────────────────────────┐
│                               CONFIGURACIÓN                                 │
└─────────────────────────────────────────────────────────────────────────────┘

");
                //Console.WriteLine("Pulse 0 para vovler al menú principal.");


                Puerto_serie();


                ConsoleKeyInfo op = Console.ReadKey();

                switch (op.KeyChar)
                {
                    case '0':
                        return;

                    default:
                        break;
                }
            }
        }


        private void Puerto_serie()
        {
             bool _continue;
             SerialPort _serialPort;

            string name;
            string message;

            StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
            Thread readThread = new Thread(Read);


            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            _serialPort = new SerialPort();

            // Permitir al usuario configurar las propiedades adecuadas.
            _serialPort.PortName = SetPortName(_serialPort.PortName);
            _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
            _serialPort.Parity = SetPortParity(_serialPort.Parity);
            _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
            _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
            _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);

            // Establecer los tiempos de espera de lectura / escritura.
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;

            _serialPort.Open();
            _continue = true;
            readThread.Start();

            Console.Write("Name: ");
            name = Console.ReadLine();

            Console.WriteLine("Type QUIT to exit");

            while (_continue)
            {
                message = Console.ReadLine();

                if (stringComparer.Equals("quit", message))
                {
                    _continue = false;
                }
                else
                {
                    _serialPort.WriteLine(
                        String.Format("<{0}>: {1}", name, message));
                }
            }

            readThread.Join();
            _serialPort.Close();
        }



        public static void Read()
        {
            while (_continue)
            {
                try
                {
                    string message = _serialPort.ReadLine();
                    Console.WriteLine(message);
                }
                catch (TimeoutException) { }
            }
        }

        // Mostrar los valores de puerto y pedirle al usuario entrar en un puerto.
        public static string SetPortName(string defaultPortName)
        {
            string portName;

            Console.WriteLine("Puertos disponibles:");
            foreach (string s in SerialPort.GetPortNames())
            {
                Console.WriteLine("   {0}", s);
            }

            Console.Write("Introducir el valor de puerto COM (Predeterminado: {0}): ", defaultPortName);
            portName = Console.ReadLine();

            if (portName == "" || !(portName.ToLower()).StartsWith("com"))
            {
                portName = defaultPortName;
            }
            return portName;
        }
        // Visualizar valores BaudRate y pedirle al usuario introducir un valor.
        public static int SetPortBaudRate(int defaultPortBaudRate)
        {
            string baudRate;

            Console.Write("Velocidad en baudios(predeterminado:{0}): ", defaultPortBaudRate);
            baudRate = Console.ReadLine();

            if (baudRate == "")
            {
                baudRate = defaultPortBaudRate.ToString();
            }

            return int.Parse(baudRate);
        }

        // Valores PortParity pantalla y pedirle al usuario que introduzca un valor.
        public static Parity SetPortParity(Parity defaultPortParity)
        {
            string parity;

            Console.WriteLine("Opciones de paridad disponibles:");
            foreach (string s in Enum.GetNames(typeof(Parity)))
            {
                Console.WriteLine("   {0}", s);
            }

            Console.Write("Introducir el valor de paridad (Predeterminado: {0}):", defaultPortParity.ToString(), true);
            parity = Console.ReadLine();

            if (parity == "")
            {
                parity = defaultPortParity.ToString();
            }

            return (Parity)Enum.Parse(typeof(Parity), parity, true);
        }
        // Mostrar DataBits valores y pedirle al usuario que introduzca un valor.
        public static int SetPortDataBits(int defaultPortDataBits)
        {
            string dataBits;

            Console.Write("Introducir el valor de DataBits (Predeterminado: {0}): ", defaultPortDataBits);
            dataBits = Console.ReadLine();

            if (dataBits == "")
            {
                dataBits = defaultPortDataBits.ToString();
            }

            return int.Parse(dataBits.ToUpperInvariant());
        }

        // Mostrar StopBits valores y pedirle al usuario que introduzca un valor.
        public static StopBits SetPortStopBits(StopBits defaultPortStopBits)
        {
            string stopBits;

            Console.WriteLine("Opciones StopBits disponibles:");
            foreach (string s in Enum.GetNames(typeof(StopBits)))
            {
                Console.WriteLine("   {0}", s);
            }

            Console.Write("Introducir el valor de StopBits (None (Ninguno) no es compatible y \n" +
             "plantea una ArgumentOutOfRangeException. \n (Default: {0}):", defaultPortStopBits.ToString());
            stopBits = Console.ReadLine();

            if (stopBits == "")
            {
                stopBits = defaultPortStopBits.ToString();
            }

            return (StopBits)Enum.Parse(typeof(StopBits), stopBits, true);
        }
        public static Handshake SetPortHandshake(Handshake defaultPortHandshake)
        {
            string handshake;

            Console.WriteLine("Opciones de toma de contacto disponibles:");
            foreach (string s in Enum.GetNames(typeof(Handshake)))
            {
                Console.WriteLine("   {0}", s);
            }

            Console.Write("Terminar valor Handshake (Predeterminado: {0}):", defaultPortHandshake.ToString());
            handshake = Console.ReadLine();

            if (handshake == "")
            {
                handshake = defaultPortHandshake.ToString();
            }

            return (Handshake)Enum.Parse(typeof(Handshake), handshake, true);
        }
    }

    class Guardar_Configuracion
    {
        public void Modal_Guardar_Configuracion()
        {
            for (; ; )
            {
                Console.Clear();
                Console.WriteLine("===== GUARDAR CONFIGURACIÓN =====");
                Console.WriteLine("Pulse 0 para vovler al menú principal.");

                ConsoleKeyInfo op = Console.ReadKey();

                switch (op.KeyChar)
                {
                    case '0':
                        return;

                    default:
                        break;
                }
            }
        }
    }

    class Informacion
    {
        public void Modal_Informacion()
        {
            for (; ; )
            {
                Console.Clear();
                Console.WriteLine("===== INFORMACION =====");
                Console.WriteLine("Pulse 0 para vovler al menú principal.");

                ConsoleKeyInfo op = Console.ReadKey();

                switch (op.KeyChar)
                {
                    case '0':
                        return;

                    default:
                        break;
                }
            }
        }
    }

    class Ayuda
    {
        public void Modal_Ayuda()
        {
            for (; ; )
            {
                Console.Clear();
                Console.WriteLine("===== AYUDA =====");
                Console.WriteLine("Pulse 0 para vovler al menú principal.");

                ConsoleKeyInfo op = Console.ReadKey();

                switch (op.KeyChar)
                {
                    case '0':
                        return;

                    default:
                        break;
                }
            }
        }
    }

    class Acerca_de
    {
        public void Modal_Acerca_de()
        {
            for (; ; )
            {
                Console.Clear();
                Console.WriteLine("===== ACERCA DE ... =====");
                Console.WriteLine("Pulse 0 para vovler al menú principal.");

                ConsoleKeyInfo op = Console.ReadKey();

                switch (op.KeyChar)
                {
                    case '0':
                        return;

                    default:
                        break;
                }
            }
        }
    }
}

Error   1   El nombre '_continue' no existe en el contexto actual   C:\Users\Usuario\Documents\Visual Studio 2013\Projects\PuertoCOM_CS_PRUEBA\PuertoCOM_CS_PRUEBA\Program.cs   212   20   PuertoCOM_CS_PRUEBA



Error   2   El nombre '_serialPort' no existe en el contexto actual   C:\Users\Meta\Documents\Visual Studio 2013\Projects\PuertoCOM_CS_PRUEBA\PuertoCOM_CS_PRUEBA\Program.cs   216   38   PuertoCOM_CS_PRUEBA


Un cordial saludo.

6
C# / Leer variables de un proceso
« en: Lunes 17 de Marzo de 2014, 21:19 »
Hola:

Si abro una aplicación, con Cheat Engine puede buscar las variables de un juego. Son 3, se llaman Vida, Balas y Maná. Al menos quiero centrarme en la variable Vida, cuya dirección se puede ver abajo en "2. VIDA" ya encontrada.



Usando el lenguaje C# en modo consola, preferiblemente con Windows Form, el más que les guste, quiero lograr leer esas variables de ese proceso y mostrarlo C# en tiempo real, es decir, si el juego tiene 100 Vidas, en tu aplicación C# debe aprecer también 100, si de repente tienes 95 en el juego o proceso, también debe aparecer 95 en tu aplicación.

Hace un tiempo estuve con ello bajo C++ 2013 y que va, me pego media vida y encima creando dll.

Al menos si alguien es capaz de enseñar como se hace realmente. O algún ejemplo si es posible y entendible.

Saludo.

7
C# / Saber que ejecutable o lenguaje es.
« en: Miércoles 9 de Febrero de 2011, 02:39 »
Hola:

Haciendo un ejemplo tonto cualquiera sea con el VB .net o el C# 2010 Express. Creo un botón con un mensaje. Dentro del Form agrego un label y un botón que al pulsarlo muestre Hola mundo por poner un ejemplo sencillo.

¿Hay alguna forma de examinar con cual lenguaje se ha programado ese ejecutable .exe?

Se que puedo cambiar los textos con un editor hexadecimal, también puedo cambiar la versión y nombre de los botones y versiones del programa, cosas así. No se si habrá programa ya hechos para modificar o entender que se ha hecho con ese .exe o al menos hacer un programa nosotros mismo muy sencillo para detectar abrir un .exe y que sepa de qué lenguaje es, otro ejemplo, poner una imagen en el centro de un form1, cosas así.

¿Es posible?

Saludo.

8
Programación de Aplicaciones para Dispositivos / Bloquear PIC adrede
« en: Jueves 23 de Diciembre de 2010, 19:01 »
Hola:

Me han llamado algunos conocidos que dicen pagarme por hacerle un trabajo al PIC. Les comenté que depende de lo laborioso y majadero lo hago o no. Quieren que les de todo completo, los esquemas ya lo tienen ellos. Se me ocurre hacer una parte del código aprovechando la EEPROM interna que al usarlo una determinadas de veces el PIC quede bloqueado, hasta que no me paguen sabrán que la única forma es reprogramarlo. Ya me la han querido jugar.

La otra opción es buscarse la vida o ir a por otro siempre que no estén apurado.

Otra técnica que hay que hacer es si el PIC que me dan para programarlo no tiene EEPROM. Lo que puedo hacer es guardar un valor en la RAM, cuando haga una serie de funciones determinatas, por ejemplo, si haz pulsado el mismo botón 5 veces, el PIC se bloquea porque lo pongo a modo goto $, o le hago un desbordamiento de pila. Si te descuidas tienen un truco, que si pulsa Reset vuelve a empezar y les funciona. Lo bueno del 16F88 que puede desactivar el Reset y no les funcionará.

Si conocen alguna técnica más las pueden contar por aquí.

Felices fiestas 2010.

9
C# / Re: Programar un IC por puerto serie
« en: Domingo 19 de Diciembre de 2010, 20:19 »
Muy buenas:

Gracias por responder. Con razón que nunca podía grabar nada, ni de broma.

he encontrado alguna información en san google y hay que leer bastante. Parece ser un reto eso de grabar PIC de esa manera.
http://www.iearobotics.com/proyectos/cu ... 4/ct4.html
viewtopic.php?f=74&t=19162

Haber si somos capaces entre todos grabar y leer un PIC16F84A y 16F88 aunque sea. En la hoja de datos del PDF página 149 hay un buen esquema.
http://ww1.microchip.com/downloads/en/d ... 30487c.pdf

Salu2.

10
C# / Programar un IC por puerto serie
« en: Domingo 19 de Diciembre de 2010, 17:23 »
Hola:

He estado mirando programas de este tipo como ic-prog y winpic800. Siento curiosidad como hacen para enviar un archivo a los PIC por puerto serie. Se enviar tramas de bytes y texto pero no logro que un archivo .hex de los PIC se meta dentro.

 Uso el TE20:


Quiero hacer una interfaz sencilla, con tal de enviar el .hex y leerlo desde el TE20x. El código fuente que he hecho hasta ahora no me funciona.

Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. using System.IO.Ports; // No olvidar estos using.
  11.  
  12. //http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/86149304-c26f-4dcf-b003-198a8879decf
  13.  
  14. namespace RS232_a
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public Form1()
  19.         {
  20.             InitializeComponent();
  21.         }
  22.  
  23.         private void button_Abrir_Click(object sender, EventArgs e)
  24.         {
  25.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  26.                 {
  27.                     textBox1.Text = openFileDialog1.FileName;
  28.                 }
  29.  
  30.         }
  31.  
  32.         private void button_Enviar_Click(object sender, EventArgs e)
  33.         {
  34.             serialPort1.Open();
  35.             byte[] mBuffer = Encoding.ASCII.GetBytes(textBox1.Text);
  36.             serialPort1.Write(mBuffer, 0, mBuffer.Length);
  37.             serialPort1.Close();
  38.             MessageBox.Show("Enviado.");
  39.         }
  40.     }
  41. }
  42.  
  43.  

Saludo.

11
Microcontroladores / Cambiar de un código a otro de PIC. Temprorizador.
« en: Sábado 18 de Diciembre de 2010, 14:32 »
Hola:

Estoy pasando si es posible todos los ejercicios poco a poco del 16F84A al 16F88. Cuando acabe todos los subo con esquemas de Proteus incluidos.

Precisamente no logro hacer funcionar el temporizador con el 16F88. Antes que nada, he modificado los tiempos que tenías del 16F84A como máximo 4:15 desde el LCD y ahora se puede hacer hasta 99:99. Te paso un adjunto de lo que he hecho hasta el momento. Funciona la parte cuando pulsa el botón modo, pones al menos 15 segundos y vuelves a poner modos, cuando quieres activar la cuenta atrás no se activa, a partir de ahí no te responde nada. He intentado por varios medios y he logrado lo que he logrado, hasta ahí no paso.

DataSheet:
PIC16F88
http://ww1.microchip.com/downloads/en/d ... 30487c.pdf

Descarga: (Código fuente y esquema Proteus).
https://sites.google.com/site/metaconta ... ects=0&d=1

Felices fiestas 2010.

12
Microcontroladores / Re: Instrucciones De La Programacion Del Pic 16f84
« en: Martes 7 de Diciembre de 2010, 07:33 »
A veces me he dado cuenta que BANKSEL no funciona o no es fiable al 100 % o simplemente no se usarlo bien. En esas cosas de cambiar bancos mejor usar macros.

13
Python / Las constante K.
« en: Jueves 28 de Octubre de 2010, 15:50 »
Hola:

Viendo este ejercicio.
Ver ejercicio

No se si he interpretado bien lo que me pide y siguiendo los ejemplos del PDF he modificado este código.

Código: Python
  1. cadena = raw_input('Escribe una frase: ')
  2. while cadena != '':
  3.     cambios = 0
  4.     for i in range(1, len(cadena)):
  5.         if cadena[i] == ' ' and cadena[i-1] != ' ':
  6.             cambios = cambios + 1
  7.  
  8.     if cadena[-1] == ' ':
  9.         cambios = cambios - 1
  10.  
  11.     palabras = cambios + 1
  12.     print 'Palabras:', palabras, 'palabras y', i, 'carácteres.'
  13.  
  14.     cadena = raw_input('Escribe una frase: ')
  15.  

Su resultado es este.
Citar
Escribe una frase: Vale más una imagen, que mil palabras.
Palabras: 7 palabras y 38 carácteres.
Escribe una frase:

¿Qué opinas?

;)

14
Python / Re: [Python] - mdc
« en: Lunes 25 de Octubre de 2010, 12:41 »
El ejercicio 129) por lo que parece se hace así:

Código: Python
  1. Num1 = 20
  2. Num2 = 10
  3. Aux1 = Num1
  4. Aux2 = Num2
  5. Rest = 1
  6. mcd = 1
  7. mcm = 1
  8.  
  9. while Aux2 != 0:
  10.  Rest = Aux1 % Aux2
  11.  Aux1 = Aux2
  12.  Aux2 = Rest
  13.  
  14.  mcd = Aux1
  15.  mcm = Num1 * Num2 / mcd
  16.  
  17. print mcm
  18.  

Ahora el 130) como indica aquí. No me sale.

15
Python / [Python] - mdc
« en: Miércoles 20 de Octubre de 2010, 13:22 »
Hola:

http://www.subeimagenes.com/img/129-130-4950.gif

Código: Python
  1. num = int(raw_input('Agrega un número: '))
  2.  
  3. creo_que_es_primo = True
  4. divisor = 2
  5. while divisor < num and creo_que_es_primo:
  6.     if num % divisor == 0:
  7.         creo_que_es_primo = False
  8.     divisor += 1
  9.  
  10. if creo_que_es_primo:
  11.     print 'El número', num, 'es primo'
  12. else:
  13.     print 'El número', num, 'no es primo'
  14.  


Hice algo de esto pero no se si tiene que ver.

Código: Python
  1. num = int(raw_input('Agrega un número: '))
  2. num_2 = int(raw_input('Agrega otro número: '))
  3.  
  4. creo_que_es_primo = True
  5. divisor = 2
  6. while divisor < num and creo_que_es_primo:
  7.     if num % divisor == 0:
  8.         creo_que_es_primo = False
  9.     divisor += 1
  10.  
  11.     if creo_que_es_primo:
  12.         print 'El número', num, 'es primo'
  13.     else:
  14.         print 'El número', num, 'no es primo'
  15.  
  16. creo_que_es_primo_2 = True
  17. divisor_2 = 1
  18. while divisor_2 < num_2 and creo_que_es_primo_2:
  19.     if num_2 % divisor_2 == 0:
  20.         creo_que_es_primo_2 = False
  21.     divisor_2 += 1
  22.  
  23.     if creo_que_es_primo_2:
  24.         print 'El número', num_2, 'es primo'
  25.     else:
  26.         print 'El número', num_2, 'no es primo'
  27.  
  28. # Como dice que los divida, me imagino que se refiere a esto.
  29. n = num / num_2
  30. print n
  31.  


Estamos tratando del ejercicio sólo por ahora el 129.

Aquí hay algo que no se si realmente viene al cuento.
http://es.wikipedia.org/wiki/M%C3%A1xim ... An_divisor

Estos ejercicios que me estoy aprendiendo y parecen interesantes lo he encontrado en esta guía de Python que puedes leer aquí.
http://marmota.act.uji.es/mtp/pdf/python.pdf

Saludo.

16
Python / Hacer menú.
« en: Domingo 17 de Octubre de 2010, 08:29 »
Estoy haciendo un buen menú con Python pero no me sale.

Cuando pulso la opción a) para introducir datos, me vuelve al menú principal, lo mismo para las demás opciones excepto la i) que es para finalizar programa es cuando se acaba y te preguntará este mensaje print 'Gracias por usar el programa.'.

Hay solcuión para ello, cada vez que introduzco los datos de la opción b), el menú principal no vuelve, parece que el programa se ha acabado o se bloqueó.

¿Hay solución?




Código: Python
  1. from math import acos, pi, sqrt
  2.  
  3. opcion = ''
  4. while opcion <= 'a' or opcion >= 'i':
  5. #while opcion in 'abcdefghi':
  6.     print '''Selecciona una opción:
  7.            a) Introducir el primer vector.
  8.            b) Introducir el segundo vector.
  9.            c) Calcular la suma.
  10.            d) Calcular la diferencia.
  11.            e) Calcular el producto escalar.
  12.            f) Calcular el producto vectorial.
  13.            g) Calcular el ángulo (en gastos) entre ellos.
  14.            h) Calcular la longitud.
  15.            i) Finalizar. '''
  16.            
  17.     opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ')
  18.    
  19.     # Primer vector.
  20.     if  opcion == 'a':
  21.         x1 = float(raw_input('Introduce valor x1: '))
  22.         y1 = float(raw_input('Introduce valor y1: '))
  23.         z1 = float(raw_input('Introduce valor z1: '))
  24.         print 'Haz ingresado estos valores', x1, y1, z1, 'del primer vector.'
  25.  
  26.     # Segundo vector.
  27.     elif opcion == 'b':
  28.         x2 = float(raw_input('Introduce valor x2: '))
  29.         y2 = float(raw_input('Introduce valor y2: '))
  30.         z2 = float(raw_input('Introduce valor z2: '))
  31.         print 'Haz ingresado estos valores', x2, y2, z2, 'del segundo vector.'
  32.  
  33.     # Suma.
  34.     elif opcion == 'c':
  35.  
  36.             suma = (x1 + x2, y1 + y2, z1 + z2)
  37.             print suma
  38.  
  39.     # Diferencia.
  40.     elif opcion == 'd':
  41.  
  42.             diferencia = (x1 - x2, y1 - y2, z1 - z2)
  43.             print diferencia
  44.  
  45.     # Producto escalar.
  46.     elif opcion == 'e':
  47.  
  48.             producto = (x1 * x2 + y1 * y2 + z1 * z2)
  49.             print producto
  50.  
  51.      # Producto vectorial.
  52.     elif opcion == 'f':
  53.  
  54.             vectorial = (y1 * z2 - z1 * y2, z1 * x2 - x1 * z2, x1 * y2 - y1 * x2)
  55.             print vectorial
  56.  
  57.     # Ángulo.
  58.     elif opcion == 'g':
  59.             angulo  = (180 / pi) * acos * (x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * sqrt(x2**2 + y2**2 + z2**2))
  60.             print angulo
  61.  
  62.     # Longitud.
  63.     elif opcion == 'h':
  64.  
  65.             x = float(raw_input('Introduce valor x: '))
  66.             y = float(raw_input('Introduce valor y: '))
  67.             z = float(raw_input('Introduce valor z: '))
  68.  
  69.             longitud = sqrt(x**2+y**2+z**2)
  70.             print longitud
  71.  
  72.     elif opcion == 'i':
  73.             print 'Gracias por usar el programa.'
  74.             break
  75.     else:
  76.             print 'Puedes teclear estas siguientes opciones: a, b, c, d, e, f, g, h o i. Usted haz tecleado', opcion
  77.  

17
Python / Re: Calcular billetes
« en: Martes 12 de Octubre de 2010, 23:29 »
Muchas gracias amigo.

18
Python / Re: Detectar cuando es impar.
« en: Lunes 11 de Octubre de 2010, 07:42 »
Cita de: "JoseCr"
if (a/2)%3 == 0:
_____return True
else:
_____return False

Muchas gracias.

19
C/C++ / [Código Fuente] meta
« en: Lunes 4 de Octubre de 2010, 02:38 »
Puedes hacer un instalador para que coja las .dll necesarios y ponerlas en system o donde te lo pidan. Antes me pasaba eso hasta con Delphi.

Por cierto.

Buen trabajo.

20
Python / Calcular billetes
« en: Lunes 4 de Octubre de 2010, 02:24 »
Hay un programa que se me resiste.

un programa que calcule el desglose en billetes y monedas de una cantidad exacta de euros. Hay billetes de 500, 200, 100, 50, 20, 10 y 5 euros y monedas de 2 y 1 euros. Por ejemplo, si deseamos conocer el desglose de 434 euros, el programa mostrará por pantalla el siguiente resultado:
2 billetes de 200 euros.
1 billete de 20 euros.
1 billete de 10 euros.
2 monedas de 2 euros.
(¿Que cómo se efectúa el desglose? Muy fácil. Empieza por calcular la división entera entre la cantidad y 500 (el valor de la mayor moneda): 434 entre 500 da 0, así que no hay billetes de 500 euros en el desglose; divide a continuación la cantidad 434 entre 200, cabe a 2 y sobran 34, así
que en el desglose hay 2 billetes de 200 euros; dividimos a continuación 34 entre 100 y vemos que no hay ningún billete de 100 euros en el desglose (cabe a 0); como el resto de la última división es 34, pasamos a dividir 34 entre 20 y vemos que el desglose incluye un billete de 20 euros y aún nos faltan 14 euros por desglosar. . . )


He guardado todos los billetes y moneda en cada variable. He intentado y sigo con ello usando los if-else con sus operadores ==, !=, <=, and, or, etc, etc, etc.

Este tipo de ejercicio es mucho para mi. Aún así sigo para aprender aunque sea un tocho de código que haga y ustedes muy pequeño. Sigo experimentando pero necesito ideas.

Código: Python
  1. # Introducir datos a la variable.
  2. E = int(raw_input('Ingresar Capital: '))
  3.  
  4. # Variables Billetes.
  5. a = 500
  6. b = 200
  7. c = 100
  8. d = 50
  9. e = 20
  10. f = 10
  11. g = 5
  12.  
  13. # Variables Monedas.
  14. h = 2
  15. i = 1
  16.  
  17. #R = (a / 500 != 0) or (b / 200 != 0) or (c / 100 != 0) or (d / 50 != 0) or (e / 20 != 0) or (f / 10 != 0) or (g / 5 != 0) or (h / 2 != 0) or (i / 1 != 0)
  18.  
  19. #print R
  20.  
  21. if (E / a) == 0:
  22.     a1 = E
  23.     print a1
  24. if (a1 / b) == 0:
  25.     a2 = a1
  26.     print a2
  27.    
  28.     etc.
  29.  
  30.  
  31. print '%d billetes de 500 €uros.' % a1
  32. print '%d billetes de 200 €uros.' % a2
  33. print '%d billetes de 100 €uros.' % a3
  34. print '%d billetes de 50 €uros.' % a4
  35. print '%d billetes de 20 €uros.' % a5
  36. print '%d billetes de 10 €uros.' % a6
  37. print '%d billetes de 5 €uros.' % a7
  38. print '%d monedas de 2 €uros.' % a8
  39. print '%d monedas de 1 €uros.' % a9
  40.    
  41.  
  42.  

21
C/C++ / [Código Fuente] Hola
« en: Sábado 2 de Octubre de 2010, 15:21 »
No me funciona el .exe para Windows 7 64 bits.

Mejor hacer las cosas con Visual Studio .net está por delante que Borland por eso lo avandoné y me metí con .net.


22
Python / Detectar cuando es impar.
« en: Sábado 2 de Octubre de 2010, 14:38 »
Hola:

¿Cómo hago con Python 2.6, al introducir un número, determine si éste es el doble de un número impar. ?

Debo poner esto para que me pida un número:

Código: Python
  1. a = raw_input(' Introduce un número par o impar: ')
  2.  

(Ejemplo: 14 es el doble de 7, que es impar.)

Saludo.

23
Microcontroladores / Resolver problemas con tablas 6 bits.
« en: Viernes 3 de Septiembre de 2010, 09:52 »
Hola:

Quiero hacer la tabla de 6 bits y me parece el error de los 256 bits usados. ¿Hay alguna manera de resolverlo?

Otra opción es usar una memoria EEPROM Externa como el 24LC256. ¿Valdrá la pena?

Código: Text
  1.  
  2.  
  3. ; ZONA DE DATOS **********************************************************************
  4.  
  5.     TITLE        "LCD Sensor PS2"
  6.     SUBTITLE    "Revisión 1.00"
  7.     LIST        P=16F886
  8.     INCLUDE        <P16F886.INC>
  9.     __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
  10.     __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V
  11.  
  12.     CBLOCK    0x20
  13.     CONTADOR
  14.     ENDC
  15.  
  16. #DEFINE        RESET_RC0    PORTC,0
  17. #DEFINE        EJECT_RC1    PORTC,1
  18. #DEFINE        OPEN_RC2    PORTC,2
  19. #DEFINE        CLOSE_RC3    PORTC,3
  20. #DEFINE        GREEN_RC4    PORTC,4
  21. #DEFINE        RED_RC5        PORTC,5
  22. #DEFINE        Auxiliar_6    PORTC,6
  23. #DEFINE        Auxiliar_7    PORTC,7
  24.  
  25. ; ZONA DE CÓDIGOS ********************************************************************
  26.  
  27.     ORG     0                        ; El programa comienza en la dirección 0.
  28.  
  29. Inicio
  30.     call    LCD_Inicializa
  31.     BANKSEL    TRISC                    ; Banco 1.
  32.     bsf        RESET_RC0                    ; Se configura como entradas.
  33.     bsf        EJECT_RC1
  34.     bsf        OPEN_RC2
  35.     bsf        CLOSE_RC3                    
  36.     bsf        GREEN_RC4
  37.     bsf        RED_RC5
  38.     bsf        Auxiliar_6
  39.     bsf        Auxiliar_7
  40.     BANKSEL    PORTC                    ; Banco 0.
  41.     clrw
  42.  
  43. Principal
  44.     movf    PORTC,W                ; Lee los sensores.
  45.     andlw    b'00111111'            ; Máscara para quedarse con el valor de los sensores.
  46.     addwf    PCL,F                ; Salta a la configuración adecuada.
  47.     goto    Configuracion0        ; 0 0 0 0 0 0
  48.     goto    Configuracion1        ; 0 0 0 0 0 1
  49.     goto    Configuracion2        ; 0 0 0 0 1 0
  50.     goto    Configuracion3        ; 0 0 0 0 1 1
  51.     goto    Configuracion4        ; 0 0 0 1 0 0
  52.     goto    Configuracion5        ; 0 0 0 1 0 1
  53.     goto    Configuracion6        ; 0 0 0 1 1 0
  54.     goto    Configuracion7        ; 0 0 0 1 1 1
  55.     goto    Configuracion8        ; 0 0 1 0 0 0
  56.     goto    Configuracion9        ; 0 0 1 0 0 1
  57.     goto    Configuracion10        ; 0 0 1 0 1 0
  58.     goto    Configuracion11        ; 0 0 1 0 1 1
  59.     goto    Configuracion12        ; 0 0 1 1 0 0
  60.     goto    Configuracion13        ; 0 0 1 1 0 1
  61.     goto    Configuracion14        ; 0 0 1 1 1 0
  62.     goto    Configuracion15        ; 0 0 1 1 1 1
  63.     goto    Configuracion16        ; 0 1 0 0 0 0
  64.     goto    Configuracion17        ; 0 1 0 0 0 1
  65.     goto    Configuracion18        ; 0 1 0 0 1 0
  66.     goto    Configuracion19        ; 0 1 0 0 1 1
  67.     goto    Configuracion20        ; 0 1 0 1 0 0
  68.     goto    Configuracion21        ; 0 1 0 1 0 1
  69.     goto    Configuracion22        ; 0 1 0 1 1 0
  70.     goto    Configuracion23        ; 0 1 0 1 1 1
  71.     goto    Configuracion24        ; 0 1 1 0 0 0
  72.     goto    Configuracion25        ; 0 1 1 0 0 1
  73.     goto    Configuracion26        ; 0 1 1 0 1 0
  74.     goto    Configuracion27        ; 0 1 1 0 1 1
  75.     goto    Configuracion28        ; 0 1 1 1 0 0
  76.     goto    Configuracion29        ; 0 1 1 1 0 1
  77.     goto    Configuracion30        ; 0 1 1 1 1 0
  78.     goto    Configuracion31        ; 0 1 1 1 1 1
  79.     goto    Configuracion32
  80.     goto    Configuracion33
  81.     goto    Configuracion34
  82.     goto    Configuracion35
  83.     goto    Configuracion36
  84.     goto    Configuracion37
  85.     goto    Configuracion38
  86.     goto    Configuracion39
  87.     goto    Configuracion40
  88.     goto    Configuracion41
  89.     goto    Configuracion42
  90.     goto    Configuracion43
  91.     goto    Configuracion44
  92.     goto    Configuracion45
  93.     goto    Configuracion46
  94.     goto    Configuracion47
  95.     goto    Configuracion48
  96.     goto    Configuracion49
  97.     goto    Configuracion50
  98.     goto    Configuracion51
  99.     goto    Configuracion52
  100.     goto    Configuracion53
  101.     goto    Configuracion54
  102.     goto    Configuracion55
  103.     goto    Configuracion56
  104.     goto    Configuracion57
  105.     goto    Configuracion58
  106.     goto    Configuracion59
  107.     goto    Configuracion60
  108.     goto    Configuracion61
  109.     goto    Configuracion62
  110.     goto    Configuracion63
  111. Configuracion0                        
  112.     goto    ActivaSalida
  113. Configuracion1                        
  114.     goto    ActivaSalida
  115. Configuracion2                    
  116.     goto    ActivaSalida
  117. Configuracion3                    
  118.     goto    ActivaSalida
  119. Configuracion4
  120.     goto    ActivaSalida
  121. Configuracion5
  122.     goto    ActivaSalida
  123. Configuracion6
  124.     goto    ActivaSalida
  125. Configuracion7
  126.     goto    ActivaSalida
  127. Configuracion8
  128.     goto    ActivaSalida
  129. Configuracion9
  130.     goto    ActivaSalida
  131. Configuracion10
  132.     goto    ActivaSalida
  133. Configuracion11
  134.     goto    ActivaSalida
  135. Configuracion12
  136.     goto    ActivaSalida
  137. Configuracion13
  138.     goto    ActivaSalida
  139. Configuracion14
  140.     goto    ActivaSalida
  141. Configuracion15
  142.     goto    ActivaSalida
  143. Configuracion16
  144.     goto    ActivaSalida
  145. Configuracion17
  146.     goto    ActivaSalida
  147. Configuracion18
  148.     goto    ActivaSalida
  149. Configuracion19
  150.     goto    ActivaSalida
  151. Configuracion20
  152.     goto    ActivaSalida
  153. Configuracion21
  154.     goto    ActivaSalida
  155. Configuracion22
  156.     goto    ActivaSalida
  157. Configuracion23
  158.     goto    ActivaSalida
  159. Configuracion24
  160.     goto    ActivaSalida
  161. Configuracion25
  162.     goto    ActivaSalida
  163. Configuracion26
  164.     goto    ActivaSalida
  165. Configuracion27
  166.     goto    ActivaSalida
  167. Configuracion28
  168.     goto    ActivaSalida
  169. Configuracion29
  170.     goto    ActivaSalida
  171. Configuracion30
  172.     goto    ActivaSalida
  173. Configuracion31
  174.     goto    ActivaSalida
  175. Configuracion32
  176.     goto    ActivaSalida
  177. Configuracion33
  178.     goto    ActivaSalida
  179. Configuracion34
  180.     goto    ActivaSalida
  181. Configuracion35
  182.     goto    ActivaSalida
  183. Configuracion36
  184.     goto    ActivaSalida
  185. Configuracion37
  186.     goto    ActivaSalida
  187. Configuracion38
  188.     goto    ActivaSalida
  189. Configuracion39
  190.     goto    ActivaSalida
  191. Configuracion40
  192.     goto    ActivaSalida
  193. Configuracion41
  194.     goto    ActivaSalida
  195. Configuracion42
  196.     goto    ActivaSalida
  197. Configuracion43
  198.     goto    ActivaSalida
  199. Configuracion44
  200.     goto    ActivaSalida
  201. Configuracion45
  202.     goto    ActivaSalida
  203. Configuracion46
  204.     goto    ActivaSalida
  205. Configuracion47
  206.     goto    ActivaSalida
  207. Configuracion48
  208.     goto    ActivaSalida
  209. Configuracion49
  210.     goto    ActivaSalida
  211. Configuracion50
  212.     goto    ActivaSalida
  213. Configuracion51
  214.     goto    ActivaSalida
  215. Configuracion52
  216.     goto    ActivaSalida
  217. Configuracion53
  218.     goto    ActivaSalida
  219. Configuracion54
  220.     goto    ActivaSalida
  221. Configuracion55
  222.     goto    ActivaSalida
  223. Configuracion56
  224.     goto    ActivaSalida
  225. Configuracion57
  226.     goto    ActivaSalida
  227. Configuracion58
  228.     goto    ActivaSalida
  229. Configuracion59
  230.     goto    ActivaSalida
  231. Configuracion60
  232.     goto    ActivaSalida
  233. Configuracion61
  234.     goto    ActivaSalida
  235. Configuracion62
  236.     goto    ActivaSalida
  237. Configuracion63
  238.     goto    ActivaSalida
  239. ActivaSalida
  240. ;    movwf    PORTB                
  241.     goto     Principal
  242.  
  243. ;
  244. ; "Mensajes" ----------------------------------------------------------------------------
  245. ;
  246. Mensajes
  247.     addwf    PCL,F
  248. Mensaje1
  249.     DT    "      STAND BY      ", 0x00
  250. Mensaje2
  251.     DT    "MEnsaje             1.", 0x00
  252. Mensaje3
  253.     DT     "Mensaje 2            ", 0x00
  254. Mensaje4
  255.     DT    "Mensaje 3             ", 0x00
  256. Mensaje5
  257.     DT     "     Msm             ", 0x00
  258. Mensaje6
  259.     DT    "Motor girando...", 0x00
  260. Mensaje7
  261.     DT     "marca", 0x00
  262. Mensaje8
  263.     DT    "Mensaje 4-2     ", 0x00
  264. FinTabla
  265. ;MensajeAnuncio
  266. ;    DT " anuncio---       ", 0x00    
  267.  
  268.     IF (FinTabla > 0xFF)
  269.         ERROR    "¡CUIDADO!: La tabla ha superado el tamaño de la página de los"
  270.         MESSG    "primeros 256 bytes de memoria ROM. NO funcionará correctamente."
  271.     ENDIF
  272.  
  273.     INCLUDE  <LCD_4BIT.INC>
  274.     INCLUDE  <LCD_MENS.INC>
  275.     INCLUDE  <RETARDOS.INC>
  276.     END
  277.  
Saludo.

24
Otros CLR / Re: Código a C++
« en: Jueves 10 de Junio de 2010, 01:36 »
Puede descargar el cósigo fuente del C# completo y funcionamuy bien. Se incluye la librería inpout32.dll.

25
Otros CLR / Re: Código a C++
« en: Jueves 10 de Junio de 2010, 00:17 »
Outport(0x3f8,55);

int valor=Input(0x3f8);


No entiendo lo del 3F8. ¿No será 378?

En cuanto al 55. ¿Qué significa el 55?
El 378 es la dirección.

Puse algo así:
Código: C++
  1.  
  2. #include "StdAfx.h"
  3. #include "PortInterop.h"
  4.  
  5. PortInterop::PortInterop(void)
  6. {
  7.     Outport(0x378,55);
  8.  
  9.     int valor=Input(0x378);
  10. }
  11.  
  12.  

ME dice esto:
Citar
------ Operación Generar iniciada: proyecto: Puerto Paralelo cpp, configuración: Debug Win32 ------
  PortInterop.cpp
PortInterop.cpp(6): error C3861: 'Outport': no se encontró el identificador
PortInterop.cpp(8): error C3861: 'Input': no se encontró el identificador
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

En C#, al hacer doble click en el botón, podemos ver el código fuente que es este:
Código: C#
  1.  
  2.  private void button_D0_ON_Click(object sender, EventArgs e)
  3.         {
  4.             D0 = 1;
  5.             opciones();
  6.         }
  7.  
  8.  


Código: C#
  1.  
  2. #region Opciones.
  3.         public void opciones()
  4.         {
  5.             int value = 0;
  6.  
  7.             if (D0 == 1)
  8.             {
  9.                 value += (int)Math.Pow(2, 0);
  10.                 LoadNewPict_D0();
  11.             }
  12.             else
  13.                 LoadOldPict_D0();
  14.             value += 0;
  15.  
  16.             if (D1 == 1)
  17.             {
  18.                 value += (int)Math.Pow(2, 1);
  19.                 LoadNewPict_D1();
  20.             }
  21.             else
  22.                 LoadOldPict_D1();
  23.             value += 0;
  24.  
  25.             if (D2 == 1)
  26.             {
  27.                 value += (int)Math.Pow(2, 2);
  28.                 LoadNewPict_D2();
  29.             }
  30.             else
  31.                 LoadOldPict_D2();
  32.             value += 0;
  33.  
  34.             if (D3 == 1)
  35.             {
  36.                 value += (int)Math.Pow(2, 3);
  37.                 LoadNewPict_D3();
  38.             }
  39.             else
  40.                 LoadOldPict_D3();
  41.             value += 0;
  42.  
  43.             if (D4 == 1)
  44.             {
  45.                 value += (int)Math.Pow(2, 4);
  46.                 LoadNewPict_D4();
  47.             }
  48.             else
  49.                 LoadOldPict_D4();
  50.             value += 0;
  51.  
  52.             if (D5 == 1)
  53.             {
  54.                 value += (int)Math.Pow(2, 5);
  55.                 LoadNewPict_D5();
  56.             }
  57.             else
  58.                 LoadOldPict_D5();
  59.             value += 0;
  60.  
  61.             if (D6 == 1)
  62.             {
  63.                 value += (int)Math.Pow(2, 6);
  64.                 LoadNewPict_D6();
  65.             }
  66.             else
  67.                 LoadOldPict_D6();
  68.             value += 0;
  69.  
  70.             if (D7 == 1)
  71.             {
  72.                 value += (int)Math.Pow(2, 7);
  73.                 LoadNewPict_D7();
  74.             }
  75.             else
  76.                 LoadOldPict_D7();
  77.             value += 0;
  78.  
  79.             try
  80.             {
  81.                 Puerto_paralelo.PortInterop.Output(adress, value);
  82.             }
  83.             catch (DllNotFoundException)
  84.             {
  85.                 Alerta_1();
  86.             }
  87.  
  88.         }
  89.  
  90.         #endregion
  91.  
  92.  

EDITO:
Estoy viendo el Test2.c y me sale esto:
Citar
/**************************************************/ /*** ***/ /*** Test2.c -- test interface to inpout32.dll ***/ /*** ( http://www.logix4u.net/inpout32.htm ) ***/ /*** ***/ /*** Copyright (C) 2005, Douglas Beattie Jr. ***/ /*** ***/ /***  ***/ /*** http://www.hytherion.com/beattidp/ ***/ /*** ***/ /**************************************************/ /* Last Update: 2006.05.14 */ /*******************************************************/ /* */ /* Builds with Borland's Command-line C Compiler */ /* (free for public download from Borland.com, at */ /* http://www.borland.com/bcppbuilder/freecompiler ) */ /* */ /* Compile with: */ /* */ /* BCC32 -IC:BORLANDBCC55INCLUDE TEST2.C */ /* */ /* */ /* Be sure to change PPORT_BASE (Port Base address) */ /* accordingly if your LPT port is addressed */ /* elsewhere. */ /* */ /*******************************************************/ #include #include #include /* Definitions in the build of inpout32.dll are: */ /* short _stdcall Inp32(short PortAddress); */ /* void _stdcall Out32(short PortAddress, short data); */ /* prototype (function typedef) for DLL function Inp32: */ typedef short (_stdcall *inpfuncPtr)(short portaddr); typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum); #define PPORT_BASE 0x378 // Prototypes for Test functions void test_read8(void); void test_write(void); void test_write_datum(short datum); /* After successful initialization, these 2 variables will contain function pointers. */ inpfuncPtr inp32fp; oupfuncPtr oup32fp; /* Wrapper functions for the function pointers - call these functions to perform I/O. */ short Inp32 (short portaddr) { return (inp32fp)(portaddr); } void Out32 (short portaddr, short datum) { (oup32fp)(portaddr,datum); } int main(void) { HINSTANCE hLib; short x; int i; /* Load the library */ hLib = LoadLibrary("inpout32.dll"); if (hLib == NULL) { fprintf(stderr,"LoadLibrary Failed.n"); return -1; } /* get the address of the function */ inp32fp = (inpfuncPtr) GetProcAddress(hLib, "Inp32"); if (inp32fp == NULL) { fprintf(stderr,"GetProcAddress for Inp32 Failed.n"); return -1; } oup32fp = (oupfuncPtr) GetProcAddress(hLib, "Out32"); if (oup32fp == NULL) { fprintf(stderr,"GetProcAddress for Oup32 Failed.n"); return -1; } /*******************************************************/ /** IF WE REACHED HERE, INITIALIZED SUCCESSFUL ******/ /*******************************************************/ /* now test the functions */ /***** Read 8 bytes at I/O base address */ test_read8(); /***** Write 0x75 to data register and verify */ test_write(); /***** One more time, different value */ test_write_datum(0xAA); /* finished - unload library and exit */ FreeLibrary(hLib); return 0; } /* TEST: Read inputs of 8 registers from PORT_BASE address */ void test_read8(void) { short x; int i; /* Try to read 0x378..0x37F, LPT1: */ for (i=PPORT_BASE; (i<(PPORT_BASE+8)); i++) { x = Inp32(i); printf("Port read (%04X)= %04Xn",i,x); } } /* TEST: Write constant 0x77 to PORT_BASE (Data register) */ void test_write(void) { short x; int i; /***** Write the data register */ i=PPORT_BASE; x=0x75; /***** Write the data register */ Out32(i,x); printf("Port write to 0x%X, datum=0x%2Xn" ,i ,x); /***** And read back to verify */ x = Inp32(i); printf("Port read (%04X)= %04Xn",i,x); /***** Set all bits high */ x=0xFF; Out32(i,x); /***** Now, set bi-directional and read again */ Out32(PPORT_BASE+2,0x20); // Activate bi-directional x = Inp32(i); printf("Set Input, read (%04X)= %04Xn",i,x); Out32(PPORT_BASE+2,0x00); // Set Output-only again x = Inp32(i); printf("Reset Ouput, read (%04X)= %04Xn",i,x); } /* TEST: Write data from parameter */ void test_write_datum(short datum) { short x; int i; i=PPORT_BASE; x = datum; /***** Write the data register */ Out32(i,x); printf("Port write to 0x%X, datum=0x%2Xn" ,i ,x); /***** And read back to verify */ x = Inp32(i); printf("Port read (%04X)= %04Xn",i,x); }

Voy a investigar el enlace a ver que tal. Recuerda que uso el Visual C++ 2010.

Páginas: [1] 2 3 ... 6