Programación en C++ Builder

3. Ejemplo de clase en c++
8. Métodos de la clase AnsiString
 Packages, distribuir una aplicación sin instalación

9. Comunicaciones en serie RS-232

El c++ Borland Builder no contiene ningún objeto o control para realizar las comunicaciones RS232, por lo que se han de buscar recursos de terceros para realizar esta función. Las comunicaciones en serie RS232 se pueden implementar de múltiples y variadas formas, se puede acceder a las APIs de Windows (trabajo arduo y complejo), se puede instalar el ActiveX MScomm32.ocx del Visual Basic o se puede utilizar un control desarrollado para el Builder C++. En nuestro caso haremos uso de un pequeño control Freeware desarrollado por Victor Chen.

Borland c++ builder Serial Port Components

Métodos:

void Open(); Abrir el Puerto de comunicaciones
void Close(); Cerrar el Puerto de comunicaciones
bool Enabled();  Estado del Puerto de comunicaciones
int Write(char Buf[], DWORD Count) ; Escribir en el Buffer de salida
int Read(char Buf[] , DWORD Count); Leer del Buffer de entrada
int InQueCount(); Númer o de bytes en el Buffer de Entrada, -1 = Puerto cerrado
int OutQueCount(); Númer o de bytes en el Buffer de Salida, -1 = Puerto cerrado
void PurgeIn(); Limpiar el Buffer de Entrada
void PurgeOut(); Limpiar el Buffer de Salida
// {Comm escape functions}
void SetDTRState(bool State);
void SetRTSState(bool State);
void SetBREAKState(bool State);
void SetXONState(bool State);
void UpdateDataControlBlock();

Propiedades de TComm

BaudRate (Velocidad en Baudios)

br110, br300, br600, br1200, br2400, br4800, br9600, br14400, br19200, br38400, br56000, br57600, br115200, br128000, br256000

DataBits (Bits de datos)
da4, da5, da6, da7, da8,

DeviceName (Nombre del puerto de comunicaciones)
Com1, Com2...

EventChars

FlowControl (Control del flujo)
fcNone, fcCTS, fcDTR, fcSoftware, fcDefault

MonitorEvents (Monitorizar los eventos)

Options
coParityCheck, coDsrSensitivity, coIgnoreXOff, coErrorChar, coNullStrip

Parity (Paridad)
paNone, paOdd, paEven, paMark, paSpace

ReadBufSize (Tamaño del buffer de lectura)
4096

ReadTimeout
1000

StopBits (Bits de Stop)
sb10, sb15, sb20

SuspendTime
5

WriteBufSize (Tamaño del buffer de escritura)
2048

WriteTimeout (Tiempo de espera en escritura)
1000

 

Propiedades de control TComm de comunicaciones RS-232

Eventos

// OnBreak
void __fastcall TForm1::Comm1Break(TObject *Sender){

}

// OnComStatEvent
void __fastcall TForm1::Comm1ComStatEvent(TObject *Sender, DWORD Status, COMSTAT ComStat){

}

// OnCts
void __fastcall TForm1::Comm1Cts(TObject *Sender){

}

//OnDsr
void __fastcall TForm1::Comm1Dsr(TObject *Sender){

}

// OnRing
void __fastcall TForm1::Comm1Ring(TObject *Sender){

}

// OnRlsd
void __fastcall TForm1::Comm1Rlsd(TObject *Sender){

}

// OnError
void __fastcall TForm1::Comm1Error(TObject *Sender, int Errors){

}

// OnRxChar
void __fastcall TForm1::Comm1RxChar(TObject *Sender, DWORD Count){

}

// OnRxFlag;
void __fastcall TForm1::Comm1RxFlag(TObject *Sender){

}

// OnTxEmpty;
void __fastcall TForm1::Comm1TxEmpty(TObject *Sender){

}

Indicadores:

bool Connected={ read=FConnected} ;

// {Comm status flags}
bool CTS={ index=1, read=GetModemState } ;
bool DSR ={ index=2, read=GetModemState} ;
bool RING={ index=3, read=GetModemState } ;
bool RLSD ={ index=4, read=GetModemState} ;
bool CtsHold ={ index=1, read=GetComState };
bool DsrHold ={ index=2, read=GetComState };
bool RlsdHold ={ index=3, read=GetComState };
bool XOffHold ={ index=4, read=GetComState };
bool XOffSent ={ index=5, read=GetComState };
__property HANDLE Handle ={ read=FHandle };
Eventos de control TComm de comunicaciones RS-232
 
copyright © 2007-2010  alciro.org  All rights reserved.         
Share |