Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:17:49.
Responder Con Cita
  #22  
Antiguo 24-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
La variable k, sobra.
De 0 a 15 deberia ser lo mismo que de 0x0000 a 0x000F y vos lo que estas haciendo, es llenar una columa con el final de la cuenta de 0 a 15, entonces,
0x0000 a 0x000F que sigue? 0x0010, y ahi te empieza a escribir. El procedimiento esta "alrevez".

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #23  
Antiguo 24-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Te diste cuenta?, mira la corrección, es muy sencillo.

Código Delphi [-]

procedure TForm1.InicializaGridBuffer;
var  i,j,k,l: integer;
begin
  StringGrid1.ColWidths[0] := 35;
  StringGrid1.Cells[0,0] := 'Addr';
  j := $0000;  l := $0000;
  for i := 0 to 15 do
    StringGrid1.Cells[i+1,0] := IntTohex(i,2);
  for j := 0 to (BufferSize div 16)-1 do    // (BufferSize div 16)
    begin
      k := j;
      StringGrid1.Height := StringGrid1.Height + 1;
      StringGrid1.RowCount := StringGrid1.RowCount + 1;
      StringGrid1.Cells[0,k+1] := IntToHex(l,4);
      l := l + 16;  //Porque?, arranco de 0000 primero
    end;
end;

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #24  
Antiguo 24-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:18:10.
Responder Con Cita
  #25  
Antiguo 24-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Para tratar una serie de 0 a 4095 no hagas dos bucles, haz uno solo.

Código Delphi [-]
 
for j:=0 to 4095 do
begin
 Fila:=j mod 16
 columna:= j div 16
 StringGrid1.Cells[columna,fila] := IntToHex(Buffer[j],2);
end:

Asi no pierdes ni uno solo de los valores ni repites ninguno.
Responder Con Cita
  #26  
Antiguo 24-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Por cierto, para llenar el memo lo haces cuando la pasada lo piad, al final de cada grupo de 16.

Código Delphi [-]
 
for j:=0 to 4095 do
begin
 Fila:=j mod 16
 columna:= j div 16
 if Fila=0 then Str:= IntToHex(j,4); // empieza una fila nueva
 StringGrid1.Cells[columna,fila] := IntToHex(Buffer[j],2);
 if Fila=15 then Memo1.Lines.Add(Str); // se acaba una fila, al memo
end:
Responder Con Cita
  #27  
Antiguo 24-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:18:30.
Responder Con Cita
  #28  
Antiguo 24-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:18:42.
Responder Con Cita
  #29  
Antiguo 25-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por JoseFco Ver Mensaje
Hay algo que no entiendo bien.
Me dices que no haga doble bucles. te refieres a que no ponga el addres primero y despues intente llenar el resto del stringgrid con la data.En otra rutina por separado.?

Un Saludo.
Es exactamente lo que te esta sugiriendo, si analizas el bucle contempla todos los numeros y nunca los repetiras.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #30  
Antiguo 25-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Cita:
Empezado por MaMu Ver Mensaje
Es exactamente lo que te esta sugiriendo, si analizas el bucle contempla todos los numeros y nunca los repetiras.

Saludos
Responder Con Cita
  #31  
Antiguo 25-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:18:57.
Responder Con Cita
  #32  
Antiguo 25-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:19:12.
Responder Con Cita
  #33  
Antiguo 25-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Pero no entiendo cual es la duda.
de 0 a 4095 son 4096 posiciones, en el bucle, carga fila/columa aplicando un mismo valor de j, es decir, de posición. Si el incremento llega a un valor de palabra de 0x000F entonces agrega la linea al Memo.
El hecho de usar un solo bucle y no dos, es simplemente para mejorar el procedimiento, porque sino que harias? rellenas todas las columnas y cuando tenes las columnas empezas a cargar una a una las filas, para que? si se puede hacer de un tirón, sin miedo de repetir numeros.
Siempre tenes que saber como esta formado el mapa de memoria, y miralo como una matriz de fila por columna, sabiendo eso, son los parámetros que necesitas modificar, asi como el ancho de la palabra (en bytes).

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #34  
Antiguo 26-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:19:32.
Responder Con Cita
  #35  
Antiguo 26-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
...se me ocurrio que en vez de un memo se ve mas elegante en un stinggrid. Pero que mi data no todo el tiempo va a ser del mismo peso que la memoria del chip que programare y tendre que rellenar ese espacio con 00h.
En realidad podés considerar que tu firmware "si" ocupa toda la memoria.
No se que uC estás programando, ya que de eso depende las características del mapa de memoria, forma de escritura, etc. Pero te pongo un ejemplo con un uC Pic. El programa puede considerarse que ocupa toda la memoria, puesto a que, donde finaliza la data real del firmware, dicho código escribe un dato de nulidad o conjunto vacío. En el caso de un Pic, (3FFFh=vacío). Por lo que borrar un chip, en el caso de un Pic, es lo mismo que decir, escribir 3FFFh a toda la matriz de memoria de programa, y 00h a cada direccion de la EEPROM.
Para resolver esto y que lo vuelques de forma elegante en un StringGrid, que me parece una idea exelente, y de hecho programas como el ICProg lo hacen asi, hay que analizar la situacion de la siguiente forma:

1) Determinar la estructura de la matriz del mapa de memoria del uC.
2) Determinar la estructura de la matriz que ocupa en memoria los datos.

Sabiendo estos 2, solo resta hacer la lógica

Pseudocódigo

Cita:
MiMatrizUC = La capacidad de mi uC
MiPrograma = Lo que ocupa mi programa
entonces
Sabiendo lo que ocupa mi programa
Mientras haya datos
rellenar grid con datos
si no hay datos, poner blanco
hasta que mi uC no tenga más capacidad.
Espero que esto pueda darme una idea más clara.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #36  
Antiguo 26-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:20:03.
Responder Con Cita
  #37  
Antiguo 26-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Atencion, pregunta, ¿porque vas a guardar en un fichero IntelHex 4Kb de codigo si solo son utiles unos pocos cientos de bytes? ¿es posible grabar solo una parte del chip? ¿Seria mas comodo un StringGrid mas pequeño que 4096 celdas?. Yo hice algo parecido para un PIC y tenia una solucion, el resto de la memoria no ocupada por el programa efectivo no lo llenaba con ceros, simplemente lo dejaba en blanco, es decir, a 3FFF. Asi puedes reconocer donde esta el limite del codigo activo y fijar un limite superior para los bucles de grabacion y de volcado a un fichero IntelHex o para grabar el micro o crear el StringGrid que va a contener los datos.
Responder Con Cita
  #38  
Antiguo 26-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:20:31.
Responder Con Cita
  #39  
Antiguo 26-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:20:46.
Responder Con Cita
  #40  
Antiguo 27-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:21:03.
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
Bitmap buffer fitolanga Gráficos 4 21-04-2007 15:58:29
Rececpción de buffer incerrecta ?¿ Gagiel Internet 3 05-03-2007 11:07:38
Leer buffer de teclado dieleo Varios 0 12-02-2007 19:23:19
Texto del buffer del sistema calogero Varios 1 07-02-2007 18:22:16
Problema con Double Buffer guillonet C++ Builder 0 29-08-2006 19:26:22


La franja horaria es GMT +2. Ahora son las 14:11:52.


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