Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   leer desde los puerto seriales. (https://www.clubdelphi.com/foros/showthread.php?t=21404)

G.A.R.S 16-05-2005 21:27:57

leer desde los puerto seriales.
 
Buenas.

Necesito poder leer una informacion desde una balanza conectada a mi PC por el puerto Comm1 existe un codigo ejecutado en VB 5 que lo realiza pero tiene algunos errores y quisiera integrarlo en Delphi de una vez.
Ya Ubique varios Link en esta pagina y en torry.net http://www.swissdelphicenter.ch/torr...ode.php?id=841 pero este especificamente que es bastante completo no me compila, me da el siguiente error al compilarlo: "Types of actual and formal var parameters must be identical", especificamente en la function de readtxt que es la que me interesa.

Les agradeceria mucho su ayuda.

Gilberto Ramos.

Jure 16-05-2005 21:34:20

...prueba este...
 
Si tienes el protocolo de comunicacion con la balanza, puedes hacerlo con cualquier componente, personalmente uso este:

http://www.torry.net/authorsmore.php?id=2760

Lo uso en D6 y D2005 Win32 y funciona muy bien.

Espero que te sirva la info.

;) ;) ;)

Jure.

G.A.R.S 16-05-2005 22:17:31

Gracias, ya lo baje solo que....
 
Buenas.

Disculpa el abuso solo que no soy muy experto en la materia, ya baje el componente e instale solo que no se como se utiliza y es un SOS, no me podrias indicar como usarlo, el sistema simplemente debe abrir el puerto, capturar lo que este en ese momento en el puerto comm1 y luego escribirlo en un .txt o directamente en un campo edit.

Gilberto Ramos

Jure 16-05-2005 23:26:55

...asi puedes empezar...
 
El componente tiene una buena ayuda, pero en terminos generales debes usarlo asi:

El componente que debes usar es TXComm, lo colocas en la forma donde lo vayas a utilizar, con el inspector de objetos le cambias las propiedades de que necesites con respecto a velocidad, puerto, bit de datos, de parada y paridad de acuerdo a las especificaciones de la balanza. Para abrir el puerto utilizas el metodo OpenDevice. Cuando envias una cadena utilizas SendString, aunque tambien puedes enviar byte con SendByte. para recibir utilizas ReadString o ReadByte de acuerdo a lo que necesites. Y al terminar recuerda utlizar CloseDevice para liberar el puerto.

De todas maneras como te dije la ayuda es muy buena y puede ayudarte de mucho.

;) ;) ;)

Jure.

Pascual Montes 17-05-2005 17:36:53

Como Instalar Este Componente En Delphi 2005 ?
 
Hello Colegas, Una Pregunta , Como Puedo Instalar
Este Componente ( Txcomm ) En Delphi 2005 ?
Ya Baje El Componente Completo Pero No Se Como Instalarlo.

Te Agradezco Tu Ayuda.:d

Pascual Montes 17-05-2005 18:50:08

Como Instalar Este Componente En Delphi 2005 ?
 
Hello Colegas, Una Pregunta , Como Puedo Instalar
Este Componente ( Txcomm ) En Delphi 2005 ?
Ya Baje El Componente Completo Pero No Se Como Instalarlo.

Te Agradezco Tu Ayuda.:d

Jure 17-05-2005 21:01:25

...si se puede...
 
Cita:

Empezado por Pascual Montes
....Como Puedo Instalar
Este Componente ( Txcomm ) En Delphi 2005 ?...

Yo lo uso en D6 y D2005 y funciona perfectamente.

Jure.

Pascual Montes 20-05-2005 23:09:03

ok, pero di como colega coopera, no seas malo !!!
 
colega dime como instalar el componente no me dejes en suspenso
el problema es que estoy acostumbrado a delphi 7, y en delphi 2005 no
se como hacer la instalacion, cuales son los pasos a seguir.
anda dime.!!!!


saludos

El que se pregunta como hacerlo empieza su camino a ser maestro en la materia
y el que asume que todo lo sabe sin saberlo empieza su camino a la mitomania
, el que asume que todo lo sabe y en realidad lo sabe , empieza su camino a ya no aprender mas y quedarse en el mismo lugar.

Jure 21-05-2005 15:14:01

...asi...
 
Epale Pascual, el componentes no tiene un paquete de instalacion entonces hay que hacerlo manualmente, yo cree un nuevo paquete para Delphi Win32 y le agregué el archivo Reg.pas que esta la carpeta Source, y luego simplemente compilas e instalas. Luego de esto ya lo puedes utilizar en tus aplicaciones Win32 hechas en D2005. Lo he hecho con varios componentes que no traen paquete para instalar en D2005 Win32 y me han funcionado bien.

Espero haberte ayudado.

;) ;) ;)

Jure.

G.A.R.S 24-05-2005 21:38:14

Ayuda.
 
Disculpen el fastidio solo que de verdad no entiendo muy bien el componente, sera posible que me pases un fracmento de tu codigo, seguramente para ustedes mi requerimiento es sencillo.
  • Abrir el puerto.
  • Leer el puerto.
  • Escribir el resultado a un .txt
  • Cerra el puerto.
este es el codigo de VB 5 que se utilizo, deseo es colocarlo en Delphi.

Private Sub Form_Load()
com1.InBufferCount = 0
com1.CommPort = 1
On Error Resume Next
If Err = 8005 Then
MsgBox "Puerto ya esta en uso", vbCritical, "Balanza"
End If
com1.Settings = "9600,N,8,1"
On Error Resume Next
Select Case Err
Case 8007
MsgBox "Error, Rata de transmisión no válida!", vbCritical, "Balanza"
Case 8008
MsgBox "Error, Tamaño de la información no válido!", vbCritical, "Balanza"
Case 8009
MsgBox "Error, valores por defecto no válidos!", vbCritical, "Balanza"
End Select
'**********************************
If com1.PortOpen = False Then
com1.PortOpen = True
End If
On Error Resume Next
If Err = 8018 Then
MsgBox "Error, El Puerto esta Cerrado", vbCritical, "Balanza"
End If
com1.Output = "AT" + Chr$(13)
Do
DoEvents
Loop Until com1.InBufferCount >= 2
Instring = com1.Input
Label1.Caption = Instring
com1.PortOpen = False
com1.InputLen = 8
com1.InBufferCount = 0
End Sub

Para el amigo que esta consultando como se instala es sencillo, descomprimes el archivo en un carpeta lo copias en en la carpeta de tus librerias seleccionas por component > install component, lo ubicas y compilas.

G.A.R.S.

Jure 24-05-2005 23:54:25

...a ver esto...
 
Hola G.A.R.S, veo el codigo VB que nos muestras, primero me parece un poco confuso, voy a darte un fracmento de codigo que utilizo recuperar datos de un caja registradora por el puerto serial:

Código Delphi [-]
    ....
if XComm1.OpenDevice then;  // Abres el puerto
begin    
    if XComm1.SendString(Comando) then // Envio la cadena comando
    begin
      Cadena := '';
      I := 0;
      while (I < 5) do // hago el ciclo para contar 4 despues de ETX
      begin
        XComm1.ReadByte(Caracter) then
        begin
          if (Caracter = 18) then // Este valor me indica que tengo que esperar
          begin                         
            Sleep(400); // Detengo la ejecución del programa por 400 msg
            Application.ProcessMessages;
          end else
          begin
              Cadena := Cadena + Char(Caracter); // hago la cadena 
              
              // ETX es una constante     

              If Caracter = ETX then I := 1; // despues de este caracter 
              if I > 0 then I := I + 1;          // empiezo el contador
          end;
        end;
      end;
    end else
    begin
      Codigo := 66;
      Cadena := 'Error de Comunicación 66';
    end;
    XComm1.CloseDevice;
    .....

Despues valido la cadena que recibo. Porque lo efectué de esta manera, porque no nunca se el tamaño exacto, solo se que la cadena que recibo despues del valor ETX tiene 4 caracteres que representan un valor hex del tamaño en caracteres de la cadena, con el cual verifico si esta bien. El codigo original es mucho mas largo porque recibo varias respuestas de acuerdo a los comandos que le mando, y tengo que hacer una serie de validaciones que no vienen al caso. Otra cosa a mi el equico me envia un byte valor 18 que significa que debo esperar por 400 msegs por el resto de la info. Creo que deberias leer bien el manual del protocolo de comunicacion de la balanza y adaptarlo a lo que necesitas.

Espero que te sirva.

;) ;) ;)

Jure.


La franja horaria es GMT +2. Ahora son las 14:54:14.

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