Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Programación del puerto serie

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Programación del puerto serie Responder citando

Hola a todos, soy nuevo en esto pero han aconsejado que utilize Builder C++para comunicar un circuito microcontrolador con el PC. El problema es que no tengo ni idea de como trabaja builder. Me he gastado una pasta en un libro de Builder C++, pero es un mero manual de uso que explica que hace cada función pero no de como utilizarlas.

Agradecería si alguien pudiera echarme una mano y decirme donde puedo encontrar información que me sirva para introducirme en el mundo de Builder C++. Así como que librerías puedo utilizar para la comunicación con el puerto serie del PC.

Un Saludo y gracias.
Volver arriba
Mensaje    Asunto: Re: Programación del puerto serie Responder citando

hola

dame tu e-mail asi juntamos lo que tenemos. el mio es eltjin@yahoo.com

jomanber escribió:
Hola a todos, soy nuevo en esto pero han aconsejado que utilize Builder C++para comunicar un circuito microcontrolador con el PC. El problema es que no tengo ni idea de como trabaja builder. Me he gastado una pasta en un libro de Builder C++, pero es un mero manual de uso que explica que hace cada función pero no de como utilizarlas.

Agradecería si alguien pudiera echarme una mano y decirme donde puedo encontrar información que me sirva para introducirme en el mundo de Builder C++. Así como que librerías puedo utilizar para la comunicación con el puerto serie del PC.

Un Saludo y gracias.
Volver arriba
Mensaje    Asunto: Solucion.... Responder citando

Aquí va la solucion para el serial

Clase del Serial
Código:

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class TRead : public TThread
{           
private:
protected:
        void __fastcall DisplayIt(void);
        void __fastcall Execute();
public:
        __fastcall TRead(bool CreateSuspended);
       
};
//---------------------------------------------------------------------------
#endif


El .cpp del serial

Código:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"


extern HANDLE hComm;
char InBuff[100];

#pragma package(smart_init)
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

__fastcall TRead::TRead(bool CreateSuspended)
        : TThread(CreateSuspended)
{

}
//---------------------------------------------------------------------------


void __fastcall TRead::DisplayIt()
{
//En esta parte se hace la captura el dato q llega
unsigned char x=*InBuff; //lo declaro asi para que este entre 0 y 255

}


void __fastcall TRead::Execute()
{


DWORD dwBytesRead;
FreeOnTerminate = true;
while(1)
{
// LEE DEL PUERTO SERIE
// Y SI HAY ALGO LO VISUALIZA
ReadFile(hComm, InBuff, 50, &dwBytesRead, NULL);
if(dwBytesRead)
{
InBuff[dwBytesRead] = 0;
Synchronize(DisplayIt);
}
}
}
//----------------------------------------------------------

En la principal tienes que declarar lo siguiente, lo pones mejor el publico:


Código:

HANDLE hComm = NULL;
TRead *ReadThread;
COMMTIMEOUTS ctmoNew = {0}, ctmoOld;


Luego en un boton o en el create de la forma incializas la serial con esto, "revisar q esta en com1, con 4800 baudios, 8 bits, sin paridad, y 1 bit de parada", con las seriales de pic-c funciona perfectamente:

Código:

DCB dcbCommPort;
// ABRE EL PUERTO

hComm = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
// SI EL PUERTO NO PUEDE ABRIRSE ...
if(hComm == INVALID_HANDLE_VALUE) Application->Terminate();

GetCommTimeouts(hComm,&ctmoOld);
ctmoNew.ReadTotalTimeoutConstant = 0;
ctmoNew.ReadTotalTimeoutMultiplier = 0;
ctmoNew.WriteTotalTimeoutMultiplier = 0;
ctmoNew.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hComm, &ctmoNew);

dcbCommPort.DCBlength = sizeof(DCB);
GetCommState(hComm, &dcbCommPort);
BuildCommDCB("4800,N,8,1", &dcbCommPort);
SetCommState(hComm, &dcbCommPort);

ReadThread = new TRead(false);


y en otro boton o en el form-close cierras la serial

Código:

       TransmitCommChar(hComm,0);
        Sleep(250);
        PurgeComm(hComm, PURGE_RXABORT);
        SetCommTimeouts(hComm, &ctmoOld);
        CloseHandle(hComm);


Para enviar la info usas la funcion:

Código:

TransmitCommChar(hComm,"Aqui lo que vas a enviar");


Esto te servira de mucha ayuda y funciona realmente por ya lo he usado muchas veces en distintos proyectos. Si tienes algun problema creando el .h y .cpp del serial es mejor que en la opciones de nuevo pongas TThread y metas el código q te envie ahí. Suerte...., ahhh y las preguntas de hacen en consultas para una próxima y revisa tambien en buscar, a veces uno no encuentra tal y como lo busca, pero es muy probable q ahi esté, eso se lo aprendi a CESAR, chau
_________________
Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.