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 25-08-2005
Avatar de Jobev Lee
Jobev Lee Jobev Lee is offline
Registrado
 
Registrado: jul 2005
Posts: 8
Poder: 0
Jobev Lee Va por buen camino
Colaboremonos entonces...

Bueno, te cuento una buena.. tengo alguito de experiencia haciendo software para basculas, me facilitaria de harto saber si te estas comunicando directamente con la bascula o estas usando un indicador como intermediario...

Yo he hecho la mayoria de estos software en Delphicito y el Java, pero para serte sincero, nunca use ese componente que mencionas...(commport) ... Mejor te sale hacer una cosa, create tu propia libreria de captura de datos por el puerto Serial usando las instrucciones del Window (SDK)... a continuacion te mando el codigo de la unidad que podrias usar...
Código:
unit URS232;
interface
uses
	Windows, SysUtils;
type

	TRS232=class
	private
	   hCommFile : THandle;
	   sPuerto : String;
	public
	   constructor Create(lsPuerto: String; liBanda:Cardinal;
						  liByteSize, liParidad, liBitParada:Byte);
	   function LeerBuffer: string;
	   procedure EscribirBuffer(lsMensaje:string);
	end;
implementation
{ TRS232 }
constructor TRS232.Create(lsPuerto: String; liBanda:Cardinal;
						  liByteSize, liParidad, liBitParada:Byte);
var CommTimeouts : TCommTimeouts;
	CommConfig: TCommConfig;
	sizeConfig :  Cardinal;
begin
  sPuerto := lsPuerto;
hCommFile := CreateFile(PChar(sPuerto),
						  GENERIC_READ or GENERIC_WRITE,
						  0,
						  nil,
						  OPEN_EXISTING,
						  FILE_ATTRIBUTE_NORMAL,
						  0);
with CommTimeouts do
begin
  ReadIntervalTimeout := 0;
  ReadTotalTimeoutMultiplier := 0;
  ReadTotalTimeoutConstant := 300;
  WriteTotalTimeoutMultiplier := 0;
  WriteTotalTimeoutConstant := 200;
end;
if not SetCommTimeouts(hCommFile, CommTimeouts) then
	raise Exception.Create(Problemas estableciendo CommTimeouts);

	GetCommConfig(hCommFile, CommConfig, sizeConfig);
	with CommConfig do
	begin
		dcb.BaudRate := liBanda;//9600;//38400;//<-- Se comunica a esa velocidad ????
		dcb.ByteSize := liByteSize; //8;
		dcb.Parity := liParidad;//NOPARITY; //EVENPARITY;
		dcb.StopBits := liBitParada;;
	end;
	if not SetCommConfig(hCommFile, CommConfig, sizeConfig) then
	   raise Exception.Create(Problemas al querer establecer la configuracion);
end;

procedure TRS232.EscribirBuffer(lsMensaje: string);
var NumberWritten:dword;
begin
if hCommFile = INVALID_HANDLE_VALUE then
		raise Exception.Create('No se puede enviar los datos');
		WriteFile(hCommFile,
			PChar(lsMensaje)^,
			Length(lsMensaje),
			NumberWritten,
			nil);
end;

function TRS232.LeerBuffer: string;
var sTmp:string;
	c1:integer;
	chBuffer:array[0..255] of char;
	NumberOfBytesRead : dword;
begin
if hCommFile=INVALID_HANDLE_VALUE then exit;
if not ReadFile (hCommFile, chBuffer, sizeof(chBuffer),
			  NumberOfBytesRead, Nil) then
	raise Exception.Create('Imposible leer datos desde el puerto');
for c1:= 0 to NumberOfBytesRead - 1 do
	  sTmp:= sTmp+chBuffer[c1];
result:=sTmp;
end;
end.
...ahora, para mejor uso, te aconsejo que lo metas en un Hilo (que seria lo correcto) o en un timer (salida rapida) en donde tendrias que estar consultando si hay datos o no... eso lo consigues guardando el valor de la funcion en una variable local, y luego preguntas por el valor de la cadena, si es vacia.. no hay nada,,, si no... pues ya tu beras como se maneja...

Espero te sirva de ayuda cumpa, ami me funca... claro si es que estas trabajando en delphicito... ... cualquier cosa mantengamonos en contacto...

Atte..

Jobev Lee
Responder Con Cita
  #2  
Antiguo 25-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Me he tomado la libertad de editar un tanto la unidad que ha publicado Jobev Lee para que esta compile (faltaban simplemente un par de comillas simples en alguna que otra cadena de caracteres) y para mostrarla dentro de las etiquetas DELPHI, tan oportunas en este caso como útiles para quien quiera echar un vistazo al código de la unidad que a continuación copio:

Código Delphi [-]
 unit URS232;
 
 interface
 
 uses
     Windows, SysUtils;
 
 type
     TRS232 = class
     private
     sPuerto: string;
     hCommFile: THandle;
     public
     function LeerBuffer: string;
     procedure EscribirBuffer(lsMensaje: string);
     constructor Create(lsPuerto: string; liBanda: Cardinal;
       liByteSize, liParidad, liBitParada: Byte);
     end;
 
 implementation
 
 { TRS232 }
 
 constructor TRS232.Create(lsPuerto: String; liBanda: Cardinal;
   liByteSize, liParidad, liBitParada:Byte);
 var
   CommTimeouts : TCommTimeouts;
     CommConfig: TCommConfig;
     sizeConfig :  Cardinal;
 begin
   sPuerto := lsPuerto;
   hCommFile := CreateFile(PChar(sPuerto),
     GENERIC_READ or GENERIC_WRITE, 0, nil,
       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 
   with CommTimeouts do
   begin
     ReadIntervalTimeout := 0;
     ReadTotalTimeoutMultiplier := 0;
     ReadTotalTimeoutConstant := 300;
     WriteTotalTimeoutMultiplier := 0;
     WriteTotalTimeoutConstant := 200;
   end;
 
   if not SetCommTimeouts(hCommFile, CommTimeouts) then
       raise Exception.Create('Problemas estableciendo CommTimeouts');
 
     GetCommConfig(hCommFile, CommConfig, sizeConfig);
     with CommConfig do
     begin
         dcb.BaudRate := liBanda;    //9600;//38400;// <-- Se comunica a esa velocidad ????
         dcb.ByteSize := liByteSize; //8;
         dcb.Parity   := liParidad;  //NOPARITY; //EVENPARITY;
         dcb.StopBits := liBitParada;;
     end;
     if not SetCommConfig(hCommFile, CommConfig, sizeConfig) then
     raise Exception.Create('Problemas al querer establecer la configuracion');
 end;
 
 procedure TRS232.EscribirBuffer(lsMensaje: string);
 var
   NumberWritten:dword;
 begin
   if hCommFile = INVALID_HANDLE_VALUE then
     raise Exception.Create('No se puede enviar los datos');
   WriteFile(hCommFile, PChar(lsMensaje)^,
     Length(lsMensaje), NumberWritten, nil);
 end;
 
 function TRS232.LeerBuffer: string;
 var
   sTmp: string;
     c1: integer;
     chBuffer: array[0..255] of char;
     NumberOfBytesRead: dword;
 begin
   if hCommFile=INVALID_HANDLE_VALUE then
     Exit;
   if not ReadFile(hCommFile, chBuffer,
     sizeof(chBuffer), NumberOfBytesRead, nil) then
         raise Exception.Create('Imposible leer datos desde el puerto');
   for c1:= 0 to NumberOfBytesRead - 1 do
     sTmp:= sTmp+chBuffer[c1];
   result:=sTmp;
 end;
 
 end.

Actualización: Si a alguien le place, puede descargarse la unidad que puede verse más arriba en el archivo que se adjunta a este mensaje.
Archivos Adjuntos
Tipo de Archivo: zip URS232.zip (1,1 KB, 356 visitas)
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 25-08-2005 a las 16:23:27. Razón: (actualización)
Responder Con Cita
  #3  
Antiguo 25-08-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 531
Poder: 24
IVAND Va por buen camino
Atentos como siempre

Gracias a todos x colaborar estoy probando la unidad que enviaron y la probare .. les comento que el dato es tomado directamente de la bascula en modo ininterrumpido es decir siempre la balanza esta enviado el dato por lo que se muestra en el display de esta se debe reflejar en la pantalla de mi pc

Nuevamente gracias

Espero que mas colaboren con nuevas ideas para avanzar todos


De antemano, Gracias
__________________
IVAND
Responder Con Cita
  #4  
Antiguo 28-08-2005
Avatar de Jobev Lee
Jobev Lee Jobev Lee is offline
Registrado
 
Registrado: jul 2005
Posts: 8
Poder: 0
Jobev Lee Va por buen camino
Talking

Ups.. gracias. cumpa por la correcciòn... jejeje... pero vale.....
Responder Con Cita
  #5  
Antiguo 29-08-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 531
Poder: 24
IVAND Va por buen camino
Gracias a la invalorable ayuda de mi amigo Fidel por fin he utilizado correctamente los componentes Comport ... con el permiso otorgado por Fidel cualquier compañero que necesite el codigo puede pedirmelo con gusto se los enviare


Atentamente,

Iván Dávila
__________________
IVAND
Responder Con Cita
  #6  
Antiguo 24-08-2006
davidelkata davidelkata is offline
Miembro
 
Registrado: jun 2003
Posts: 15
Poder: 0
davidelkata Va por buen camino
Wink Ayuda balanza

Tengo una balanza XWILD-15P y no consigo de ninguna manera capturar información de ella alguien conoce esta balanza y puede decirme algo se agradeceria la respuesta es bastante urgente.
Un saludo.
__________________
Katalan
Responder Con Cita
  #7  
Antiguo 24-08-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por davidelkata
Tengo una balanza XWILD-15P y no consigo de ninguna manera capturar información de ella alguien conoce esta balanza y puede decirme algo se agradeceria la respuesta es bastante urgente.
Un saludo.
¿No venía acompañada de un manual técnico? ¿has preguntado a tu proveedor si dispone de alguno? ¿al fabricante? ¿a san google?

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 31-08-2006
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 21
JULIPO Va por buen camino
saludos cordiales me parece importante que publiques el trabajo con las librerias y de partida indiques el web site donde se consiguen.

saludos
Responder Con Cita
  #9  
Antiguo 08-02-2008
RGW RGW is offline
Registrado
 
Registrado: ene 2008
Posts: 1
Poder: 0
RGW Va por buen camino
Hola:
He utilizado la libreria URS232, la cual me permitio usar el constructor Create para crear el puerto pero no logro escribir y leer del mismo alguien podria mandarme un ejemplo sencillo de como leer y escribir.

Muchas Gracias
Responder Con Cita
  #10  
Antiguo 30-03-2020
ambiorixml ambiorixml is offline
Registrado
 
Registrado: jun 2017
Posts: 7
Poder: 0
ambiorixml Va por buen camino
Usar comport

Cita:
Empezado por IVAND Ver Mensaje
Gracias a la invalorable ayuda de mi amigo Fidel por fin he utilizado correctamente los componentes Comport ... con el permiso otorgado por Fidel cualquier compañero que necesite el codigo puede pedirmelo con gusto se los enviare


Atentamente,

Iván Dávila

******************Podrias facilitarme el codigo fuente para utilizar correctamente el componente comport en delphi 6 para una bascula Datalogic Magellan 8300 / 8400?
Responder Con Cita
  #11  
Antiguo 16-04-2020
ambiorixml ambiorixml is offline
Registrado
 
Registrado: jun 2017
Posts: 7
Poder: 0
ambiorixml Va por buen camino
Buenas,

Equipo, este es el codigo que estoy utilizando pero no me funciona con la bascula DATALOGIC MAGELLAM 8300, alguien me puede colaborar.

Código Delphi [-]
procedure TFormTpv.TimerPesoTimer(Sender: TObject);
Var
     Peso : String;
     PesoNumero,eCantidad : Double;
     Pesar : TComport;
     liBanda:Cardinal;
begin
  Try
   // ***Le asigno los parametros seleccionados para la prueba de conecion y lectura de la balanza.
    Memo1.Lines.Add('INICIO'); //Para controlar los eventos ocurridos.
    Pesar.Connected:=False;
    Pesar.Port:=ComPort1.Port;
    Pesar.BaudRate:=ComPort1.BaudRate;
    Pesar.DataBits:=ComPort1.DataBits;
    Pesar.StopBits:=ComPort1.StopBits;
    Pesar.Parity:= ComPort1.Parity;
    Pesar.Connected:=True;
    Memo1.Lines.Add('CONECTADO'); //Para controlar los eventos ocurridos.
    Sleep(250);
    Pesar.ReadStr(Peso,15);
    Edit1.Text:=Peso;
    Pesar.Close;
    Edit2.Text:=Copy(Edit1.Text,3,8);
    //Edit2.Text:=CambiaEn(Edit2.Text,'.',',');
    eCantidad:=StrToFloat(Edit2.Text);
    Memo1.Lines.Add('LECTURA'); //Para controlar los eventos ocurridos.
    TimerPeso.Enabled:=False;// No lo detengo de momento para ver lo que hace.
    Memo1.Lines.Add('FIN');
  Except
     on E: exception do
     begin
     Memo1.Lines.Add('ERROR...'); //Para controlar los eventos ocurridos.
     Memo1.Lines.Add(e.message);
     eCantidad:=0;
    //TimerPeso.Enabled:=False;  // No lo detengo de momento para ver lo que hace.
    end;
  End;
end;

procedure TFormTpv.Button1Click(Sender: TObject);
begin
// Habilitado para poder hacer cambios en las paremetrizaciones del componente TCOMPORT.
TimerPeso.Enabled:= false;
ComPort1.ShowSetupDialog;
TimerPeso.Enabled:= true;
end;
end.

Última edición por Casimiro Noteví fecha: 16-04-2020 a las 12:44:14.
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


La franja horaria es GMT +2. Ahora son las 22:15:44.


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