Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 24-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Eso esta perfecto.

Cuando lo ruedo con el micro me da los 8 hex, las luces solo son TX and RX.

Dime algo que configuracion tiene el serial port en ese programita?

Un Saludo.
Pues la configuracion es la que tu das excepto la velocidad que es 57,600.

Estoy usando los componentes Apro, este es el código que estoy usando en el programa

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
begin
  ApdSLController1.Monitoring := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ApdComport1.Open := False;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ApdComPort1.PutString(#2#0);
end;

Salud OS

PD. Te paso el fuente, pero requieres de los componentes que te menciono.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 02-01-2009 a las 22:38:35.
Responder Con Cita
  #22  
Antiguo 24-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Tengo que aprenderme ese componente Apro.

A este:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);beginComport1.Connected:=true;Comport1.WriteStr(#2#0);end;
Le falta dejar el serial port reciviendo, que es lo que no logro hacer.Me da error. Un Saludo.
Responder Con Cita
  #23  
Antiguo 25-02-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
hola egostar puedes mostrar el codigo fuente de ese programa que hiciste
Responder Con Cita
  #24  
Antiguo 25-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Tengo que aprenderme ese componente Apro.

A este:
Código Delphi [-]
procedure TForm1.FormCreate(Sender:TObject);
begin
  Comport1.Connected:=true;
  Comport1.WriteStr(#2#0);
end;

Le falta dejar el serial port reciviendo, que es lo que no logro hacer.Me da error.

Un Saludo.
Seria bueno que nos mencionaras que error te da. si me dices donde bajo ese componente que usas podría hacer algunas pruebas para ver que es lo que te hace falta.

Cita:
Empezado por kurono Ver Mensaje
hola egostar puedes mostrar el codigo fuente de ese programa que hiciste
Todo está en el archivo adjunto que coloque.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #25  
Antiguo 25-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola Egostar.

Si el ComPort Library version 3.10 de Dejan Crnila es el que uso y lo encontre en un hilo de aqui del foro.
Yo entro a Google y aqui en en el foro a ver hilos y referencias sobre el comport.Tomo algunos codigos y trato de rodarlos, pero ya te digo me da errores algunas veces tres y tratando de repararlos cuando vengo a ver tengo 10 jajajajajajaja.Algun dia lo entendere mejor o al menos me dejara jugar con el.

Un Saludo.
Responder Con Cita
  #26  
Antiguo 25-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Pues ya he visto tu componente, pero no veo por ningun lado el evento

Código Delphi [-]
procedure TForm1.ComPort1ReceiveCallBack(Data: String);
begin
  Edit1.Text:=(Data);
end;

Sin embargo, hice un programita y si funciona.

Salud OS

PD: Lo hice con Turbo Delphi, espero puedas abrir el fuente.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 02-01-2009 a las 22:38:35.
Responder Con Cita
  #27  
Antiguo 26-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola Egostar.

Si el problema es que tengo dos ComPort en mi PC y esa fue la conficion.Estaba con un comport usando procedimientos de que no tenia.

Código Delphi [-]
 
 procedure TForm1.ComPortRxChar(Sender: TObject; Count:Integer);
 var
   Str: String;
 begin
   
   ComPort.ReadStr(Str, Count);
   Memo.Text := Memo.Text + Str;
 end;

Es que existen dos comport con el mismo nombre y diferentes componentes( yo en mi pc los llamo diferentes el otro es "PuertoCom" en mi pc.Pero si miro Google encuentras codigos y hay que tener cuidado al menos yo que estoy comenzando en esto y puedo cometer el error de usar un componente que no existe en un comport aunque se llame comport.

Deja correr ese programita que me mandaste a ver que hace y estudiar el codigo.


PD: En ese linck que mirastes ayer del hilo asm ese es otro comport y no el comport de Dejan Crnila por ejemplo.

Un Saludo.
Responder Con Cita
  #28  
Antiguo 26-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Bueno ya estoy recibiendo los 8 hex de retorno del micro y una de las cosas que necesitaba era poder combertir a hex.Con este codigo ya esta superado.
Código Delphi [-]
procedure AddHexString(S : String; Lines : TStrings );
var AddS, HexS, CopyS : String;
    i : Integer;
const SLen = 8;
begin
  while Length(S) > 0 do
    begin
      AddS := Copy(S,1,SLen);
      HexS := '';
      Delete(S,1,SLen);
      for i := 1 to SLen do
        begin
          CopyS := Copy(AddS,i,1);
          if CopyS <> '' then
            HexS := HexS + ' ' + Format('%2.2x',[Byte(CopyS[1])]) //
          else
            HexS := HexS + '   ';
        end;
       while Length(AddS) < SLen do
         AddS := AddS + ' ';
       for i := 1 to SLen do
         case AddS[i] of
           #0..#31 : AddS[i] := '.';
           #127    : AddS[i] := '.';
         end;
       Lines.Add(HexS+' : '+AddS);
    end;
end;

Un Saludo.
Responder Con Cita
  #29  
Antiguo 26-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Esta parte del codigo la cambie.
Código Delphi [-]
 procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
 ComPort.ReadStr(Str, Count);
 AddHexString(Str,Memo.Lines);
end;

Para que lo recibido fuera combertido a hex.

Un Saludo.

Última edición por JoseFco fecha: 26-02-2008 a las 03:22:09.
Responder Con Cita
  #30  
Antiguo 26-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Pues que bien que ya estes recibiendo la información, ahora como decimos por aca, a coser y cantar.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #31  
Antiguo 26-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola Egostar.

Cita:
=egostar;268598]Pues que bien que ya estes recibiendo la información, ahora como decimos por aca, a coser y cantar.

Salud OS
jajajajaja me falta un camino largo todavia por recorrer.
Tengo que jugar mas con esos hex y poderlos manipular.El otro paso es poder contarlos, o compararlos y si es= continuar el programa de lo contrario habrir una ventana donde me diga que no establece comunicacion ( algo asi)
estoy estudiando un componente de ese mismo comport "timer".Yo en asm para micros es tarea facil el compara una data y si es = hacer algo y sino es = hacer lo otro, pero en Delphi estoy ciego y a tientas como dicen en tu tierra." Bien norteado" jajajaja pero un dia con otro las cosas saldran.

Un millon de gracias carnal de verdad que tu ayuda a sido super importante.
Sin ella estaria mas perdido que un raton en una ferreteria.

Un Saludo.
Responder Con Cita
  #32  
Antiguo 26-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
jajajajaja me falta un camino largo todavia por recorrer.
Tengo que jugar mas con esos hex y poderlos manipular.El otro paso es poder contarlos, o compararlos y si es= continuar el programa de lo contrario habrir una ventana donde me diga que no establece comunicacion ( algo asi)
estoy estudiando un componente de ese mismo comport "timer".Yo en asm para micros es tarea facil el compara una data y si es = hacer algo y sino es = hacer lo otro, pero en Delphi estoy ciego y a tientas como dicen en tu tierra." Bien norteado" jajajaja pero un dia con otro las cosas saldran.
Pues como te digo, ya tienes la parte digamos dificil, comparar las cadenas no tiene tanto problema, incluso sin cambiar a hexadecimal porque puedes comparar directamente la frase Hi-LOGIC.

Código Delphi [-]
 
If PalabraMagica = 'Hi-LOGIC' then
   ShowMessage('Ya estamos conectados')
else ShowMessage('Ya nos la pellizcamos');

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #33  
Antiguo 26-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
En ese caso si funcionaria sin pasarlo a hex, pero en algunos casos el micro retornara hex 00 01 02 el ascii en esos casos es ;. iguales en los tres casos.
Por ejemplo rodando el original y con el espia en el serial port si el micro me manda un 01 el programa SwowMessage ( Communication Failure:Reception Error!
Dentro del micro son 8 bits hex, ascii, decimal, binarios, como los quieras llamar pero en un final son 8 bit que estaran 1 o 0, pero ya dentro del Delphi es otra la historia y es la que me cuesta trabajo entender.( recuerda que en esto estoy a gatas todavia)

Una Saludo.

PD: haciendo pruebas lo mismo funciona en 56000 que en 57600 almenos en datas cortas, no se que pasaria en datas largas.pero es 56000 eso esta confirmado por la configuracion del puerto en el micro.
Responder Con Cita
  #34  
Antiguo 26-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Para efectos de los caracteres de control lo que yo hago es lo siguiente:

Código Delphi [-]
 
Const
    Nulo = #0; 
    SOH = #1;
    // Estas son laas señales que yo utilizo con mas frecuencia.
    STX = #2;
    EXT = #3;
    EOT = #4;
    ENQ = #5;
    ACK = #6;
    NAK = #21;

En realidad la forma en que se reciben los datos de cualquier dispositivo serial son valores de la tabla ASCII, pero los programas son los que "muestran" la informacìón como mas les place, Hexadecimal, Decimal o Binario, pero al final son caracteres.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #35  
Antiguo 26-02-2008
ayazgz ayazgz is offline
Registrado
 
Registrado: oct 2007
Posts: 3
Poder: 0
ayazgz Va por buen camino
Smile Por que a mi...

Me baje el cport-3.10.zip e hice todo lo que dice... pero a la hora de compilar me da errores por un tubo... uso delphi 5 y necesito recibir y mandar caracteres por puerto serie, no se que mas intentar... solo me falta eso para acabar mi programa...

GRACIAS!!!!!
Responder Con Cita
  #36  
Antiguo 27-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola Egostar.
Este codigo copila bien, no me da error alguno pero no corre del todo bien, me manda los hex 02 00 pero el micro no manda los 8 hex.

Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CPort, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    ComPort1: TComPort;
    procedure Button1Click(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure AddHexString(S : String; Lines : TStrings );
var AddS, HexS, CopyS : String;
    i : Integer;
const SLen = 8;
begin
  while Length(S) > 0 do
    begin
      AddS := Copy(S,1,SLen);
      HexS := '';
      Delete(S,1,SLen);
      for i := 1 to SLen do
        begin
          CopyS := Copy(AddS,i,1);
          if CopyS <> '' then
            HexS := HexS + ' ' + Format('%2.2x',[Byte(CopyS[1])]) //
          else
            HexS := HexS + '   ';
        end;
       while Length(AddS) < SLen do
         AddS := AddS + ' ';
       for i := 1 to SLen do
         case AddS[i] of
           #0..#31 : AddS[i] := '.';
           #127    : AddS[i] := '.';
         end;
       Lines.Add(HexS+' : '+AddS);
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Comport1.Connected:=true;
  Comport1.WriteStr(#2#0);
end;
 procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
 ComPort1.ReadStr(Str, Count);
   If Str= 'Hi-LOGIC' then
   ShowMessage('Ya estamos conectados')
else ShowMessage('Ya nos la pellizcamos');
end;
end.

Un Saludo.
Responder Con Cita
  #37  
Antiguo 27-02-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
PepePancho no te va a funcionar asi porque el RxChar es un caracter a la vez por eso debes de agruparlo en alguna variable y al terminar de capturar debes de efectuar la comparacion.

Código Delphi [-]
var Cadena: string;
ComPort.ReadStr(Str,Count);
Cadena := Cadena + Str;

algo asi. Lo estoy haciendo de memoria.
Responder Con Cita
  #38  
Antiguo 27-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola socio.


Cita:
=FGarcia;268851]PepePancho no te va a funcionar asi porque el RxChar es un caracter a la vez por eso debes de agruparlo en alguna variable y al terminar de capturar debes de efectuar la comparacion.


Código Delphi [-]var Cadena: string;
ComPort.ReadStr(Str,Count);
Cadena := Cadena + Str;




algo asi. Lo estoy haciendo de memoria.
Debe decirle a la cadena cuantos caracteres estoy esperando para que ella sepa cuando es tiempo de comparar?

Un Saludo.
Responder Con Cita
  #39  
Antiguo 27-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Debe decirle a la cadena cuantos caracteres estoy esperando para que ella sepa cuando es tiempo de comparar?
Cuando estas esperando una cadena fija (como es el caso) lo puedes hacer como lo comenta FGarcía y comparando la cadena.

Código Delphi [-]
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
  ComPort1.ReadStr(Str,Count);
  Cadena := Cadena + Str;
  if Cadena = 'Hi-LOGIC' then begin
     ShowMessage('Ya estamos conectados');
     Cadena := ''; 
  end;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #40  
Antiguo 27-02-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola Egostar.

Ya lo de comparar los hex que manda el micro quedo resuelto de esta manera.

Código Delphi [-]
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
     ComPort.ReadStr(Str, Count);
       AddHexString(Str,Memo.Lines);
     if length(Str)>= 8 then
    if Str = 'Hi-LOGIC' then
      showmessage('¡OK! ¡ES ORIGINAL!')
    else
      showmessage('¡HORROR!, ¡ES PIRATA!');
end;

Aqui contamos la cadena y esperamos que sean 8 los caracteres, luego comparamos que sean los deceados lo cual nos dara una respuesta y de no ser iguales pues el resultado adecuado.

Ya el serial port y el comport los estoy entendiendo un poco mejor gracias a tu ayuda y la del amigo FGarcia.

Un Saludo.
Responder Con Cita
Respuesta



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
Port Fordward Y Conexion A Firebird mjjj Firebird e Interbase 4 28-12-2007 15:32:35
Serial Port desde Delphi MaMu API de Windows 2 19-06-2007 01:14:53
Función PORT. para puerto LPT en XP vicruffo Varios 2 09-03-2007 23:21:09
Busco ordenador o portátil Arcioneo Varios 2 18-07-2006 13:49:32
Como se usa el Componente Serial Port en C# (VS2005)? z-7 .NET 0 16-12-2005 05:02:05


La franja horaria es GMT +2. Ahora son las 04:47:15.


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
Copyright 1996-2007 Club Delphi