Ver Mensaje Individual
  #5  
Antiguo 18-02-2007
jairo guzman jairo guzman is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Reputación: 0
jairo guzman Va por buen camino
Lightbulb necesito experto en comport!!

Bueno, en primer lugar seria interesante saber el Baud Rate empleado y que cantidad de informacion estas enviando por segundo.

Pero por lo pronto el comport es una buena solucion a tu problema el siguiente codio te puede ayudar a detectar la cantidad de datos recibidos y cuantos datos debes leer.

Hay dos formas de leer el buffer de estrada, en realidad son dos eventos el que yo he utilizado es el evento OnRxChar, en est evento insertas el siguiente codigo

void __fastcall TForm1::ComPortRxChar(TObject *Sender)
{
int x;
unsigned char buf;

x=ComPort->InputCount();
//en x esta el numero de bytes recibidos
while(ComPort->InputCount())
{
buf=ComPort->ReadByte();
ComPort->WaitForReadCompletion();
//en buf esta cada uno de los bytes recibidos
}
}

Esta forma de leer tiene 2 inconvenientes y es que si envias muchos datos a un baud rate bajo puedes perder parte de la informacion para esto en el momento en que abres el puerto incrementas el valor del bufer de entrada con ComPort->BufferSize->Inpout=10000, por ejemplo.

el otro problema es que la lectura del puerto podria tornarse lenta en cuanto a que estas analizando la informacion byte a byte, en este punto puedes utilizar los otros componentes de lectura tales como el ReadString o el Read o cualquier otro, pero estos tienen un fin de cadena especifico y debes tener cuidado con eso, el la ayuda del comport especifican algunos de estos fines de cadena pero esta algo incompleto.

En este momento estoy probando con el componente Read que te permite leer una cantidad de datos determinada del buffer de entrada pero aun no se como funciona bien y lo estoy probando haci que te reboto la pregunta,
si encuentras alguna informacion al respecto de la directiva read del comport me la podrias facilitar?

Espero que esto te ayude.
Responder Con Cita