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

#381
Hola:

Quiero instalar una librería que se llama comport que es el componeten para controlar el puerto serie.

ComPort Library

Estoy siguiendo el vídeo tutorial abajo que usa Delphi 10.1, sigo los paso y me da errores por todas partes.

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

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

Guardo la carpeta donde está los proyectos que hago como si fuera un proyecto más.
Selecciono la librería tal como indica en el vídeo.



Pulse el archivo que pulse para abrir, me sale este error.



¿Hay alguna solución?

Saludos.
#382
Hola:

Use la tecnología que use, que sea capaz de apagar y encender un Led. Esto es la base que busco.

Saludos.
#383
Actualizado tutorial a versión 1.04.
#384
Hola:

Hace un tiempo, hice un tutorial controlando Arduino y puerto serie en C++ con C++ Builder Starter entre otros compiladores.

Ahora ya de unos meses de descanso sobre programación, quiero retomar hacer algo similar pero con Windows Form y el lenguaje Delphi.

Primera parte:
La idea es, añadir dos botones desde el formulario, que al pulsar un botón envíe carácteres por el puerto serie. Esto hace encender un Led o apagarlo.

Segunda parte:
Cuando acabe la primera parte, seguimos en que por el puerto serie entras letras o carácteres para leer.

La interfaz Windows Form en Delphi Tokio 10.2 hay que enviar caracteres al puerto serie y que sea capaz de recibir datos también. Les dejo un ejemplo de una plantilla.



Los tutoriales que he encontrado son muy antiguos y con Delphi 7, no me interesa. Si encuentra algo para esta época, mejor, nos podemos ayudar.

Saludos.
#385
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.
#386
Electrónica / Re: Programar DDR2 RAM
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.
#387
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.
#388
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.
#389
Hola:

No se como hacer el truco que dices del:
Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
int n = Puerto->ReadData(lectura, 49);
if (n > 0)
{
lectura[n + 1] = '\0';
cout << "Recibido: " << lectura << endl;
cout << "-------------------" << endl;
}


No se me ocurre como implementarlo.
#390
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.
CitarGravedad   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 (cpp) [Seleccionar]
// MFC_ArduinoDlg.cpp: archivo de implementación
//

#include "stdafx.h"
#include "MFC_Arduino.h"
#include "MFC_ArduinoDlg.h"
#include "afxdialogex.h"
#include "SerialClass.h"
#include <iostream>
#include <fstream>
#include <Windows.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// Cuadro de diálogo de CMFC_ArduinoDlg

// Puerto serie.
Serial* Puerto = new Serial("COM1");
// Comandos para Arduino.
char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
char Luz_OFF[] = "Luz_OFF";
char lectura[50] = "\0"; // Guardan datos de entrada del puerto.

CMFC_ArduinoDlg::CMFC_ArduinoDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_MFC_ARDUINO_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFC_ArduinoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFC_ArduinoDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON2, &CMFC_ArduinoDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON1, &CMFC_ArduinoDlg::OnBnClickedButton1)
END_MESSAGE_MAP()


// Controladores de mensaje de CMFC_ArduinoDlg

BOOL CMFC_ArduinoDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// Establecer el icono para este cuadro de diálogo.  El marco de trabajo realiza esta operación
//  automáticamente cuando la ventana principal de la aplicación no es un cuadro de diálogo
SetIcon(m_hIcon, TRUE); // Establecer icono grande
SetIcon(m_hIcon, FALSE); // Establecer icono pequeño

// TODO: agregar aquí inicialización adicional

return TRUE;  // Devuelve TRUE  a menos que establezca el foco en un control
}

// Si agrega un botón Minimizar al cuadro de diálogo, necesitará el siguiente código
//  para dibujar el icono.  Para aplicaciones MFC que utilicen el modelo de documentos y vistas,
//  esta operación la realiza automáticamente el marco de trabajo.

void CMFC_ArduinoDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // Contexto de dispositivo para dibujo

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Centrar icono en el rectángulo de cliente
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Dibujar el icono
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}

// El sistema llama a esta función para obtener el cursor que se muestra mientras el usuario arrastra
//  la ventana minimizada.
HCURSOR CMFC_ArduinoDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}



void CMFC_ArduinoDlg::OnBnClickedButton2()
{
// TODO: Agregue aquí su código de controlador de notificación de control.

// Encener luz.
Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
}


void CMFC_ArduinoDlg::OnBnClickedButton1()
{
// TODO: Agregue aquí su código de controlador de notificación de control.
Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
}


Saludos.