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(h, ref buffer[0], buffersize);
Bien, yo lo intente implementar asi:
Código Delphi
[-] public
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); 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