elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 [57] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ... 255
561  Programación / Programación C/C++ / Re: Como mostrar la version de windows 32 o 64 bits usando c++ en: 24 Marzo 2017, 18:59 pm
Hola:

Puedes hacer un hola mundo programando para 64 bits, si lo ejecutas en un micro de 32 bits, de entrada no funcionará.

Saludos.
562  Programación / Programación C/C++ / Re: Como mostrar la version de windows 32 o 64 bits usando c++ en: 24 Marzo 2017, 18:48 pm
Hola:

Tener claro que en un sistema de 64 bits el System32 es de 64 bits y el wow64 es de 32 bits, lo hicieron así para que sean compatibles con muchos programas.

http://www.samlogic.net/articles-spanish/explicacion-carpetas-archivos-de-programa-x86-syswow64.htm

Saludos.
563  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 18:46 pm
Buenas:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <Windows.h>
  4. #include <stdio.h>
  5. #include "SerialClass.h"
  6. using namespace std;
  7.  
  8. void main()
  9. {
  10. // Título de la ventana
  11. SetConsoleTitle("Control Led Arduino.");
  12.  
  13. // Puerto serie.
  14. Serial* Puerto = new Serial("COM4");
  15.  
  16. // Comandos para Arduino.
  17. char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
  18. char Luz_OFF[] = "Luz_OFF";
  19. char lectura[50] = "\0"; // Guardan datos de entrada del puerto.
  20. int tecla; // Guarda las teclas pulsadas.
  21.  
  22. cout << "Introduzca la opcion deseada: " << endl << endl;
  23.  
  24.  
  25. do
  26. {
  27. cin >> tecla; // Aquí introduces un número, el 1 o el 2.
  28.  
  29. while (tecla)
  30. {
  31. case 1:
  32. // Encener luz.
  33. cout << "Enviando: " << Luz_ON << endl; // Muestra en pantalla textos.
  34. Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
  35. break;
  36.  
  37. case 2:
  38. // Apagar luz.
  39. cout << "Enviando: " << Luz_OFF << endl;
  40. Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
  41. break;
  42.  
  43. default: // Si haz pulsado otro número distinto del 1 y 2, muestra
  44. cout << "Puse del 1 al 2."; // este mensaje.
  45. }
  46.  
  47. } while (tecla != 0);
  48.  
  49. while (true) {
  50. int n = Puerto->ReadData(lectura, 49);
  51. if (n > 0) {
  52. lectura[n + 1] = '\0';
  53. break;
  54. }
  55. Sleep(1);
  56. }
  57. }

Como no se como se llaman las cosas en C++, ya me atasqué. En C# funciona todo bien. ;)

Ahora si necesito ayuda bien ayuda para sacar esto de una vez. A parte que tengo otro proyecto en mente con lo mismo pero en MFC C++. ;)

Saludos.
564  Programación / ASM / Re: asm numeros binarios para pasarlos y guardar como txt en: 24 Marzo 2017, 18:10 pm
odio windows

¿Qué es lo que odias de Windows?

Puede que aquí te de ideas.
https://underc0de.org/foro/asm/crear-y-escribir-un-archivo-en-asm/

Parece muy interesante tu programa. Porque la genreacion de ahora que soy yo lo hago con PIC en asm, el 8086 ya no lo toco.

Saludos.
565  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 17:51 pm
Lo más parecido que he hecho es esto.
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <Windows.h>
  4. #include <stdio.h>
  5. #include "SerialClass.h"
  6. using namespace std;
  7.  
  8. void main()
  9. {
  10. // Título de la ventana
  11. SetConsoleTitle("Control Led Arduino.");
  12.  
  13. // Puerto serie.
  14. Serial* Puerto = new Serial("COM4");
  15.  
  16. // Comandos para Arduino.
  17. char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
  18. char Luz_OFF[] = "Luz_OFF";
  19. char lectura[50] = "\0"; // Guardan datos de entrada del puerto.
  20. int tecla; // Guarda las teclas pulsadas.
  21.  
  22. cout << "Introduzca la opcion deseada: " << endl << endl;
  23. cin >> tecla; // Aquí introduces un número, el 1 o el 2.
  24.  
  25. do
  26. {
  27. while (tecla)
  28. {
  29. case 1:
  30. // Encener luz.
  31. cout << "Enviando: " << Luz_ON << endl; // Muestra en pantalla textos.
  32. Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
  33. break;
  34.  
  35. case 2:
  36. // Apagar luz.
  37. cout << "Enviando: " << Luz_OFF << endl;
  38. Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
  39. break;
  40.  
  41. default: // Si haz pulsado otro número distinto del 1 y 2, muestra
  42. cout << "Puse del 1 al 2."; // este mensaje.
  43. }
  44.  
  45. } while (tecla != 0);
  46. }
  47.  
  48.     while (true) {
  49.     int n = Puerto->ReadData(lectura, 49);
  50.     if (n > 0) {
  51.     lectura[n + 1] = '\0';
  52.     break;
  53.     }
  54.     Sleep(1);
  55.     }
  56.  
566  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 13:51 pm
Buenas:

Lo había probado, da este error:
Citar
no se puede convertir de 'byte[]' a 'char[]'

Bueno, como no es importante, pues lo que tenemos arriba con C# ya se puede hacer una idea de como se puede hacer en C++. Mira que da guerra el C++ de las narices, no me extraña que Java junto con C# desbanque a C++ Win32 como lenguaje principal para un informático.

Empezando otra vez con las grandes aventuras con el C++ de Win32, ;)
Como se puede ver en el código de C# arriba, hay que usar un do while.
https://msdn.microsoft.com/es-es/library/b0kk5few.aspx

Tutorial:




Saludos.
567  Programación / ASM / Re: asm numeros binarios para pasarlos y guardar como txt en: 24 Marzo 2017, 12:51 pm
Hola:

¿Por qué asm en Windwos a estas alturas de la vida?
Si es para temas de hadcer driver lo entiendo.

He estado buscando, no encuentro ejemplo, solo documentos sobre asm.
http://personals.ac.upc.edu/guerrero/fo/asm.pdf

https://es.answers.yahoo.com/question/index?qid=20080427172053AAJ4KWm



Saludos.
568  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 07:19 am
Hola:

A pesar de tener más experiencia con C#, con la idea de pasarlo a C++, he hecho esto.

Código C#:
Código
  1. using System;
  2. using System.Text;
  3. using System.IO.Ports;
  4.  
  5. namespace Envio_y_recepcion_puerto_serie_cs
  6. {
  7.    class Program
  8.    {
  9.        static void Main(string[] args)
  10.        {
  11.            // Título de la ventana.
  12.            Console.Title = "Recibir datos desde Arduino con C#";
  13.  
  14.            // Tamaño ventana consola.
  15.            Console.WindowWidth = 55; // X. Ancho.
  16.            Console.WindowHeight = 18; // Y. Alto.
  17.  
  18.            // Cree un nuevo objeto SerialPort con la configuración predeterminada.
  19.            SerialPort Puerto_serie = new SerialPort("COM4");
  20.  
  21.            Puerto_serie.BaudRate = 115200;
  22.            Puerto_serie.Parity = Parity.None;
  23.            Puerto_serie.StopBits = StopBits.One;
  24.            Puerto_serie.DataBits = 8;
  25.            Puerto_serie.Handshake = Handshake.None;
  26.            Puerto_serie.RtsEnable = true;
  27.  
  28.            // Establecer los tiempos de espera de lectura / escritura.
  29.            Puerto_serie.ReadTimeout = 500; // Milisegundos.
  30.            Puerto_serie.WriteTimeout = 500;
  31.  
  32.            // Detecta cualquier dato recibido.
  33.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  34.  
  35.            Puerto_serie.Open(); // Abrir puerto.
  36.  
  37.            ConsoleKey tecla;
  38.            Console.WriteLine("Pulse tecla 1 para encender y 2 para apagar:");
  39.  
  40.            do
  41.            {
  42.                tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas.
  43.  
  44.                switch (tecla)
  45.                {
  46.                    case ConsoleKey.D1: // Tecla 1 del teclado estandar.
  47.                    case ConsoleKey.NumPad1: // Tecla 1 del número del pad.
  48.                        byte[] miBuffer1 = Encoding.ASCII.GetBytes("Luz_ON"); // Codificación ASCII y guarda en la variable array tipo byte.
  49.                        Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length); // Envía los datos del buffer todo su contenido.
  50.                        Console.WriteLine("Enviado: {0}", miBuffer1); // Muestra en pantala el mensaje enviado, en este caso, Luz_ON.
  51.                        break;
  52.  
  53.                    case ConsoleKey.D2:
  54.                    case ConsoleKey.NumPad2:
  55.                        byte[] miBuffer2 = Encoding.ASCII.GetBytes("Luz_OFF");
  56.                        Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length);
  57.                        //Console.WriteLine("Enviado: {0}", miBuffer2);
  58.                        break;
  59.  
  60.                    default:
  61.                        Console.WriteLine("Tecla el 1, el 2 y Escape para salir.");
  62.                        break;
  63.                }
  64.            }
  65.  
  66.            // Pulsa Escape para salir del menú.
  67.            while (tecla != ConsoleKey.Escape);
  68.  
  69.            Console.WriteLine("Presione cualquier tecla para continuar...");
  70.            Console.WriteLine();
  71.            Console.ReadKey(); // Espera pulsar una tecla cualquiera.
  72.            Puerto_serie.Close(); // Cierra el puerto serie.
  73.        }
  74.  
  75.    // Detecta cualquier dato entrante.
  76.    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  77.        {
  78.            SerialPort sp = (SerialPort)sender;
  79.            string entradaDatos = sp.ReadExisting(); // Almacena los datos recibidos en la variable tipo string.
  80.            Console.WriteLine("Dato recibido desde Arduino: " + entradaDatos); // Muestra en pantalla los datos recibidos.
  81.        }
  82.    }
  83. }
  84.  

Es este último código que me funciona mejor, también he intentado que me muestre el valor enviado y me diga en pantalla:

Enviado: Luz_ON


He usado esto para que muestre lo que envía:
Código
  1. Console.WriteLine("Enviado: {0}", miBuffer1);

Su resultado fue este:
Enviado: system.Byte[]

¿Pero qué es esto?

Concretamente aquí:
Código
  1.                    case ConsoleKey.D1:
  2.                    case ConsoleKey.NumPad1:
  3.                        byte[] miBuffer1 = Encoding.ASCII.GetBytes("Luz_ON");
  4.                        Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length);
  5.                        Console.WriteLine("Enviado: {0}", miBuffer1);
  6.                        break;

Lo bueno que también ya recibo el ON y OFF si pulso el pulsador dede Arduino directamente. Funciona todo menos lo indicado justo arriba.

Debe aparecer de esta manera: Luz_ON

Aparece en hexadecimales. ;)

Código
  1. Console.WriteLine("Enviado: {0}", BitConverter.ToString(miBuffer1));
Cuando esté listo todo C#, ya se podrá hacer el C++ de una vez por todas, jaaaj ajajajja. Eso espero y se las debo a todos. ;)

PD: No me había dado cuenta que tienes un blog, no sabía que eres un profesional de C++.
569  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 23 Marzo 2017, 22:37 pm
La cosa rara que hace es  no volver a la opción principal si no pones un 1 o un 2, desde que pongas otra cosa, no sale de ahí.

La cuestión es como se hace.

Sigo investigando...
570  Programación / .NET (C#, VB.NET, ASP) / Re: Cerrar y abrir la bandeja del lector con el botón manualmente, y que lo sepa C# en: 23 Marzo 2017, 13:52 pm
El Management está incuido, el using Types; nada de nada.
Páginas: 1 ... 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 [57] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ... 255
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines