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
  #1  
Antiguo 13-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Recibir data por el serial port.

Hola amigos.

Estoy tratando de recibir una cadena de data (4096 bytes de data por el serial port.) La tendre que alojar temporalmente en un buffer imagino y despues usando un procedimiento modificado como este:
Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type buffer=array of byte;  //assign as Dynamic array
var HexBufOut:buffer;
type
  TForm1 = class(TForm)
    SaveDialog1: TSaveDialog;
    Button1: TButton;
  procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
 function writeline(ADDR,RECLEN,RECTYPE:integer;
            var buf:buffer):string;
 var i:integer;
CHKSUM:byte;
begin
CHKSUM:=0;
result:=':'+inttohex(RECLEN,2)+   inttohex(ADDR,4)+inttohex(RECTYPE,2);
CHKSUM:=RECLEN+lo(ADDR)+hi(ADDR);
for i:=0 to RECLEN-1 do begin
result:=result+inttohex(buf[ADDR+i],2);
 CHKSUM:=CHKSUM+buf[ADDR+i];
end;
result:=result+inttohex(256-CHKSUM,2);
end;
function write_eof:string;
begin
result:=':00'+'0000'+'01'+'FF';  // :00000001FF
end;
 

procedure TForm1.Button1Click(Sender: TObject);
 var Fname,line:string;
 Fp : textfile;
 ErrorCode,StartAddr,ByteCnt:integer;
  A_Line,EOF_HEX:string;
begin
  StartAddr:=$0000;  // start address
  ByteCnt:=16;    // 16 bytes
  SetLength(HexBufOut,ByteCnt);
  HexBufOut[0]:=$00;
  HexBufOut[1]:=$12;
  HexBufOut[2]:=$00;
  HexBufOut[3]:=$72;
  HexBufOut[4]:=$12;
  HexBufOut[5]:=$00;
  HexBufOut[6]:=$7E;
  HexBufOut[7]:=$B4;
  HexBufOut[8]:=$80;
  HexBufOut[9]:=$04;
  HexBufOut[10]:=$80;
  HexBufOut[11]:=$34;
  HexBufOut[12]:=$80;
  HexBufOut[13]:=$F6;
  HexBufOut[14]:=$75;
  HexBufOut[15]:=$A0;
Fname:='C:\Documents and Settings\XP\My Documents\test1.hex';
AssignFile(Fp,Fname); { File selected in dialog }
 Rewrite(Fp);
// write 16 bytes in HexBuf
 A_Line:=writeline(StartAddr,ByteCnt,$00,HexBufOut);
   EOF_HEX:=':00'+'0000'+'01'+'FF';// write end of HEX file
     writeln(Fp,A_Line);
   writeln(Fp,EOF_HEX);
 closefile(Fp);
end;

end.

Guardarla en un fichero dentro de la PC.(en formato intel hex)
Este codigo que mostre esta trabajando y crea bien el intelhex.
Esta data que llegara desde el serial port, es leida de un chip y mandada al serial port por utro chip master(esta parte esta funcionando bien,la puedo ver en un monitor.)

Me hace falta una orientacion para poder alojarla en un buffer y posteriormente guardarla en un fichero.

Un Saludo.
Responder Con Cita
  #2  
Antiguo 13-04-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola. Si te fijas, en las recomendaciones que salen abajo como "Temas similares" se habla de componentes que te permitirán leer desde el puerto.

Si no te fuera útil dicha información, probá buscando por Serial Port, SerialPort, o Puerto Serie

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 13-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por jachguate Ver Mensaje
Hola. Si te fijas, en las recomendaciones que salen abajo como "Temas similares" se habla de componentes que te permitirán leer desde el puerto.

Si no te fuera útil dicha información, probá buscando por Serial Port, SerialPort, o Puerto Serie

Hasta luego.

Hola jachguate.

En realidad no estoy buscando un componente.Tengo el ComPort y algo aprendi en este foro a usarlo, con la ayuda de algunos colegas.
Aprendi tambien en este foro a mirar primero la ayuda y los temas similares.
Antes de escribir un hilo pidiendo orientacion para una funcion, agoto todos los recursos que estan a mi alcance. San Google, buscar, temas similares,etc.
Cuando entre a Club Delphi, no tenia ni idea de como salvar un .exe
prueba de ello mis primeros hilos y las preguntas en ellos.Hoy las miro y me da pena algunas tonterias que preguntaba.

Retomando el entorno de este hilo, el problema es que usare este procedimiento dentro de un programita que ya estoy usando la funcion ComPortRxChar y tengo la duda de si puedo usar esta funcion para recibir una cadena de bytes donde tendre desde 00 asta FF hex de todo tipo y como en la misma comparo y tomo decisiones.No se si esto me pueda causar problemas.Tengo que leer 4096 bytes y estan llegando en cadena sin interrupcion, despues que yo le diga al chip que los mande.
Puedo usar ComPortRxChar para esto teniendo en cuenta que tambien lo estoy usando ya dentro de mi programa.?

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
Serial Port JoseFco Varios 46 22-03-2008 02:38:49
Missing data provider or data packet mcalmanovici Providers 1 11-09-2007 05:55:15
Serial Port desde Delphi MaMu API de Windows 2 19-06-2007 01:14:53
Como recibir datos en un puerto serial JULIPO PHP 1 17-06-2006 20:54:36
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 11:30:33.


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