Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2007
djemix djemix is offline
Miembro
 
Registrado: ago 2006
Posts: 46
Poder: 0
djemix Va por buen camino
Muchas gracias tio!! Me ha venido genial!! jeje...

Pero ahora me surge otro problema... aunque este ya lo tenia desde hace tiempo... y me preguntado a ver si me lo podriais resolver...

A ver... cuando trabajo con puertos series tengo el problema de que cuando recibo una trama nunca la recibo entera de un tiron, sino que lo recibo en cachos, casi siempre de 8 en 8 caracteres... ¿porque me pasa esto?

¿Tengo que ajustar de alguna manera el componente que uso ( Async Pro)?

De todas formas si alguien me sugiere alguno que le funcione y sepa como hacerlo andar correctamente se lo estaría muy agradecido.

Un saludo a todos!!
Responder Con Cita
  #2  
Antiguo 25-10-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por djemix Ver Mensaje
Muchas gracias tio!! Me ha venido genial!! jeje...

Pero ahora me surge otro problema... aunque este ya lo tenia desde hace tiempo... y me preguntado a ver si me lo podriais resolver...

A ver... cuando trabajo con puertos series tengo el problema de que cuando recibo una trama nunca la recibo entera de un tiron, sino que lo recibo en cachos, casi siempre de 8 en 8 caracteres... ¿porque me pasa esto?

¿Tengo que ajustar de alguna manera el componente que uso ( Async Pro)?

De todas formas si alguien me sugiere alguno que le funcione y sepa como hacerlo andar correctamente se lo estaría muy agradecido.

Un saludo a todos!!
Una alternativa muy buena es la de usar el componente apdDataPacket del mismo Apro, la única condicionante es que requieres conocer al menos el caracter de fin de la cadena.

Dale una leída a ese componente, puedo asegurarte que te va a servir de mucho.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 25-10-2007
djemix djemix is offline
Miembro
 
Registrado: ago 2006
Posts: 46
Poder: 0
djemix Va por buen camino
El problema que tengo es que no puedo saber el tamaño de la trama ya que puede variar segun lo que manden.

El otro problema es que SI conozco el caracter de comienzo y el de fin de trama pero el problema es que cualquiera de los se puede repetir en el interior de la trama...

¿¿que puedo hacer??
Responder Con Cita
  #4  
Antiguo 25-10-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por djemix Ver Mensaje
El problema que tengo es que no puedo saber el tamaño de la trama ya que puede variar segun lo que manden.

El otro problema es que SI conozco el caracter de comienzo y el de fin de trama pero el problema es que cualquiera de los se puede repetir en el interior de la trama...

¿¿que puedo hacer??
Si puediras colocar aquí algunas lineas de lo que te llega podría ayudarte en este caso.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 25-10-2007
djemix djemix is offline
Miembro
 
Registrado: ago 2006
Posts: 46
Poder: 0
djemix Va por buen camino
El primer char es el STX (0x02) y el ultimo es el ETX(0x03). Esto esta muy bien pero el problema lo tengo dentro...

Luego viene el numero de argumentos y luego los argumentos... tantos como decia el numero de antes.

Despues viene un CRC que es la suma de los argumentos... y final el ETX.

Con esto te kiero hacer ver que el tamaño de la cadena es variable segun lo que me kieran mandar y claro... cuando me mandan 2 o 3 argumentos... el campo del numero de argumentos ya me coincide o con el ETX o STX.

¿Cual es el problemaaaaa? Pues que cuando recibo una cadena, por ejemplo, de 10 caracteres... Primero recibo los 8 primeros y luego los 2 siguientes...

Cuando digo que recibo me refiero al evento OnTriggerAvail del componente que me salta 2 veces. Siempre me saca los ocho primeros y luego el resto...

Nunca he comprobado en recibir por ejemplo 20 caracteres... para ver si me los divide en paquete de 8... Eso es algo de la configuración del puerto??

Ufff... vaya tocho que te soltado... a ver si te puedes aclarar un poco en todo eso..

Gracias por tu ayuda....
Responder Con Cita
  #6  
Antiguo 25-10-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por djemix Ver Mensaje
El primer char es el STX (0x02) y el ultimo es el ETX(0x03). Esto esta muy bien pero el problema lo tengo dentro...

Luego viene el numero de argumentos y luego los argumentos... tantos como decia el numero de antes.

Despues viene un CRC que es la suma de los argumentos... y final el ETX.

Con esto te kiero hacer ver que el tamaño de la cadena es variable segun lo que me kieran mandar y claro... cuando me mandan 2 o 3 argumentos... el campo del numero de argumentos ya me coincide o con el ETX o STX.

¿Cual es el problemaaaaa? Pues que cuando recibo una cadena, por ejemplo, de 10 caracteres... Primero recibo los 8 primeros y luego los 2 siguientes...

Cuando digo que recibo me refiero al evento OnTriggerAvail del componente que me salta 2 veces. Siempre me saca los ocho primeros y luego el resto...

Nunca he comprobado en recibir por ejemplo 20 caracteres... para ver si me los divide en paquete de 8... Eso es algo de la configuración del puerto??

Ufff... vaya tocho que te soltado... a ver si te puedes aclarar un poco en todo eso..

Gracias por tu ayuda....
Esto se resuelve perfectamente con el componente que te comenté, además están usando el protocolo más efectivo para saber donde comienza y donde termina una cadena

Cita:
STX = Start of Text
ETX = End of Text
Dificilmente verás esos caracteres repetidos dentro de la cadena, si es así entonces no solo recibes una trama sino varias y siempre, repito siempre habrá un STX con su respectivo ETX.

El CRC como dices, es un digito verificador, comúnmente es un XOR de los caracteres dentro de la cadena, no uses el trigger avail, como te digo, usa el componente adpDataPacket, configuralo de esta forma

Cita:
EndCon = ecString
EndString = #3 --> [^C]
StartCond = scString
StartString = #2 --> [^B]
En el evento OnStringPacket del componente podrás usar esto:

Código Delphi [-]
procedure TForm1.ApdDataPacket1StringPacket(Sender: TObject; Data: String);
begin
  Memo1.Lines.Add(Data);
end;


Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 25-10-2007 a las 19:26:10.
Responder Con Cita
  #7  
Antiguo 26-10-2007
djemix djemix is offline
Miembro
 
Registrado: ago 2006
Posts: 46
Poder: 0
djemix Va por buen camino
Esto lo he entendido perfectamente, pero es que el problema lo tengo cuando en el campo del numero de argumentos me viene el #3, que me cortaria el paquete ahi... ese es el problema que tengo al usar el datapaket...
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
Usb en puerto serie :p D-MO Humor 10 30-06-2006 06:16:45
Puerto Serie Virtual. bquinterno API de Windows 3 12-06-2006 19:30:24
Imprimir a puerto serie anduj Impresión 4 25-02-2005 12:18:39
Puerto serie esquerda21 Varios 2 12-05-2004 23:58:52
Puerto serie y tcp mercurio Varios 3 28-10-2003 01:21:59


La franja horaria es GMT +2. Ahora son las 18:22:45.


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