Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 29-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Bueno asi esta la cosa.
Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CPort, StdCtrls, ComCtrls;
type
  TForm1 = class(TForm)
    ComPort: TComPort;
    Button1: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    ProgressBar1: TProgressBar;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  Cuantos, CuentaB : Integer;
implementation
{$R *.dfm}
type
 TBuffer = array[$0000..$FFFF] of Byte;
function Insertar(Str: String; var Buffer: TBuffer): String;
var
  i,j,k: Integer;
begin
  Result:= EmptyStr;
  Str:= Trim(Str);
  if Copy(Str,1,1) = ':' then
    if TryStrToInt('$' + Copy(Str,2,2),i) then
      if Length(Str) = ((2*i) + 11) then
        if TryStrToInt('$' + Copy(Str,4,4),j) then
          if TryStrToInt('$' + Copy(Str,8,2),k) then
            if k = 0 then
            begin
              Str:= Copy(Str,10,2*i);
              for k:= j to (j + i - 1) do
              begin
                Buffer[k]:= StrToInt('$' + Copy(Str,1,2));
                Delete(Str,1,2);
              end;
            end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if not ComPort.Connected then
ComPort.Open;
comport.WriteStr(#2#0);
end;
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
 ComPort.ReadStr(Str, Count);
 if length(Str)>= 8 then
 ShowMessage('OK')
 else if Str = #1 then  begin
   case Cuantos of
   1: begin     //poner el chip en prog..
ComPort.WriteStr(#2#2);
   Cuantos := 2;
 end;
   2: begin //comando para borrar.
     ComPort.WriteStr(#2#3);
       Cuantos := 3;
   end;
    3: begin //Modo Borrar
    showmessage('Chip Borrado.. OK!')
 end;
    4: begin //poner el chip en prog..
         ComPort.WriteStr(#2#2);
          Cuantos := 5;
      end;
    5: begin // Comando para escribir el chip(06 04 00 00 10 00)
         ComPort.WriteStr(#6#4#0#0#16#0);
     end;
     end;
     end;
     end;
 //Aqui comienza el procedimiento para borrar el chip
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not ComPort.Connected then
  ComPort.Open;
 comport.WriteStr(#4#1#0#1);
   Cuantos := 1;
    end;
 //Aqui comienza el procedimiento para escribir el chip
procedure TForm1.Button2Click(Sender: TObject);
begin
 if not ComPort.Connected then
  ComPort.Open;
 comport.WriteStr(#4#1#0#1);
  Cuantos := 4;
end;
procedure TForm1.Button3Click(Sender: TObject);
  var
  i,j: Integer;
  Str: String;
  Buffer: TBuffer;
begin
 if OpenDialog1.Execute then
Label1.caption:=OpenDialog1.FileName;
  Memo1.Clear;
  with TStringList.Create do
  try
    LoadFromFile(Label1.Caption);
    FillChar(Buffer,Sizeof(Buffer),#0);
    for i:= 0 to Count - 1 do
      Insertar(Strings[i],Buffer);
     j:= StrToInt(Label2.caption);
     Str:= EmptyStr;
       for i:= 0 to j -1 do
      begin
   Str:= Str + #32 + IntToHex(Buffer[i],2);
      if ((i+1) mod 16 = 0) then
    begin
        Memo1.Lines.Add(Str);
        Str:= EmptyStr;
      end;
    end;
     if Str <> EmptyStr then
      Memo1.Lines.Add(Str);
  finally
    Free;
  end;
end;
end.

Esto copila bien y trabaja bien.
Ahora la cosa esta que despues que mando el comando (06 04 00 00 10 00) entonces esperando un tiempo corto tengo que mandar el primer byte del buffer y esperare por cada uno de estos bytes un 53 y asi hasta el final del buffer.

Un Saludo.
Responder Con Cita
  #22  
Antiguo 30-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Continuando con el comentario anterior.

Código Delphi [-]
    5: begin // Comando para escribir el chip(06 04 00 00 10 00)
         ComPort.WriteStr(#6#4#0#0#16#0);
          // aqui tiene que entrar la rutina de mandar el primer byte del buffer
     end;

Un Saludo.
Responder Con Cita
  #23  
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
Se ve lindo y bien ATcmd, alguna fotito del hard?
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #24  
Antiguo 30-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por mamu Ver Mensaje
Se ve lindo y bien ATcmd, alguna fotito del hard?
El hard es un board de trabajo.(por el momento)
Lo que usara este programador es un max 232, un AT89C2051 para el soporte entre el PC y el Chip a programar.Unas cuantas resistencias y un poco de capacitores.Cuando termine el proyecto pondre algunas fotos del mismo.
Los comandos de programacion originales del AT89S51 y 52 radican en los 2kbytes de memoria del AT89C2051, esta aclaracion por si alguien sigue este proyecto que no se sienta frustrado si mirando el data de estos chips se siente perdido o pensara que estoy loco.
Delego la mayoria de las operaciones al 2051 por la sencilla razon que domino el uC y no el Delphi.
Un Saludo.
Responder Con Cita
  #25  
Antiguo 30-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola amigos.

Estoy tratando de agregar este procedimiento pero me da error.
Código Delphi [-]
procedure TForm1.ProcedimientoEscribir;
var
Buffer: TBuffer;
begin
  if CuentaB <= Length(Buffer) then
    begin
      ComPort.WriteStr(Buffer[CuentaB]);
      Inc(CuentaB);
    end

me da el siguiente error; ( Incompatible Types:'String' and 'Byte'

Un Saludo.
Responder Con Cita
  #26  
Antiguo 30-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por FGarcia Ver Mensaje
A ver, Egostar me corrige si me equivoco, hice algunos añadidos al ultimo codigo que mado PepePancho:


Código Delphi [-]
var
  Form1: TForm1;
  Cuantos, CuentaB : Integer;  //OJO AQUI SE MODIFICO
 
implementation
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
if not ComPort.Connected then
ComPort.Open;
comport.WriteStr(#2#0);
end;
 
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
 ComPort.ReadStr(Str, Count);
 
 if length(Str)>= 8 then
   ShowMessage('OK')
 
 else if Str = #1 then  begin
   case Cuantos of
   1: begin
        ComPort.WriteStr(#2#2);
        Cuantos := 2;
      end;
   2: begin //Modo Escribir
        ComPort.WriteStr(#2#3);
        //ProcedimientoEscribir
        Cuantos := 3;
      end;
   3: begin //Modo Borrar
         //ProcedimientoBorrar
         showmessage('Chip Borrado.. OK!')
      end;
   end
 
//AQUI la cadena recibida vale 2
 else if Str = #2 then begin
   case Cuantos of
      1: begin
          //
          end;
      2: begin //Envia el primer byte. CuentaB vale 0.
             ComPort.WriteStr(Buffer[CuentaB]);
             Inc(CuentaB);
          end;
 
   end;
 
//AQUI el chip respondio a el envio del primer byte
 else if Str = #53 then begin
   case Cuantos of
      2: ProcedimientoEscribir;
   end;
 
 end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not ComPort.Connected then
  ComPort.Open;
 comport.WriteStr(#4#1#0#1);
   Cuantos := 1;
end;
 
{Este procedimiento pretende escribir caracter a caracter sobre el
puerto serie. CuentaB es un contador que lleva el registro de las transmisiones efectuadas, siempre se 
compara su valor contra el valor de la longitud del buffer que contiene el archivo a transmitir.}
 
procedure TForm1.ProcedimientoEscribir;
begin
  if CuentaB <= Length(Buffer) then
    begin
      ComPort.WriteStr(Buffer[CuentaB]);
      Inc(CuentaB);
    end
  else
    ComPort.WriteStr(ByteFinTx);
end;
end.

Hola Fgarcia. Ya le di mil vueltas a este codigo y no hay forma de que copile.

Un Saludo.
Responder Con Cita
  #27  
Antiguo 31-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Algo para los maestros.

Código Delphi [-]
 ComPort.WriteStr(Buffer[CuentaB]);

Aqui me da el siguiente error; ( Incompatible Types:'String' and 'Byte'
Ya mire la ayuda de Delphi y nada.No le encuentro la causa a este error.

Un Saludo.
Responder Con Cita
  #28  
Antiguo 31-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Algo para los maestros.

Código Delphi [-]
 ComPort.WriteStr(Buffer[CuentaB]);

Aqui me da el siguiente error; ( Incompatible Types:'String' and 'Byte'
Ya mire la ayuda de Delphi y nada.No le encuentro la causa a este error.

Un Saludo.
No estoy seguro, pero TBuffer como has declarado Buffer es de este tipo

Código Delphi [-]
TBuffer = array[1..BufSize] of Byte;

si quieres usar un indice dentro de una cadena, tal vez puedes usar esto:

Código Delphi [-]
Buffer : Array[1..200] of Char;
//en lugar de 
Buffer : TBuffer;

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

La cosa esta asi:Tengo esta funcion que estaria mandando los bytes que se encuentran en el buffer al serial port.Tengo que mandar el primer byte y estaria reciviendo un byte por cada uno que mando (53) esto hasta que se termine el contenido del buffer.Y esta rutina se encargaria de eso, pero no me copila.

Código Delphi [-]
procedure TForm1.ProcedimientoEscribir;
begin
  if CuentaB <= Length(Buffer) then
    begin
      ComPort.WriteStr(Buffer[CuentaB]);
      Inc(CuentaB);
    end
  else
    ComPort.WriteStr(ByteFinTx);
end;
end.

Un Saludo.
Responder Con Cita
  #30  
Antiguo 31-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Ampliando el procedimiento.

Código Delphi [-]
4: begin //poner el chip en prog..
         ComPort.WriteStr(#2#2);
          Cuantos := 5;
      end;
    5: begin // Comando para escribir el chip(06 04 00 00 10 00)
         ComPort.WriteStr(#6#4#0#0#16#0);

El programita trabaja bien hasta este punto.(eso dice el espia) y yo le tengo confianza.
Ahora despues de esos bytes "comandos" mi chip esperara el primer byte que esta en el buffer, tambien esta en el "memo" .Y por cada byte de data que el chip reciba me estara mandando un "53". Esto es para darle tiempo al chip que ese primer byte lo pueda mandar al uC que estoy programando y cuando el termine y este listo para el siguiente entonces asi se lo hace saber al PC (mandandole un 53 )Ahora bien no necesariamente tengo que estar mirando el final del buffer, yo se cuantos bytes de data estan dentro de el y son 4096 bytes de data y la misma cantidad de " 53 " estaria recibiendo de confirmacion. Se puede crear una rutina que los cuente y al ser = 4096 termine el procedimiento. jajajajajaja yo razono como si Delphi fuera un uC y estoy creando rutinas.

Alguien sabe donde venden Delphi en pildoras???

Un Saludo.
Responder Con Cita
  #31  
Antiguo 01-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Bueno, y porque no usar el Memo para enviar los caracteres, agrega otra variable de tipo Integer de nombre Contador

Código Delphi [-]
var
  Str: String;
begin
  ComPort.ReadStr(Str, Count);
  if length(Str)>= 8 then
    ShowMessage('OK')
  else if Str = #1 then  begin
          case Cuantos of
             1: begin
                  ComPort.WriteStr(#2#2);
                  Cuantos := 2;
             end;
             2: begin //Modo Escribir
                  ComPort.WriteStr(#2#3);
                  //ProcedimientoEscribir
                  Cuantos := 3;
             end;
             3: begin //Modo Borrar
                  //ProcedimientoBorrar
                  showmessage('Chip Borrado.. OK!')
                  Cuantos := 4;
             end;
             4: begin //poner el chip en prog..
                  ComPort.WriteStr(#2#2);
                  Cuantos := 5;
             end;
             5: begin // Comando para escribir el chip(06 04 00 00 10 00)
                  ComPort.WriteStr(#6#4#0#0#16#0);
                  Contador := 1;
             end;
          end;
      end
      else if Str = #2 then begin
           end
           else if Str = #53 then begin
                   if contador <= 4096 then begin
                      ComPort.WriteStr(Memo1.Text[Contador]);
                      Inc(Contador);
                   end;
                end;
end;

A ver como funciona

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #32  
Antiguo 01-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Una preguntita.
Código Delphi [-]
 5: begin // Comando para escribir el chip(06 04 00 00 10 00)
                  ComPort.WriteStr(#6#4#0#0#16#0);
                  Contador := 1; // aqui esta mandando el primer byte?
             end;
          end;
      end
      else if Str = #2 then begin
           end
           else if Str = #53 then begin
                   if contador <= 4096 then begin
                      ComPort.WriteStr(Memo1.Text[Contador]);
                      Inc(Contador);
                   end;
                end;
end;

Esta copilando bien y rueda sin problemas hasta donde manda los 6 bytes de comando.El primer byte del memo no sale al serial port. contador:=1; Esta esperando el primer 53?
El primer 53 entrara despues que el primer byte de data entro al chip.

Un Saludo.
Responder Con Cita
  #33  
Antiguo 01-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Una preguntita.

Esta copilando bien y rueda sin problemas hasta donde manda los 6 bytes de comando.El primer byte del memo no sale al serial port. contador:=1; Esta esperando el primer 53?
El primer 53 entrara despues que el primer byte de data entro al chip.
A ver, lo que entendi es que tu estas esperando el #53, entonces lo que necesitas es enviar #53?

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #34  
Antiguo 01-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por egostar Ver Mensaje
A ver, lo que entendi es que tu estas esperando el #53, entonces lo que necesitas es enviar #53?

Salud OS
El 53 lo manda el chip despues que recive el primer byte de data ( el primer byte que esta en el memo) entonces es que manda el primer 53.
Código Delphi [-]
   ComPort.WriteStr(#6#4#0#0#16#0);
     // aqui debe mandar el primer byte del memo y entonces espera el 53
                  Contador := 1;

El primer 53 es para mandar el segundo en adelante hasta el final de los 4096 bytes.

Un Saludo.
Responder Con Cita
  #35  
Antiguo 01-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Código Delphi [-]
    ComPort.WriteStr(#6#4#0#0#16#0);
    sleep(100); // Edito, esto es para que haga una pequeña pausa, antes de enviar el primer caracter....
    ComPort.WriteStr(Memo1.Text[1]);
    Contador := 2;

A ver que tal así....

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 01-04-2008 a las 02:49:53.
Responder Con Cita
  #36  
Antiguo 01-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Ya esta mandando el primer byte y recibe el primer 53.
Eso quiere decir que si el chip regresa el primer 53 es que esta entendiendo bien la cosa.
Ahora hay dos problemas, uno es que el primer byte es un "01" y esta mandando "20" .cambie el file hex y el primer byte es un "00" y sigue mandando un "20".El segundo problema es que cuando regresa el primer 53 ya no manda mas nada.Se detiene.La rutina contador no manda mas nada.

Un Saludo.
PD: el 20 es espacio en asscii?? jejejejeje creo que aqui hay gato encerrado.

Última edición por JoseFco fecha: 01-04-2008 a las 03:14:43.
Responder Con Cita
  #37  
Antiguo 01-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Ya esta mandando el primer byte y recibe el primer 53.
Eso quiere decir que si el chip regresa el primer 53 es que esta entendiendo bien la cosa.
Ahora hay dos problemas, uno es que el primer byte es un "01" y esta mandando "20" .cambie el file hex y el primer byte es un "00" y sigue mandando un "20".El segundo problema es que cuando regresa el primer 53 ya no manda mas nada.Se detiene.La rutina contador no manda mas nada.

Un Saludo.
PD: el 20 es espacio en asscii?? jejejejeje creo que aqui hay gato encerrado.
Una pregunta Jose, que es lo que tienes en el Memo......

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #38  
Antiguo 01-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
En el memo lo que hay es hex 00 01 FE 12 0A puro hex .

Este es el programita.

Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CPort, StdCtrls, ComCtrls;
type
  TForm1 = class(TForm)
    ComPort: TComPort;
    Button1: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    ProgressBar1: TProgressBar;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  Cuantos, CuentaB : Integer;
  Contador  : Integer;
implementation
{$R *.dfm}
type
 TBuffer = array[$0000..$FFFF] of Byte;
function Insertar(Str: String; var Buffer: TBuffer): String;
var
  i,j,k: Integer;
begin
  Result:= EmptyStr;
  Str:= Trim(Str);
  if Copy(Str,1,1) = ':' then
    if TryStrToInt('$' + Copy(Str,2,2),i) then
      if Length(Str) = ((2*i) + 11) then
        if TryStrToInt('$' + Copy(Str,4,4),j) then
          if TryStrToInt('$' + Copy(Str,8,2),k) then
            if k = 0 then
            begin
              Str:= Copy(Str,10,2*i);
              for k:= j to (j + i - 1) do
              begin
                Buffer[k]:= StrToInt('$' + Copy(Str,1,2));
                Delete(Str,1,2);
              end;
            end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if not ComPort.Connected then
ComPort.Open;
comport.WriteStr(#2#0);
end;
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
 ComPort.ReadStr(Str, Count);
 if length(Str)>= 8 then
 ShowMessage('OK')
 else if Str = #1 then  begin
   case Cuantos of
   1: begin     //poner el chip en prog..
ComPort.WriteStr(#2#2);
   Cuantos := 2;
 end;
   2: begin //comando para borrar.
     ComPort.WriteStr(#2#3);
       Cuantos := 3;
   end;
    3: begin //Modo Borrar
    showmessage('Chip Borrado.. OK!')
 end;
    4: begin //poner el chip en prog..
         ComPort.WriteStr(#2#2);
          Cuantos := 5;
      end;
    5: begin // Comando para escribir el chip(06 04 00 00 10 00)
         ComPort.WriteStr(#6#4#0#0#16#0);
            sleep(100);
            ComPort.WriteStr(Memo1.Text[1]);
           Contador := 2;
     end;
     end;
     end
         else if Str = #2 then begin
         end
           else if Str = #53 then begin
                   if contador <= 4096 then begin
                       sleep(100);
                      ComPort.WriteStr(Memo1.Text[Contador]);
                      Inc(Contador);
     end;
     end;
     end;
 //Aqui comienza el procedimiento para borrar el chip
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not ComPort.Connected then
  ComPort.Open;
 comport.WriteStr(#4#1#0#1);
   Cuantos := 1;
    end;
 //Aqui comienza el procedimiento para escribir el chip
procedure TForm1.Button2Click(Sender: TObject);
begin
 if not ComPort.Connected then
  ComPort.Open;
 comport.WriteStr(#4#1#0#1);
  Cuantos := 4;
end;
procedure TForm1.Button3Click(Sender: TObject);
  var
  i,j: Integer;
  Str: String;
  Buffer: TBuffer;
begin
 if OpenDialog1.Execute then
Label1.caption:=OpenDialog1.FileName;
  Memo1.Clear;
  with TStringList.Create do
  try
    LoadFromFile(Label1.Caption);
    FillChar(Buffer,Sizeof(Buffer),#0);
    for i:= 0 to Count - 1 do
      Insertar(Strings[i],Buffer);
     j:= StrToInt(Label2.caption);
     Str:= EmptyStr;
       for i:= 0 to j -1 do
      begin
   Str:= Str + #32 + IntToHex(Buffer[i],2);
      if ((i+1) mod 16 = 0) then
    begin
        Memo1.Lines.Add(Str);
        Str:= EmptyStr;
      end;
    end;
     if Str <> EmptyStr then
      Memo1.Lines.Add(Str);
  finally
    Free;
  end;
end;
end.

Algo le pasa a la rutina que se detiene y no continua mandando nada mas.( lo del 20 es otra cosa, el programa no debe detenerce por eso y cuando llega el primer 53 debe mandar otro byte. A no ser que el memo no lo leemos como debe ser.

Si te fijas en ese programita yo llamo un fila, intelhex lo limpiamos y se queda puro hex nada mas.

Un Saludo.
Responder Con Cita
  #39  
Antiguo 01-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
En el memo lo que hay es hex 00 01 FE 12 0A puro hex .

Algo le pasa a la rutina que se detiene y no continua mandando nada mas.( lo del 20 es otra cosa, el programa no debe detenerce por eso y cuando llega el primer 53 debe mandar otro byte. A no ser que el memo no lo leemos como debe ser.

Si te fijas en ese programita yo llamo un fila, intelhex lo limpiamos y se queda puro hex nada mas.

Un Saludo.
Pues ahi esta la cosa, estamos enviando caracteres y no los valores

por ejemplo en esa linea

00 01 FE 12 0A

Estamos mandando

0
0

0
1

F
E

1
2

0
A

y deberiamos enviar

$00
$01
$FE
$12
$0A

Voy a ver como le hacemos.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #40  
Antiguo 01-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Esto es lo que esta en el memo:

00 12 00 72 12 00 7E B4 80 04 80 34 80 F6 75 A0
FE 12 00 AF 75 A0 FD 12 00 AF 75 A0 FB 12 00 AF
75 A0 F7 12 00 AF 75 A0 EF 12 00 AF 75 A0 DF 12
00 AF 75 A0 BF 12 00 AF 75 A0 7F 12 00 AF 80 C4
75 A0 7F 12 00 AF 75 A0 BF 12 00 AF 75 A0 DF 12
00 AF 75 A0 EF 12 00 AF 75 A0 F7 12 00 AF 75 A0
FB 12 00 AF 75 A0 FD 12 00 AF 75 A0 FE 12 00 AF
80 92 75 98 52 75 89 20 75 8D F3 D2 8E 22 30 98
FD C2 98 E5 99 22 C2 B5 89 A0 D2 B4 12 00 AF C2
B4 22 D2 B5 89 A0 D2 B4 12 00 AF C2 B4 22 79 01
11 86 79 38 11 86 79 0C 11 86 79 06 11 86 22 7F
00 7E 00 7D 00 0D BD 50 FC 0E BE 50 F6 0F BF 50

y sigue con 00 hasta completar 4096 bytes.
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
Cuantos Querys? Nomad Conexión con bases de datos 13 24-01-2008 18:41:51
Contar cuantos edits hay lbidi Varios 4 04-10-2007 21:23:36
cuantos querys???? kryna Conexión con bases de datos 5 09-05-2005 20:50:13
Cuantos son Colombianos???? sercornejov Humor 7 28-12-2004 16:49:56
Cuantos Campos eduarcol Tablas planas 4 23-02-2004 17:07:02


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


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