Ver Mensaje Individual
  #1  
Antiguo 15-07-2015
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Reputación: 17
Panasys Va por buen camino
Leer Buffer (Pasando de C# a Delphi)

Buenas gente, paso a contarles que estoy haciendo, mas adelante le puede servir a otro las soluciones que encuentre.

Estoy intentando implementar un sistema de control de barreras a traves de un SDK que trae la placa.

Ahora intento leer el log de eventos en tiempo real

Me dice el manual que en C# accedo asi

Código PHP:
c#:
int ret 0;
int buffersize 256;
byte[] buffer = new byte[256];
ret GetRTLog(href buffer[0], buffersize); 
Bien, yo lo intente implementar asi:

Código Delphi [-]
  public
    { Public declarations }
    param       : pchar;
    Conn        : Integer;
    Buffer      : array[0..256] of byte;
    BufferSize  : Integer;
    LeeBuffer   : Integer;
  end;

var
  Form1: TForm1;
function Connect(Paramchar):Integer; stdcall; external 'plcommpro.dll';
function GetRTLog(handle: THandle; Buffer: Byte; BufferSize : Integer):Integer; stdcall; external 'plcommpro.dll';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
param := 'protocol=TCP,ipaddress=192.168.1.251,port=4370,timeout=4000,passwd=';
Conn := Connect(Param);
If Conn <> 0 then Showmessage('Conectado, Handle: '+IntToStr(Conn)) else  Showmessage('Fallo');
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
LeeBuffer   := 0;
BufferSize := 256;
LeeBuffer  := GetRTLog(Conn, Buffer[0], BufferSize); //GetRTLog Da 0 o mas una vez leido el buffer o negativo si hubo un error
Showmessage('Buffer: '+IntToStr(LeeBuffer));
end;

Me da un Access Violation de la DLL.

La conexion la hace ok, la dll funciona ok ya que accedo a otras funciones.

Seguro que leo mal el buffer o lo declaro mal para este caso, espero algun hilo amigos, gracias, abrazo.

Javier

Última edición por nlsgarcia fecha: 16-07-2015 a las 01:03:10. Razón: Sintaxis C
Responder Con Cita