Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-07-2006
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 22
zugazua2001 Va por buen camino
Muchisimas gracias, hoy voy a probarlo.

Muchas gracias amigo hoy voy a probarlo.

Cita:
Empezado por seoane
Fijándome mejor en los parámetros que utiliza el código de ejemplo, puede que la configuración del puerto que estamos buscando sea la siguiente:


Código Delphi [-]
with DCB do
begin
BaudRate := CBR_9600;
ByteSize := 7;
Parity := ODDPARITY;
StopBits := TWOSTOPBITS;
Flags := $03;
end;


Responder Con Cita
  #2  
Antiguo 18-07-2006
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 22
zugazua2001 Va por buen camino
No me esta funcionando, si el hiperterminal

Hola amigos del foro, he pasado el codigo este ultimo a mi aplicacion.
Probe con el hiperterminal y me va tirando los pesos perfecto, cuando ejecuto mi aplicacion se queda en la sentencia siguiente, en el ReadFile(hport,....), es mas no intenta seguir leyendo mas caracteres.

repeat
ReadFile(hPort,C,1,Leidos,nil);
until C = #02;

por favor si me pueden ayudar se los agradeceria, la configuracion que anda perfecta en el hiperterminal es:

velocidad:9600
bits: 7
paridad: impar
bits de parada: 2


Gracias por todo nuevamente. Otra cosa yo utilizo el windows XP puede ser por eso que no me funciona?
Responder Con Cita
  #3  
Antiguo 18-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Vamos por partes. El programa se queda parado en la instrucción ReadFile, o te refieres a que no sale del bucle. Si se queda parado en el ReadFile es que no le esta llegando nada, y si no sale del bucle es que no le manda le carácter #02 como se indicaba en la instrucciones, prueba eliminando ese bucle haber que pasa.

Si por el contrario se queda parado en el ReadFile es que no esta llegando la información al puerto serie, puede ser debido a muchas cosas, pero algo de lo que pone las instrucciones

Cita:
NOTA: La instrucción OPEN "COM..., provoca que la línea RTS cambie de nivel lógico. Esto actúa como pedido de transmisión al cabezal, que enviará la información antes detallada.
me hace pensar que hay que jugar con el valor de RTS para que todo funcione. Así que activemos la linea RTS y veamos que pasa:

Código Delphi [-]
...

     if SetCommState(hPort, DCB) then
      begin
        PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or
          PURGE_RXCLEAR);
        // Aqui esta la rutina para leer
        C:= #0;
        // Activamos la linea RTS
        EscapeCommFunction(hPort,SETRTS);
        // Esperamos el caracter de inicio
        repeat
          ReadFile(hPort,C,1,Leidos,nil);
        until C = #02;
        // Leemos el peso
        repeat
          ReadFile(hPort,C,1,Leidos,nil);
          if C <> #13 then
            Result:= Result + C;
        until C = #13;
        // aqui termina
      end;

...

Tambien seria interesante, ya que dices que con el hyperterminal va bien, que tipo de control de flujo estas usando. Es el unico parametro que me falta por saber.
Responder Con Cita
  #4  
Antiguo 18-07-2006
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 22
zugazua2001 Va por buen camino
Se queda colgada en la sentencia Readfile(..)

En efecto se queda colgada en la sentencia ReadFile(...)

Muchisimas gracias por molestarte nuevamente y mañana voy hasta la balanza y lo pruebo.
Responder Con Cita
  #5  
Antiguo 18-07-2006
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 22
zugazua2001 Va por buen camino
Configuracion del hiperterminal que funciona bien

Te paso la configuracion del hiperterminal que me funciona bien:

configuracion del puerto:

bits x seg: 9600
Bits de datos: 7
Paridad: impar
Bits de parada: 2
Control de flujo: hardware

Gracias nuevamente.
Responder Con Cita
  #6  
Antiguo 18-07-2006
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 22
zugazua2001 Va por buen camino
Lo probe y se queda en el readfile()

Hola amigo estoy muy complicado, se queda igualmente en el readfile().

No se que cambiar. Gracias nuevamente.
Responder Con Cita
  #7  
Antiguo 18-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Lo único que se me ocurre es que también tenga que estar activada la linea DTR además de RTS. Vamos a cambiar los Flags de tal modo que estas se activen al abrir el puerto y permanezcan activas. Echo este cambio no abría ninguna diferencia entre lo que estamos haciendo nosotros y lo que hace el hyperterminal.

Código Delphi [-]
function Peso(Puerto: String): String;
var
  hPort: THandle;
  DCB: TDCB;
  Leidos: Cardinal;
  C: char;
begin
  Result:= '';
  Puerto:= Uppercase(Puerto);
  // Cambiar esto si es necesario un puerto diferente
  if (Puerto<>'COM1') and (Puerto<>'COM2') then
    exit;
  hPort:= CreateFile(PChar('\\.\'+Puerto), GENERIC_READ or GENERIC_WRITE,0, nil,
    OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if hPort<>INVALID_HANDLE_VALUE then
  begin
    DCB.DCBlength:= sizeof(DCB);
    if GetCommState(hPort,DCB) then
    begin
      // Cambiar esto para una configuracion del puerto diferente
      with DCB do
      begin
        BaudRate := CBR_9600;
        ByteSize := 7;
        Parity   := ODDPARITY;
        StopBits := TWOSTOPBITS;
        // Aqui es donde indicamos que active RTS y DTR
        Flags    := $1013;
        // Si no funciona prueba tambien con este otro valor
        // Flags := $1011;
      end;
      if SetCommState(hPort, DCB) then
      begin
        PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or
          PURGE_RXCLEAR);
        // Aqui esta la rutina para leer
        C:= #0;
        // Esperamos el caracter de inicio
        repeat
          ReadFile(hPort,C,1,Leidos,nil);
        until C = #02;
        // Leemos el peso
        repeat
          ReadFile(hPort,C,1,Leidos,nil);
          if C <> #13 then
            Result:= Result + C;
        until C = #13;
        // aqui termina
      end;
    end;
    CloseHandle(hPort);
  end;
end;

Esperemos que haya suerte de esta vez, ya me quede sin ideas
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Pasar de delphi 7 a Delphi 2006 (problemas con VCL) jmlifi .NET 8 24-01-2006 15:51:30
Pasar de Excel a Delphi CamiloU Conexión con bases de datos 2 05-01-2006 14:03:24
Pasar Delphi 5 a 6,7 y viceversa Ivanzinho Varios 2 29-11-2005 10:36:14
Pasar salidas delphi a xml friendspark Varios 3 14-11-2005 18:23:56
Pasar cabecera dll en C++ a delphi mar646 API de Windows 0 15-04-2005 19:18:47


La franja horaria es GMT +2. Ahora son las 10:21:09.


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