This is my first Delphi code but I get the same problem
Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
CardNumber: integer;
DataBuffer: array of byte;
DataCounter: integer;
Speed: word;
function EasyLaseGetCardNum: integer; stdcall; external 'easylase.dll';
function EasyLaseStop(var CardNumber: integer): boolean; stdcall; external 'easylase.dll';
function EasyLaseGetStatus(var CardNumber: integer): integer; stdcall; external 'easylase.dll';
function EasyLaseWriteFrame(var CardNumber: integer; DataBuffer: pointer; DataCounter: integer; Speed: word): boolean; stdcall; external 'easylase.dll';
function EasyLaseWriteFrameNR(var CardNumber: integer; DataBuffer: pointer; DataCounter: integer; Speed: word; RepNum: word): boolean; stdcall; external 'easylase.dll';
function EasyLaseClose: boolean; stdcall; external 'easylase.dll';
function EasyLaseGetLastError(var CardNumber: integer): integer; stdcall; external 'easylase.dll';
procedure TForm1.FormCreate(Sender: TObject);
begin
CardNumber := EasyLaseGetCardNum - 1;
end;
procedure EasyLaseData(X, Y: word; R, G, B, I: byte);
begin
SetLength(DataBuffer, DataCounter + 8);
DataBuffer[DataCounter] := lo(X);
DataBuffer[DataCounter + 1] := hi(X);
DataBuffer[DataCounter + 2] := lo(Y);
DataBuffer[DataCounter + 3] := hi(Y);
DataBuffer[DataCounter + 4] := R;
DataBuffer[DataCounter + 5] := G;
DataBuffer[DataCounter + 6] := B;
DataBuffer[DataCounter + 7] := I;
DataCounter := DataCounter + 8;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
T: cardinal;
N: single;
X, Y: single;
XData, YData: word;
R, G, B, I: byte;
begin
Button1.Enabled := False;
T := 0;
repeat
SetLength(DataBuffer, 0);
DataCounter := 0;
Speed := 1000;
N := -PI;
while N < PI do begin
X := sin(N + T / 20) / 1.5;
Y := cos(N + T / 20) / 1.5;
R := 255;
G := 255;
B := 255;
I := 255;
XData := trunc(2048 + X * 2047);
YData := trunc(2048 + Y * 2047);
EasyLaseData(XData, YData, R, G, B, I);
N := N + 2 * PI / 20
end;
repeat
Application.ProcessMessages;
until EasyLaseGetStatus(CardNumber) <> 2;
T := T + 1;
until EasyLaseWriteFrame(CardNumber, DataBuffer, DataCounter, Speed) = False;
//until EasyLaseWriteFrameNR(CardNumber, DataBuffer, DataCounter, Speed, 0) = False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
EasyLaseClose;
end;
end.