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 02-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Y si intentas con esto amigo Jose

Código Delphi [-]
       5: begin // Comando para escribir el chip(06 04 00 00 10 00)
          ComPort.WriteStr(#6#4#0#0#16#0);
          sleep(100);
          ComPort.Write(Buffer[1],1);
          Contador := 2;
       end;
   end;

   else if Str = #83 then begin
            if contador <= 4096 then begin
               ComPort.Write(Buffer[Contador],1);
               Inc(Contador);
         end;
     end;
     end;

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

Código Delphi [-]
implementation
{$R *.dfm}
type
 TBuffer = array[$0000..$FFFF] of Byte;
function Insertar(Str: String; var Buffer: TBuffer): String;
var
  i,j,k: Integer;
begin

Estoy cambiando para lo ultimo que mandastes y me da el siguiente error.
Undeclare identifier:'Buffer"

jajajajajajaja esta declarado o no?

Un Saludo.
Responder Con Cita
  #3  
Antiguo 02-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
Estoy cambiando para lo ultimo que mandastes y me da el siguiente error.
Undeclare identifier:'Buffer"

jajajajajajaja esta declarado o no?

Un Saludo.
Si esta declarado pero como una variable local, sacala de este procedimiento y colocala como variable general.

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  i,j: Integer;
  Str: String;
  Buffer: TBuffer; //Sacala de aquí y ponla como general
begin
.....
end;

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

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;
  LineaMemo  :  String;
  Count :   Integer;
  Buffer: TBuffer;
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.Write(Buffer[1],1);
               Contador := 2;
      end;
     end;
     end
         else if Str = #2 then begin
         end
           else if Str = #83 then begin
               if contador <= 4096 then begin
                 ComPort.Write(Buffer[Contador],1);
                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;
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.

Ya la declare general y me dice que esta indefinida?

jajajajajajaja
Responder Con Cita
  #5  
Antiguo 02-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
La quite del general y la declare en donde estaba y donde comienza el procedimiento de escribir el chip.
Esta trabajando y programando.Pero el buffer esta lleno de 00 es todo lo que manda.

Como la vez?

Un Saludo.
Responder Con Cita
  #6  
Antiguo 03-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola Amigos.

Asunto Resuelto

Como el chip master (el del programador) era un AT89C2051 con solo 2 Kbytes de memoria y estaba ocupada al 100% pues cambie a un AT89C4051 con 4 Kbytes.Lo que no puede enderezar en Delphi lo compuse en el uC.
Estaba solo mandando caracteres ascii incluyendo los "20" espacios.Pues estos los elimina una rutina en mi uC (master) y los caracteres restantes como 30 (0) 30 (0) pues de ellos compongo mi hex 00.etc.
Que pasa cuando tengo un 20 que no es espacio y forma parte de mi data? jejejejeje mi rutina tiene eso en cuenta y comienza con un espacio luego dos caracteres y otro espacio.Si a continuacion de un espacio se repite el 20 mmm pues eso lo interpreta como data.

En delphi soy novato y me domina...a los uC los domino yo.

Asi que resuelto el problema de programar y borrar.Me falta leer pero eso es tema de otro hilo si es que hace falta.

Un Saludo.
Responder Con Cita
  #7  
Antiguo 19-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
Y si intentas con esto amigo Jose


Código Delphi [-]
5: begin // Comando para escribir el chip(06 04 00 00 10 00)
ComPort.WriteStr(#6#4#0#0#16#0);
sleep(100);
ComPort.Write(Buffer[1],1);
Contador := 2;
end;
end;

else if Str = #83 then begin
if contador <= 4096 then begin
ComPort.Write(Buffer[Contador],1);
Inc(Contador);
end;
end;
end;





Salud OS
Esta ultima con algunas modificaciones esta trabajando bien.

Gracias y un Saludo.
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
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 04:40:25.


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