Jump to content


Photo

[RESUELTO] Problema con Escaner RS232


  • Please log in to reply
11 replies to this topic

#1 look

look

    Advanced Member

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

Posted 13 December 2010 - 08:59 AM

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:
Posted Image
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
  • 4945 posts
  • LocationMéxico

Posted 13 December 2010 - 09:48 AM

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 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 13 December 2010 - 09:51 AM

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

#4 look

look

    Advanced Member

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

Posted 13 December 2010 - 10:42 AM

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
  • 14448 posts
  • LocationMéxico

Posted 13 December 2010 - 10:54 AM

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 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 13 December 2010 - 11:07 AM

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
  • 7419 posts
  • LocationRepública Dominicana

Posted 13 December 2010 - 11:43 AM

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

Saludos.
  • 0

#8 look

look

    Advanced Member

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

Posted 13 December 2010 - 12:46 PM

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
  • 4483 posts
  • LocationVenezuela

Posted 13 December 2010 - 01:30 PM

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
  • 14448 posts
  • LocationMéxico

Posted 13 December 2010 - 01:32 PM

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 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 13 December 2010 - 03:48 PM

listo , gracias!
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 13 December 2010 - 04:44 PM

listo , gracias!


Gracias a ti amigo look (y)

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.