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 29-03-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Yo pienso una posible solución, es hacer un Hook para el teclado, y la única distinción entre el ingreso por teclado por parte del usuario, respecto del enviado por el lector, es la velocidad, claro está, mucho más rápida esta última.
Con respecto a acceder directamente al puerto, (0x060) tiene el conflicto de necesitar establecerse por driver, a nivel del kernel, ya que XP no lo permite de otra forma, y habría que convertir la data binaria al formato que quieras.
Yo particularme prefiero el método mediante un Hook, tipo TKeyboardHook, ya que todos los lectores CCD, tienen la carecterística de definir el caracter terminal, pudiendose utilizar éste para la distinción usuario/lector.
Los lectores que emulan teclado son los más económicos, pero tienen sus limitaciones. Fueron creados con el fin de satisfacer terminales TPV, donde la mayoría de los casos, por no decir todos, siempre tienen un elemento con el foco, como en tu caso, un TEdit.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 30-03-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Porbando lo que decias, a nivel de Puerto, hice este ensayo:

- Colocando 2 Memos en un form, y haciendo uso de esta dll
http://logix4u.net/Legacy_Ports/Para...000/NT/XP.html

Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Memo1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
function Inp32(wAddr:word):byte; stdcall; external 'inpout32.dll';
function Out32(wAddr:word;bOut:byte):byte; stdcall; external 'inpout32.dll';

{$R *.dfm}
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
var leido:byte;
begin
  leido:=Inp32($060);
  Memo1.Text:=(IntToStr(leido));
  case leido of   //por cada código
    2: begin
          memo2.Text:=memo2.Text+IntToStr(leido-1);
        end;
    3: begin
          memo2.Text:=memo2.Text+IntToStr(leido-1);
        end;
end;
end;
end.

Me resulta bastante incómodo, por 2 razones. Se mezclan flags de la INT33 (mouse) con el Port 0x060 del teclado PS/2, por lo que un simple clic (Flag Dx) altera el curso del Port 0x060, efecto no deseable pero tratable. Y lo más
molesto, es que si cronometrás el evento en cada KeyPress, el envío del scanner CCD equivale a mantener presionada una tecla, es decir tener un KeyDown siempre en true, aunque visualmente no lo parezca, pero las mediciones manda. Voy a seguir viendo o mejor dicho encontrando una forma de distinguir entre Usuario y Scanner CCD, pienso que el quiz está en el Buffer del teclado, Probaste mantener una tecla presionada o presionarla justo en el mismo momento que el scanner envia el dato?

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #3  
Antiguo 16-12-2009
firestone2 firestone2 is offline
Registrado
 
Registrado: mar 2008
Posts: 3
Poder: 0
firestone2 Va por buen camino
Lo mas sencillo para lo que intentabas hacer, (porque sopungo que ya pudiste ya que ni tiene continuidad este hilo) es usar un lector de codigos de barras serial, y desde delphi siempre sabes desde que puerto vienen la entrada y no es visible al usuario
Responder Con Cita
  #4  
Antiguo 26-12-2009
Avatar de yapt
yapt yapt is offline
Miembro
 
Registrado: sep 2006
Ubicación: España
Posts: 258
Poder: 20
yapt Va por buen camino
Yo seguiría el camino que te ha indicado firestone2.

Alguna vez he configurado escaneres de codigo de barras USB como SERIAL y he recogido la entrada vía COMx, sin presentar nada en pantalla.

Incluso, en una ocasión, leia (sin mostrar nada al usuario) el código de barras y lo pasaba a un servidor UDP a la escucha en un Terminal Server. El usuario no se enteraba de nada, salvo que el producto aparecía en su pantalla de la aplicación corriendo en Terminal Server.

Para eso:
1.- Configuraba el puerto USB como COMx.
2.- Utilizaba el componente de PSoft. www.psoft.sk (que incluye un lector de codigo de barras bastante bueno).

Aunque quizá puedes utilizar otro lector de COMx. Si alguien conoce alguno, agradeceré comentarios al respecto.

Saludos.
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
Scanner de Codigo de Barras no lee Chogo Varios 4 17-11-2012 17:25:53
uso de codigo de barras alfil123 Varios 15 28-01-2008 04:37:42
Codigo De Barras Ean-128 marocaforo Impresión 2 12-12-2006 00:10:47
Codigo Barras novatix Impresión 1 17-02-2004 12:43:25
Codigo de Barras miguelb Varios 2 21-06-2003 00:18:01


La franja horaria es GMT +2. Ahora son las 20:41:19.


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