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
  #61  
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
  #62  
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
  #63  
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
  #64  
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
  #65  
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
  #66  
Antiguo 09-07-2013
jpiedra jpiedra is offline
Registrado
NULL
 
Registrado: mar 2011
Posts: 3
Poder: 0
jpiedra Va por buen camino
Acerca de lectura de ComPortRxChar

Hola a todos

Tengo un problema: tengo que leer un modem GSM Wavecon, se conecta vía USB y estoy tratando de usar el componente TComPort.

Puedo enviar mensajes al puerto con instrucciones tipo AT que son para controlar el modem, al parecer si puedo escribir sin problemas, pero no puedo leer la respuesta en el evento RxChar, de hecho no lo puedo leer de ninguna forma, con todas las formas que he intentado leer el puerto siempre me regresa una cadena vacía

Lo he intentado de estas dos formas :

procedure TfrmMain.Button3Click(Sender: TObject);
var
toSend : string;
lst : TStringList;
X: integeR;
readBuf : string;
OtroPuerto : CPort.TComPort;
Continuar : boolean;
begin
Continuar := false;
OtroPuerto := CPort.TComPort.Create(nil);
OtroPuerto.Port := 'COM' + tbPortNumber.Text;
OtroPuerto.Events := [];
OtroPuerto.FlowControl.ControlDTR := dtrEnable;
OtroPuerto.FlowControl.ControlRTS := rtsEnable;
OtroPuerto.Open; // open port

mmRead.Lines.Clear;
lst := TStringList.Create;
try
lst.Add('AT+CPMS="SM"');
lst.Add('AT+CMGF=1');
lst.Add('AT+CMGR=1');

for x:=0 to lst.Count-1 Do
begin
toSend := lst.Strings[x] + #13;
Application.ProcessMessages;
mmRead.Lines.Add(' Mensaje : ' + toSend);
OtroPuerto.WriteStr(toSend);
Sleep(1000);
readBuf := '';
otroPuerto.ReadStr(readBuf, otroPuerto.InputCount);
mmRead.Lines.Add(' Lectura : ' + readBuf);
end;
finally
FreeAndNil(lst);
//OtroPuerto.Free;
end;
end;


y la otra implementando el metodo

procedure TfrmMain.OtroPuertoRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
OtroPuerto.ReadStr(Str, Count);
mmRead.lines.Add(Str);
end;

Sin embargo en ninguna de las dos he logrado conocer la respuesta del modem, solo cadenas vacías.

Si alguien me puede ayudar les agradezco de antemano

Saludos y gracias a todos
Responder Con Cita
  #67  
Antiguo 09-07-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por jpiedra Ver Mensaje
Hola a todos
Crea un tema nuevo, eso no tiene nada que ver con dar solución al que inició este hilo.

Te recuerdo nuestra guía de estilo, gracias por tu colaboración

Y recuerda poner los tags al código fuente, ejemplo:



Gracias
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 16:36:49.


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