Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2006
elbert elbert is offline
Registrado
 
Registrado: nov 2006
Posts: 3
Poder: 0
elbert Va por buen camino
necesito experto en comport !!

Estoy tratando de comunicarme a travez de COM1 con una pesa-scaner PSC magellan con readstring y writestrng y no lo he logrado. Alguien sabe como hacerlo ?
Responder Con Cita
  #2  
Antiguo 05-11-2006
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Elbert:

Para comunicación por puertos COM y cuestiones similares, te recomiendo los componentes TurboPower Async Professional.

Dinos, ¿qué es una «pesa-scaner PSC magellan»?

Un abrazo escaneado.

Al González.
Responder Con Cita
  #3  
Antiguo 06-11-2006
elbert elbert is offline
Registrado
 
Registrado: nov 2006
Posts: 3
Poder: 0
elbert Va por buen camino
comunicacion serial

Saludos , gracias por contestar . La pesa magellan es un lector de codigos de barra con pesa ( para medir peso ) usada en los supermercados . Tengo un programa de punto de venta ( caja registradora ) y necesito leer el puerto serial para saber el codigo de barra y el peso de el producto . Trate con readstring pero no lograba enteder lo que leia , estoy tratando con un componente Asinc pro , puedo leer pero no se como detectar cuando hay algo en el buffer , ni cuantos caracteres tengo que leer .
Voy a tratar el componente que me recomiendas.
Gracias
Responder Con Cita
  #4  
Antiguo 18-02-2007
jairo guzman jairo guzman is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Poder: 0
jairo guzman Va por buen camino
Lightbulb

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
  #5  
Antiguo 18-02-2007
jairo guzman jairo guzman is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Poder: 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
  #6  
Antiguo 19-02-2007
Avatar de rruz
[rruz] rruz is offline
Miembro Premium
 
Registrado: jun 2006
Posts: 146
Poder: 18
rruz Va por buen camino
Primero que todo el utilizar los componentes TurboPower Async Professional Para comunicacion serial RS232 es un punto en el cual no hay discusion ya que son el estandard en este area.

Una vez dicho esto y asumiendo que ya instalaste los componentes vamos a utilizar el componente TApdComPort.


Para recibir informacion desde el dispositivo
En TApdComPort debes utilizar el evento OnTriggerAvail .

Ej :


Código Delphi [-]
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
i : integer;
c : Char ;
begin

for i := 1 to Count do
begin
c:= ApdComPort1.GetChar;

//Aqui puedes consultar por el caracter retornado
//segun la documentacion del dispositivo

Case c of
'A' :Proc1;
'$' :Proc2:
'%':Proc3;
End;


//o puedes acumular en un buffer (String) los caracteres

Cadena:=Cadena+c;

end;

end;






No olvides declarar lo siguiente al inicializar la rutina


Código Delphi [-]
ApdComport1.AddDataTrigger('Prueba',True)






Para enviar Datos utiliza


Código Delphi [-]
ApdComport1.PutChar('A');

// o bien

ApdComport1.PutString('Esta es una prueba');





Saludos.
Responder Con Cita
  #7  
Antiguo 19-02-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Siguiendo con el asunto del Apro, la forma mas fácil de recibir paquetes es usando el componente ApdDataPacket, solo requieres conocer el inicio de la cadena y el final de la cadena o al menos uno de ellos.

En protocolos normales se inicia con STX (02h) y termina con ETX (03h), algunos protocolos no tienen un caracter fijo de inicio pero si tienen LF+CR (10h,13h).

Con este componente te olvidas de buscar dentro de los caracteres recibidos el paquete que deseas.

Aqui un ejemplo:

Código Delphi [-]
procedure TLector.ApdDataPacket1StringPacket(Sender: TObject;
  Data: String);
begin
  Linea := Data;
  If (Linea[5] = 'A') then begin
     ProcesaInformacion('A');
  end;
end;

Saludos.

Edito: Por cierto, este componente APro me lo recomendó Al Gonzalez hace mucho tiempo, gracias Al me ha servido increiblemente.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 19-02-2007 a las 18:57:08.
Responder Con Cita
  #8  
Antiguo 24-02-2007
pollo_c pollo_c is offline
Miembro
 
Registrado: oct 2006
Posts: 55
Poder: 18
pollo_c Va por buen camino
ayuda egostar o rruz

disciulpen que me meta en el hilo, pero tengo un problema en el archivo tpapro docs tpapro407a3 viene una descripción de cómo se instalan los paquetes o componentes del archivo tpapro407a3 pero no funciona, quisiera que me orientaran paso a paso en la instalación de estos paquetes si no es mucha molestia. gracias
Responder Con Cita
  #9  
Antiguo 25-02-2007
jairo guzman jairo guzman is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Poder: 0
jairo guzman Va por buen camino
Thumbs up de acuerdo...

bueno, en primer lugar les doy las gracias por ayudarme a resolver este inconveniente, yo programo basicamente en builder 6, sin embargo comprendi el mensaje que me enviaron y ya he logrado solucionar el problema que tenia.
Responder Con Cita
  #10  
Antiguo 26-02-2007
chuyleon chuyleon is offline
Registrado
 
Registrado: nov 2006
Posts: 1
Poder: 0
chuyleon Va por buen camino
Freeware para puertos seriales

Hola a todos, yo he hecho algo parecido con basculas y todo lo he resuelto con un componente freeware para delphi: TSerialNG. Espero que con esto resuelvas tus problemas. Byee.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayudemos a utilizar Comport (Rs232) IVAND Varios 18 16-04-2020 21:25:17
ComPort (serial) - instalacion problema ibstk Varios 14 06-10-2011 21:27:26
El comport deja de funcionar JULIPO Varios 7 22-08-2007 19:02:37
comport interface elbert Noticias 1 05-11-2006 17:12:38
Cómo parecer un experto en computación DarkByte Humor 6 10-06-2004 19:00:09


La franja horaria es GMT +2. Ahora son las 23:45:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi