User: alciro    User
 

Programación en C++ Builder

Share |
 Arrays (matrices)
 Punteros
3. Ejemplo de clase en c++
8. Métodos de la clase AnsiString
 Proyectos en C++
 Packages, distribuir una aplicación sin instalación
 Ordenación por intercambio o burbuja
 Funciones de cadenas de caracteres string.h

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
Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |