Ir al contenido


Foto

[RESUELTO] Problema con Escaner RS232


  • Por favor identifícate para responder
11 respuestas en este tema

#1 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 13 diciembre 2010 - 08:59

hola compañeros.
estoy utilizadon del componente COMPORT  para manejar un escaner de codigo de barras por el puerto COM1 , he logrado hacer que lea el codigo y me dande a un edit el codigo de un articulo pero he tenido un efecto extraño que no he podido solucionar, es como que el escaner manda un enter codificado y se ve de esta manera:
Imagen Enviada
como pueden ver al final de la cadena hay un rectangulo, me parece que es el ENTER que hace el escaner al final, como puedo evitar esto?, ya que por ese rectangulo no me localiza el articulo....
este es mas o menos el codigo que utilizo para leer y mandar el texto al edit:


delphi
  1. procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
  2. var
  3.   Str: String;
  4. begin
  5.   ComPort.ReadStr(Str, Count);
  6.   Edit1.Text := Edit1.Text + Str;
  7. end;



espero me puedan ayudar, saludos!

  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 13 diciembre 2010 - 09:48

como pueden ver al final de la cadena hay un rectangulo, me parece que es el ENTER que hace el escaner al final, como puedo evitar esto?

[/code]

espero me puedan ayudar, saludos!




Pues, efectivamente, parece más un código de control ascii que un caracter. Puedes crear una función que se encargue de limpiar el código. Algo como:





delphi
  1. //devuelve solo caracteres que correspondan a números
  2. function DepuraCadena(PsInput: String): String;
  3. Begin
  4.   For I := 1 To Length(PsImput) Do
  5.     If Ord(PsImput[I]) in (48..57) then
  6.         result = result + PsImput[I];
  7. End;


  • 0

#3 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 13 diciembre 2010 - 09:51

Gracias amigo, voy a hacer una pruebas ...
  • 0

#4 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 13 diciembre 2010 - 10:42

hola tube que modifar algo en funcion quedo de este modo:



delphi
  1. function DepuraCadena(PsInput: String): String;
  2. var I :Integer;
  3. Begin
  4.   For I := 1 To Length(PsInput) Do
  5.     If Ord(PsInput[I]) in [48..57,65..90,97..122] then
  6.         result := result + PsInput[I];
  7. End;






delphi
  1. procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
  2. var
  3.   Str: String;
  4. begin
  5.   ComPort.ReadStr(Str, Count);
  6.   Edit1.Text := Edit1.Text +DepuraCadena(Str);
  7. end;



Gracias amigo por la ayuda!

saludos.

  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 diciembre 2010 - 10:54

No conozco el COMPORT, el que utilizo es el Async Pro y éste componente cuenta con una propiedad que indica si quieres ver o no los caracteres de inicio y/o fin de cadena, con eso ya no se ven.

La otra es que podrías utilizar la función StringReplace(); para quitar el caracter #13 y/o #10.

Salud OS
  • 0

#6 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 13 diciembre 2010 - 11:07

No conozco el COMPORT, el que utilizo es el Async Pro y éste componente cuenta con una propiedad que indica si quieres ver o no los caracteres de inicio y/o fin de cadena, con eso ya no se ven.

La otra es que podrías utilizar la función StringReplace(); para quitar el caracter #13 y/o #10.

Salud OS

No sabia de ese componente, lo probare en otra ocasion, por ahora ya solucione el problema, no habia pensado en el replace, en realidad hay muchas maneras de solucionar esto, una manera tosca de hacerlos tabien es mandar la pulsacion de la tecla backspace al final de la cadena, de este modo eliminara el caracter ese despues de agragar el codigo, pero como dije es una manera tosca de hacerlo, gracias por aportar amigo.


  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 diciembre 2010 - 11:43

Quedó resuelto el caso?, recordar asignar el prefijo [RESUELTO] en el primer post ;).

Saludos.
  • 0

#8 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 13 diciembre 2010 - 12:46

Quedó resuelto el caso?, recordar asignar el prefijo [RESUELTO] en el primer post ;).

Saludos.

a pos, le he buscado y no le encuentro,¿ como le cambio el estado a resuelto?

  • 0

#9 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 13 diciembre 2010 - 01:30

Edita el primer mensaje del hilo y alli al lado del titulo veras la lista desplegable
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 diciembre 2010 - 01:32

a pos, le he buscado y no le encuentro,¿ como le cambio el estado a resuelto?


Como dice Eduardo, modificas el primer post de tu tema poniendo el prefijo como [RESUELTO] :)

Seleccionar
Prefijo : Sin Prefijo


Salud OS
  • 0

#11 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 13 diciembre 2010 - 03:48

listo , gracias!
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 diciembre 2010 - 04:44

listo , gracias!


Gracias a ti amigo look (y)

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.