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 14-05-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Componente Tcomport

Hola a todos

Estoy empezando un sistema para comisariatos estos tienen unas balanzas electronicas con salida rs232, pues bien me he bajado el Tcomport y funciona perfecto su componente Tmonitor ase exactamente lo que deseo , pero la pregunta es la siguiente

1.- Alguien tiene experiencia en este componente , como tomo el dato que produce el Tmonitor , hay un evento que lanza el valor pero me gustaria es saber la forma en que tmonitor trata los datos que recibe la balanza lanza el dato por demanda es decir que siempre lo esta enviando y eso produce un efecto de parpadeo en la ventana cuando un lo asigna en este caso a un Tedit, que me aconsejan



De antemano
Gracias
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 14-05-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Para el parpadeo mírate la propiedad DoubleBuffer.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 15-05-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias Marcos , Probare y avisare
__________________
IVAND
Responder Con Cita
  #4  
Antiguo 19-05-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Te comento que he probado lo que me indicas pero sigue el parpadeo ya no c que hacer que alguien me de una luz ... Gracias
__________________
IVAND
Responder Con Cita
  #5  
Antiguo 19-05-2005
José Arce José Arce is offline
Miembro
 
Registrado: may 2003
Ubicación: Mollet del Valles (Barcelona)
Posts: 35
Poder: 0
José Arce Va por buen camino
Hola ivand, prueba a subir la propiedad PollingDelay, si la has dejado por defecto la tendrás a 50 milisegundos, súbela a 150 o 200, yo lo solucione así.

Un saludo José Arce
Responder Con Cita
  #6  
Antiguo 20-05-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Hola Jose, probare lo que comentas aunque me estoy dando cuenta el envio de informacion esta bien pues la actualizacion debe ser inmediata el problema me parece es en mantener estatico el valor enviado por el puerto a un campo en este caso lo estoy enviando a un Tedit. cuando se actualiza se produce el parpadeo propio de la entrada contunia del dato

El 2do, problema es manejar la cadena que se envia al puerto si te as fijado el componente Tmonitor ase lo que yo quiero exactamente pero como lo hace es la gran pregunta

Nota : Si hubiera una manera de tomar el dato tal como lo muestra el componente Tmonitor estaria mi problema solucionado



Gracias por tu respuesta , probare y comentare
__________________
IVAND
Responder Con Cita
  #7  
Antiguo 22-05-2005
José Arce José Arce is offline
Miembro
 
Registrado: may 2003
Ubicación: Mollet del Valles (Barcelona)
Posts: 35
Poder: 0
José Arce Va por buen camino
Hola ivand, quizás el problema sea que va mostrando caracteres según los vas recibiendo, lo que yo hago es ir metiendo los caracteres recibidos en una variable string, y cuando me llega el carácter de fin de transmisión entonces la muestro, el componente que usas no lo conozco, pues por Tcomport hay varios con el mismo nombre, pero todos son muy parecidos, si te da lo mismo cambiar de componente te puedo enviar el que uso junto con una rutina de lectura hecha para delphi5(no creo que te de problemas en una versión superior), ya comentaras.

Un saludo José Arce
Responder Con Cita
  #8  
Antiguo 22-05-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Hola José Arce:

Convendría que esa rutina la pusieras en este hilo así todos podrán ver el código probarlo y comentarlo, naturalmente eres muy libre de no hacerlo pero como el Foro es un lugar para compartir conocimientos, sería de agradecer si así lo hicieres.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 23-05-2005 a las 07:13:57.
Responder Con Cita
  #9  
Antiguo 26-05-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Hola José

Primero gracias por tu consejo, es gratificante para los miembros de este foro saber que siempre puede contar con alguien que te de la mano , te agradeceria si me envias la rutina pues eso ayudaria mucho en mi labor

Nota : No me interesa utilizar uno o otro componete lo que me interesa son los resultados , ademas como se cuando se acaba el fin de transmicion de la cadena




De antemano Gracias
__________________
IVAND
Responder Con Cita
  #10  
Antiguo 26-05-2005
José Arce José Arce is offline
Miembro
 
Registrado: may 2003
Ubicación: Mollet del Valles (Barcelona)
Posts: 35
Poder: 0
José Arce Va por buen camino
Hola ivand, estoy de viaje y no tengo la rutina a mano, pero en cuanto este por casa la expondre en el foro, el caracter de fin de transmision lo tienes en el protocolo de comunicaciones en el manual de la bascula (normalmente suele ser el 3 o el 13), el componente tambien lo expondre.

Un saludo Jose Arce
Responder Con Cita
  #11  
Antiguo 01-03-2007
Mosis2k2 Mosis2k2 is offline
Miembro
 
Registrado: feb 2007
Posts: 12
Poder: 0
Mosis2k2 cantidad desconocida en este momento
Hola, lo que puedes hacer es tomar la cadena de caracteres recibidos y guardarlos en una variable, y cada vez que recibes la cadena del puerto serial, compararla con la cadena anterior, y si son diferentes mostrarla de lo contrario no mostrar nada.
Responder Con Cita
  #12  
Antiguo 13-06-2011
hugobenitez hugobenitez is offline
Miembro
 
Registrado: oct 2006
Posts: 24
Poder: 0
hugobenitez Va por buen camino
TComPort en otro equipo

Hola marcoszorrilla: te hago una consulta, y de te agradezco de antemano si me puedes ayudar. Hice un programa donde utilizo el componente TComPort, el mismo lo agregue a mi paleta de componentes compilando el DPK y luego la instalacion, hasta ahi todo bien, anda en el programa siempre y cuando tenga delphi instalado. Mi problema empieza cuando le llevo a mi cliente el exe y me da errores como: "Win32 Error. Code 6. Controlador no Valido". Podrias decirme que me falta o que tengo que hacer, entiendo que el componente no llego al EXE, apesar de que desctive la casilla "Build with runtime packages" en Project-Options.

Mil gracias.
Responder Con Cita
  #13  
Antiguo 14-06-2011
Mosis2k2 Mosis2k2 is offline
Miembro
 
Registrado: feb 2007
Posts: 12
Poder: 0
Mosis2k2 cantidad desconocida en este momento
Componente Tcomport uncionando correctamente

Cita:
Empezado por hugobenitez Ver Mensaje
Hola marcoszorrilla: te hago una consulta, y de te agradezco de antemano si me puedes ayudar. Hice un programa donde utilizo el componente TComPort, el mismo lo agregue a mi paleta de componentes compilando el DPK y luego la instalacion, hasta ahi todo bien, anda en el programa siempre y cuando tenga delphi instalado. Mi problema empieza cuando le llevo a mi cliente el exe y me da errores como: "Win32 Error. Code 6. Controlador no Valido". Podrias decirme que me falta o que tengo que hacer, entiendo que el componente no llego al EXE, apesar de que desctive la casilla "Build with runtime packages" en Project-Options.

Mil gracias.
Hola hugobenitez.

Yo tengo un componente TComport, que no estoy seguro de si sera el mismo, pero ese componente lo he usado con WinXP, WinVista, Win7, sin problema alguno, si te interesa, ponte en contacto conmigo: jcmr1976@hotmail.com
Responder Con Cita
  #14  
Antiguo 14-06-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Hola.

Aquí te envío un ejemplo de la captura del evento "Receivedata" del componente por si te sirve.

Código Delphi [-]

procedure TFormularioVentasTactil.PesoReceiveData(Sender: TObject;
  DataPtr: Pointer; DataSize: Cardinal);
var
  iLastLine, i: integer;
  s, ss: string;
begin
//
  //Convertimos los datos recibidos en una cadena
  s := StringOfChar(' ', DataSize);
  Move(DataPtr^, pchar(s)^, DataSize);

  //Salimos si recibimos el caracter nulo
  while Pos(#0, s) > 0 do
    Delete(s, pos( #0, s ), 1);

  //Comprobamos que la cadena recibida no este vacia o que el valor que esta recibiendo sea '0000000'(que no hay nada en el peso)
  if (s = '') then begin
    Exit;
  end;
  if (Pos('0000000',s) = 1) and (Not Pesamos) then exit;

  if Pos('0000000',s)=1 then
    Pesamos:=False
  else
    Pesamos:=True;

  // Remove line feeds
  i := pos( #10, s );
  while i <> 0 do begin
    delete( s, i, 1 );
    i := pos( #10, s );
  end;

  // Don't redraw the rich edit control until we finished updating it
  //IncomingRichEdit.Lines.BeginUpdate;
  // Get last line index
  iLastLine := NTMemo1.Lines.Count-1;
  // If the rich edit is empty...
  if iLastLine = -1 then begin
    // Remove line feeds from the string
    i := pos( #10, s );
    while i <> 0 do begin
      delete( s, i, 1 );
      i := pos( #10, s );
    end;
    // Remove carriage returns from the string (break lines)
    i := pos( #13, s );
    while i <> 0 do begin
      ss := copy( s, 1, i-1 );
      delete( s, 1, i );
      NTMemo1.Lines.Append( ss );
      i := pos( #13, s );
    end;
    NTMemo1.Lines.Append( s );

  end else begin
    // String to add is : last line added + new one
    s := NTMemo1.Lines[iLastLine] + s;
    // Remove carriage returns (break lines)
    i := pos( #13, s );
    while i <> 0 do begin
      ss := copy( s, 1, i-1 );
      delete( s, 1, i );
      if iLastLine <> -1 then begin
        NTMemo1.Lines[iLastLine] := ss;
        iLastLine := -1;
      end else begin
        //introducimos cantidad en el grid de ventas
        NTMemo1.Lines.Append( ss );
      end;
      if ss<>'0000000' then begin
        MiVenta.CambiaModoEdit(tEntradaDatos);
        NtEditTotal.TomaValor(ss);
      end else begin
        Miventa.CambiaModoEdit(tPresentaTotal);
      end;
      i := pos( #13, s );
    end;

    if iLastLine <> -1 then
      NTMemo1.Lines[iLastLine] := s
    else
      NTMemo1.Lines.Append( s );
  end;

end;

Saludos
Responder Con Cita
  #15  
Antiguo 15-06-2011
hugobenitez hugobenitez is offline
Miembro
 
Registrado: oct 2006
Posts: 24
Poder: 0
hugobenitez Va por buen camino
Solucionado TComPort

Hola Newtron, te agradezco enormemente tu aporte!! te cuento tengo el TComPort 3.0, el tema fue que el puerto que habia programado para la balanza era el COM1 y el puerto en mi cliente era COM3 y claro, al intentar acceder al componente me daba ese error. El tema no termino ahi, despues de haberme dado cuenta de mi gran error, puse a imprimir una TM88IV (epson termica USB), que al enviar el comando de impresion se me colgaba el programa. La solucion fue el sagrado TRY EXCEPT en un evento del TComPort porque al enviar la impresion "no se porque" leia otros numeros que generaban un error en el TComPort. El codigo para arreglarlo fue:

procedure TCustomComPort.DoRxChar(Count: Integer);
begin
try
if Assigned(FOnRxChar) then
FOnRxChar(Self, Count);
except
end;
end;

El TComPort que tengo me lee los datos de la balanza desde este evento, y aqui se generaba el error mas grave.

Espero sirva mi pequeñito aporte. Un Abrazo a ti Newtron y a todos los del club que me ayudaron a aprender un monton de cosas!!!!
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


La franja horaria es GMT +2. Ahora son las 03:20:04.


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