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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 39 40 41 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 ... 255
531  Programación / Programación C/C++ / Re: Recibir datos desde el puerto serie. en: 12 Julio 2017, 19:56 pm
Hola:

El enlace que pusiste arriba, usa el C++ .net, en mi caso es C++ usando la tecnología MFC y es nativo. ;)

No tiene nada que ver. Por eso pregunto por aquí, porque lo que indacas ya lo he intentado, y en C++ .net si me funciona todo, pero con MFC no.

Saludos.
532  Informática / Electrónica / Re: Programar DDR2 RAM en: 12 Julio 2017, 17:15 pm
Hola:

Me imagino que será algo similar a esto.


Usar la RAM solo cuando creas variables en tus programas.

Saludos.
533  Programación / Programación C/C++ / Recibir datos desde el puerto serie. en: 12 Julio 2017, 17:12 pm
ola:

He creado este formulario con MFC 2017.

Tengo creado el proyecto MFC siguiendo este tutorial a partir de la página 36.

Como puedes ver en la captura, he puestodos botones llamado ON y otro llamado OFF.



Como puedes ver abajo, añado un Richt edit.



Las librerías están aquí.

https://github.com/Gmatarrubia/LibreriasTutoriales

¿Cómo puedo recibir datos desde el puerto serie y lo muestre en el Richtedit?

Al menos con los botones del formulario MFC indicado arriba si puedo enviar datos al puerto serie.

Saludos.
534  Programación / Programación C/C++ / Re: Intentar que me ejecute esta aplicación en: 4 Abril 2017, 09:05 am
Hola:

Aquí hay algo, pero para leer el puerto serie por MFC parace coplicadillo.

http://articulos.conclase.net/?tema=comunicacion&art=serie&pag=000

Sigo investigando...

Saludos.
535  Programación / Programación C/C++ / Re: Intentar que me ejecute esta aplicación en: 3 Abril 2017, 10:04 am
Hola:

No se como hacer el truco que dices del:
Código
  1. Puerto->IsConnected();

He hecho pruebas y por fin ya puedo enviar datos al puerto serie, el problema era que en vez del poner peurto COM4 dejé el COM1, ajjajajaja.

Ahora me toca recibir mensajes pra enterarse que ha pasado. He incorporado un RichtEdit al formulario.


Fijándome en el código de aquí para recibir datos.
http://foro.elhacker.net/programacion_cc/puerto_serie_c_mejorar_el_programa-t466602.0.html;msg2115369#msg2115369

Concretamente este:
Código
  1. int n = Puerto->ReadData(lectura, 49);
  2. if (n > 0)
  3. {
  4. lectura[n + 1] = '\0';
  5. cout << "Recibido: " << lectura << endl;
  6. cout << "-------------------" << endl;
  7. }

No se me ocurre como implementarlo.
536  Programación / Programación C/C++ / Re: Intentar que me ejecute esta aplicación en: 2 Abril 2017, 01:16 am
Hola:

Más bien intenta compilar.
Citar
1>------ Operación Compilar iniciada: proyecto: MFC_Arduino, configuración: Debug Win32 ------
1>SerialClass.cpp
1>c:\users\usuario\documents\visual studio 2017\projects\mfc_arduino\mfc_arduino\serialclass.cpp(140): fatal error C1010: final de archivo inesperado al buscar la directiva de encabezado precompilado. Compruebe si olvidó agregar '#include "stdafx.h"' al código fuente?
1>Compilación del proyecto "MFC_Arduino.vcxproj" terminada -- ERROR.
========== Compilar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

Lo tenía en Inglés, ya lo puse en español, dice lo mismo pero lo pongo por si acaso.
Citar
Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   C1010   final de archivo inesperado al buscar la directiva de encabezado precompilado. Compruebe si olvidó agregar '#include "stdafx.h"' al código fuente?   MFC_Arduino   c:\users\usuario\documents\visual studio 2017\projects\mfc_arduino\mfc_arduino\serialclass.cpp   140   

Desde que quite el archivo SerrialClass.cpp, si me compila y ejecuta el programa base, pero como es normal, no hace nada. Haciend pruebas sin poner ahora ni variables ni nada, solo con quitar el serialClass.cpp y ponerlo ahí es cuando sabes que algo no anda bien y te nombra el stdafx.h como si ese fuera el problema.




Edito:
Abrí el archivo SerialClass.cpp y puse el encabezado #include "stdafx.h".

Le di compilar y me salió por fin y por primera vez esta ventana que tanto esperaba.


Me dije a mi mismo que porfiiiiiiiiiiiinnnnnnnnnnnnn.

Al pulsar el botón sea ON o OFF, ninguno funciona, no transmite nada al puerto serie.

¿Por qué?

Código completo del archivo principal llamado MFC_ArduinoDlg.cpp:
Código
  1. // MFC_ArduinoDlg.cpp: archivo de implementación
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "MFC_Arduino.h"
  6. #include "MFC_ArduinoDlg.h"
  7. #include "afxdialogex.h"
  8. #include "SerialClass.h"
  9. #include <iostream>
  10. #include <fstream>
  11. #include <Windows.h>
  12.  
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #endif
  16.  
  17.  
  18. // Cuadro de diálogo de CMFC_ArduinoDlg
  19.  
  20. // Puerto serie.
  21. Serial* Puerto = new Serial("COM1");
  22. // Comandos para Arduino.
  23. char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
  24. char Luz_OFF[] = "Luz_OFF";
  25. char lectura[50] = "\0"; // Guardan datos de entrada del puerto.
  26.  
  27. CMFC_ArduinoDlg::CMFC_ArduinoDlg(CWnd* pParent /*=NULL*/)
  28. : CDialogEx(IDD_MFC_ARDUINO_DIALOG, pParent)
  29. {
  30. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  31. }
  32.  
  33. void CMFC_ArduinoDlg::DoDataExchange(CDataExchange* pDX)
  34. {
  35. CDialogEx::DoDataExchange(pDX);
  36. }
  37.  
  38. BEGIN_MESSAGE_MAP(CMFC_ArduinoDlg, CDialogEx)
  39. ON_WM_PAINT()
  40. ON_WM_QUERYDRAGICON()
  41. ON_BN_CLICKED(IDC_BUTTON2, &CMFC_ArduinoDlg::OnBnClickedButton2)
  42. ON_BN_CLICKED(IDC_BUTTON1, &CMFC_ArduinoDlg::OnBnClickedButton1)
  43. END_MESSAGE_MAP()
  44.  
  45.  
  46. // Controladores de mensaje de CMFC_ArduinoDlg
  47.  
  48. BOOL CMFC_ArduinoDlg::OnInitDialog()
  49. {
  50. CDialogEx::OnInitDialog();
  51.  
  52. // Establecer el icono para este cuadro de diálogo.  El marco de trabajo realiza esta operación
  53. //  automáticamente cuando la ventana principal de la aplicación no es un cuadro de diálogo
  54. SetIcon(m_hIcon, TRUE); // Establecer icono grande
  55. SetIcon(m_hIcon, FALSE); // Establecer icono pequeño
  56.  
  57. // TODO: agregar aquí inicialización adicional
  58.  
  59. return TRUE;  // Devuelve TRUE  a menos que establezca el foco en un control
  60. }
  61.  
  62. // Si agrega un botón Minimizar al cuadro de diálogo, necesitará el siguiente código
  63. //  para dibujar el icono.  Para aplicaciones MFC que utilicen el modelo de documentos y vistas,
  64. //  esta operación la realiza automáticamente el marco de trabajo.
  65.  
  66. void CMFC_ArduinoDlg::OnPaint()
  67. {
  68. if (IsIconic())
  69. {
  70. CPaintDC dc(this); // Contexto de dispositivo para dibujo
  71.  
  72. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  73.  
  74. // Centrar icono en el rectángulo de cliente
  75. int cxIcon = GetSystemMetrics(SM_CXICON);
  76. int cyIcon = GetSystemMetrics(SM_CYICON);
  77. CRect rect;
  78. GetClientRect(&rect);
  79. int x = (rect.Width() - cxIcon + 1) / 2;
  80. int y = (rect.Height() - cyIcon + 1) / 2;
  81.  
  82. // Dibujar el icono
  83. dc.DrawIcon(x, y, m_hIcon);
  84. }
  85. else
  86. {
  87. CDialogEx::OnPaint();
  88. }
  89. }
  90.  
  91. // El sistema llama a esta función para obtener el cursor que se muestra mientras el usuario arrastra
  92. //  la ventana minimizada.
  93. HCURSOR CMFC_ArduinoDlg::OnQueryDragIcon()
  94. {
  95. return static_cast<HCURSOR>(m_hIcon);
  96. }
  97.  
  98.  
  99.  
  100. void CMFC_ArduinoDlg::OnBnClickedButton2()
  101. {
  102. // TODO: Agregue aquí su código de controlador de notificación de control.
  103.  
  104. // Encener luz.
  105. Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
  106. }
  107.  
  108.  
  109. void CMFC_ArduinoDlg::OnBnClickedButton1()
  110. {
  111. // TODO: Agregue aquí su código de controlador de notificación de control.
  112. Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
  113. }
  114.  

Saludos.
537  Programación / Programación C/C++ / Re: Intentar que me ejecute esta aplicación en: 1 Abril 2017, 13:54 pm
Hola:

Si lo ejecuto me aparece esto:
Citar
unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?

Dentro del código coloqué esto:
Código
  1. // Puerto serie.
  2. Serial* Puerto = new Serial("COM4");
  3. // Comandos para Arduino.
  4. char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
  5. char Luz_OFF[] = "Luz_OFF";
  6. char lectura[50] = "\0"; // Guardan datos de entrada del puerto.

Entro del botón puse esto.
Código
  1. Puerto->IsConnected();
  2. // Encener luz.
  3. Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".

El código fuente completo del formulario MFC es este.
Código
  1. // MFC_ArduinoDlg.cpp: archivo de implementación
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "MFC_Arduino.h"
  6. #include "MFC_ArduinoDlg.h"
  7. #include "afxdialogex.h"
  8. #include "SerialClass.h"
  9. #include <iostream>
  10. #include <fstream>
  11. #include <Windows.h>
  12.  
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #endif
  16.  
  17.  
  18. // Cuadro de diálogo de CMFC_ArduinoDlg
  19.  
  20. // Puerto serie.
  21. Serial* Puerto = new Serial("COM4");
  22. // Comandos para Arduino.
  23. char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
  24. char Luz_OFF[] = "Luz_OFF";
  25. char lectura[50] = "\0"; // Guardan datos de entrada del puerto.
  26.  
  27. CMFC_ArduinoDlg::CMFC_ArduinoDlg(CWnd* pParent /*=NULL*/)
  28. : CDialogEx(IDD_MFC_ARDUINO_DIALOG, pParent)
  29. {
  30. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  31. }
  32.  
  33. void CMFC_ArduinoDlg::DoDataExchange(CDataExchange* pDX)
  34. {
  35. CDialogEx::DoDataExchange(pDX);
  36. }
  37.  
  38. BEGIN_MESSAGE_MAP(CMFC_ArduinoDlg, CDialogEx)
  39. ON_WM_PAINT()
  40. ON_WM_QUERYDRAGICON()
  41. ON_BN_CLICKED(IDC_BUTTON2, &CMFC_ArduinoDlg::OnBnClickedButton2)
  42. END_MESSAGE_MAP()
  43.  
  44.  
  45. // Controladores de mensaje de CMFC_ArduinoDlg
  46.  
  47. BOOL CMFC_ArduinoDlg::OnInitDialog()
  48. {
  49. CDialogEx::OnInitDialog();
  50.  
  51. // Establecer el icono para este cuadro de diálogo.  El marco de trabajo realiza esta operación
  52. //  automáticamente cuando la ventana principal de la aplicación no es un cuadro de diálogo
  53. SetIcon(m_hIcon, TRUE); // Establecer icono grande
  54. SetIcon(m_hIcon, FALSE); // Establecer icono pequeño
  55.  
  56. // TODO: agregar aquí inicialización adicional
  57.  
  58. return TRUE;  // Devuelve TRUE  a menos que establezca el foco en un control
  59. }
  60.  
  61. // Si agrega un botón Minimizar al cuadro de diálogo, necesitará el siguiente código
  62. //  para dibujar el icono.  Para aplicaciones MFC que utilicen el modelo de documentos y vistas,
  63. //  esta operación la realiza automáticamente el marco de trabajo.
  64.  
  65. void CMFC_ArduinoDlg::OnPaint()
  66. {
  67. if (IsIconic())
  68. {
  69. CPaintDC dc(this); // Contexto de dispositivo para dibujo
  70.  
  71. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  72.  
  73. // Centrar icono en el rectángulo de cliente
  74. int cxIcon = GetSystemMetrics(SM_CXICON);
  75. int cyIcon = GetSystemMetrics(SM_CYICON);
  76. CRect rect;
  77. GetClientRect(&rect);
  78. int x = (rect.Width() - cxIcon + 1) / 2;
  79. int y = (rect.Height() - cyIcon + 1) / 2;
  80.  
  81. // Dibujar el icono
  82. dc.DrawIcon(x, y, m_hIcon);
  83. }
  84. else
  85. {
  86. CDialogEx::OnPaint();
  87. }
  88. }
  89.  
  90. // El sistema llama a esta función para obtener el cursor que se muestra mientras el usuario arrastra
  91. //  la ventana minimizada.
  92. HCURSOR CMFC_ArduinoDlg::OnQueryDragIcon()
  93. {
  94. return static_cast<HCURSOR>(m_hIcon);
  95. }
  96.  
  97.  
  98.  
  99. void CMFC_ArduinoDlg::OnBnClickedButton2()
  100. {
  101. // TODO: Agregue aquí su código de controlador de notificación de control.
  102.  
  103. Puerto->IsConnected();
  104. // Encener luz.
  105. Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
  106.  
  107. }
  108.  

Así que mucho he preguntado a universitarios en la calle, me dicen que si, que saben programar C++, le comento lo de MFC y no dicen ni mu, Jajajajajja.

Se que es muy complicado el MFC.
538  Programación / Programación C/C++ / Intentar que me ejecute esta aplicación en: 1 Abril 2017, 12:26 pm
Hola:

Intento que me ejecute esta aplicación MFC de C++, lo que quiero hacer es abrir el puerto serie y intentar enviar datos.

La ventana ya la tengo creado y esto si se ejecuta bien. El problema es cuando pincho en el botón ON para poner instrucciones y pasa cosas raras. A partir de la página 36 de este tutorial explica como se crea una ventana MFC.



Supuestamente en C++ de consola, para activar el puerto es esta instrucción.

Código
  1. Puerto->IsConnected()

Para enviar comandos es esta otra instrucciones.
Código
  1. Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON"

Para recibir datos, esta otra instracción.

Código
  1. int n = Puerto->ReadData(lectura, 49); // Recibe datos del puerto serie.

Aún así, haga lo que haga, no me sale. Lo que tiene que hacer el programa es, desde que ejecutes el formulario, abra el puerto serie.

Si pulso un botón, por ejemplo, el ON, envía el comando.

¿Alguna idea?

Saludos.
539  Informática / Electrónica / Re: Expertos en ver puntos de contacto en placa electrónica. en: 1 Abril 2017, 00:45 am
Hola:

Prueba primero funcionando a 3.3 V. por si acaso. Lo del ensayo y error lo haría con el Tx y Rx, más bien su   baudios. Resetea el router por cada velocidad de baudios es el adecuado, por ejemplo, pon en Raspberry Pi o Arduino que acabas antes, lo pones en modo lectura.

Cuando reseteas, el router puede soltar infomación al puerto.
540  Programación / ASM / Re: Curso ensamblador en: 31 Marzo 2017, 15:17 pm
Buen curso, ánimos.
Páginas: 1 ... 39 40 41 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 ... 255
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines