unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, TeeProcs, TeEngine, Chart, Series, create, ifc_ldev, ioctl; type TForm1 = class(TForm) Chart1: TChart; TrackBar1: TTrackBar; Label1: TLabel; Memo1: TMemo; Panel1: TPanel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Timer1: TTimer; Series1: TLineSeries; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; pLDev: IDaqLDevice; pIUnknown:LUnknown; hr:Integer; sl:SLOT_PAR; dev: THandle; pd: PLATA_DESCR_U2; ap: ADC_PAR; tm: ULONG; //data:PWA; sync:PULONG; //LockXY : TCriticalSection; skip: Integer; pp:ASYNC_PAR; i:integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin skip:=1; Timer1.Enabled:=False; //Timer2.Enabled:=False; //LockXY:= TCriticalSection.Create; Memo1.Lines.Clear; Memo1.Lines.Add('Testing library'); if(CallCreateInstance('lcomp.dll')=1) then begin Memo1.Lines.Add('Loading library - success.'); Memo1.Lines.Add(''); end; {Oea?eoa caanu ae?ooaeuiue neio oie ieaou n eioi?ie oioeoa ?aaioaou} pIUnknown:=CreateInstance(0); hr := pIUnknown.QueryInterface(IID_ILDEV,pLDev); if(not Succeeded(hr)) then MessageBox(0,'Get interface failed','Error',MB_OK); pIUnknown.Release; dev:=pLDev.OpenLDevice; end; procedure TForm1.Button1Click(Sender: TObject); var s:string; pp:ASYNC_PAR; begin pLDev.GetSlotParam(sl); Memo1.Lines.Add(''); Memo1.Lines.Add('Slot parameters'); Memo1.Lines.Add('Base - '+IntToHex(sl.Base,4)); Memo1.Lines.Add('BaseL - '+IntToHex(sl.BaseL,4)); Memo1.Lines.Add('Mem - '+IntToHex(sl.Mem,8)); Memo1.Lines.Add('MemL - '+IntToHex(sl.MemL,8)); Memo1.Lines.Add('Type - '+IntToStr(sl.BoardType)); Memo1.Lines.Add('DSPType - '+IntToStr(sl.DSPType)); Memo1.Lines.Add('Irq - '+IntToStr(sl.Irq)); Memo1.Lines.Add(''); case sl.BoardType of PCIA,PCIB,PCIC: begin s:=IntToStr(pLDev.ReadPlataDescr(pd)); Memo1.Lines.Add('ReadPlataDescr status '+s); s:=IntToStr(pLDev.LoadBios(pd.t1.BrdName)); Memo1.Lines.Add('LoadBios status '+s); Memo1.Lines.Add(''); Memo1.Lines.Add('Serial Num. '+pd.t1.SerNum); Memo1.Lines.Add('Board Name '+pd.t1.BrdName); Memo1.Lines.Add('Revision '+pd.t1.Rev); Memo1.Lines.Add('DSP Type '+pd.t1.DspType); Memo1.Lines.Add('Quartz '+IntToStr(pd.t1.Quartz)); end; E440: begin s:=IntToStr(pLDev.LoadBios('e440')); Memo1.Lines.Add('LoadBios status '+s); s:=IntToStr(pLDev.ReadPlataDescr(pd)); Memo1.Lines.Add('ReadPlataDescr status '+s); Memo1.Lines.Add(''); Memo1.Lines.Add('Serial Num. '+pd.t4.SerNum); Memo1.Lines.Add('Board Name '+pd.t4.BrdName); Memo1.Lines.Add('Revision '+pd.t4.Rev); Memo1.Lines.Add('DSP Type '+pd.t4.DspType); Memo1.Lines.Add('Quartz '+IntToStr(pd.t4.Quartz)); end; E140: begin s:=IntToStr(pLDev.LoadBios('e440')); {no bios needed} Memo1.Lines.Add('LoadBios status '+s); s:=IntToStr(pLDev.ReadPlataDescr(pd)); Memo1.Lines.Add('ReadPlataDescr status '+s); Memo1.Lines.Add(''); Memo1.Lines.Add('Serial Num. '+pd.t5.SerNum); Memo1.Lines.Add('Board Name '+pd.t5.BrdName); Memo1.Lines.Add('Revision '+pd.t5.Rev); Memo1.Lines.Add('DSP Type '+pd.t5.DspType); Memo1.Lines.Add('Quartz '+IntToStr(pd.t5.Quartz)); end; E154: begin s:=IntToStr(pLDev.LoadBios('e440')); {no bios needed} Memo1.Lines.Add('LoadBios status '+s); s:=IntToStr(pLDev.ReadPlataDescr(pd)); Memo1.Lines.Add('ReadPlataDescr status '+s); Memo1.Lines.Add(''); Memo1.Lines.Add('Serial Num. '+pd.t7.SerNum); Memo1.Lines.Add('Board Name '+pd.t7.BrdName); Memo1.Lines.Add('Revision '+pd.t7.Rev); Memo1.Lines.Add('DSP Type '+pd.t7.DspType); Memo1.Lines.Add('Quartz '+IntToStr(pd.t7.Quartz)); end; E2010B: begin s:=IntToStr(pLDev.LoadBios('e2010m')); Memo1.Lines.Add('LoadBios status '+s); s:=IntToStr(pLDev.ReadPlataDescr(pd)); Memo1.Lines.Add('ReadPlataDescr status '+s); Memo1.Lines.Add(''); Memo1.Lines.Add('Serial Num. '+pd.t6.SerNum); Memo1.Lines.Add('Board Name '+pd.t6.BrdName); Memo1.Lines.Add('Revision '+pd.t6.Rev); Memo1.Lines.Add('DSP Type '+pd.t6.DspType); Memo1.Lines.Add('Quartz '+IntToStr(pd.t6.Quartz)); end; E2010: begin s:=IntToStr(pLDev.LoadBios('e2010')); Memo1.Lines.Add('LoadBios status '+s); s:=IntToStr(pLDev.ReadPlataDescr(pd)); Memo1.Lines.Add('ReadPlataDescr status '+s); Memo1.Lines.Add(''); Memo1.Lines.Add('Serial Num. '+pd.t6.SerNum); Memo1.Lines.Add('Board Name '+pd.t6.BrdName); Memo1.Lines.Add('Revision '+pd.t6.Rev); Memo1.Lines.Add('DSP Type '+pd.t6.DspType); Memo1.Lines.Add('Quartz '+IntToStr(pd.t6.Quartz)); end; end; s:= IntToStr(pLDev.PlataTest); Memo1.Lines.Add('PlataTest status '+s); { oano oeo?iauo eeiee e i?eia? ?aaiou n IoSaync } pp.s_Type := L_ASYNC_TTL_CFG; pp.Mode := 1; pLDev.IoAsync(pp); pp.s_Type := L_ASYNC_TTL_OUT; pp.Data[0] := $A525; pLDev.IoAsync(pp); pp.s_Type := L_ASYNC_TTL_INP; pp.Data[0] := 1; pLDEv.IoAsync(pp); Memo1.Lines.Add(''); Memo1.Lines.Add('IoAsync call'); Memo1.Lines.Add('Data[0] - '+IntToStr(pp.Data[0])); end; procedure TForm1.FormDestroy(Sender: TObject); begin //data:=NIL; sync:=NIL; Timer1.Enabled:=False; //Timer2.Enabled:=False; pLDev.StopLDevice; pLDev.CloseLDevice; pLDev.Release; //LockXY.Free; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin pp.s_Type := L_ASYNC_DAC_OUT; pp.Mode := 0; pp.Data[0]:=ULONG(round(2047/5*TrackBar1.Position/10)); pLDev.IoAsync(pp); Label1.Caption:=floattostrf(TrackBar1.Position/10,ffgeneral,5,3) + ' Volt'; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:=True; end; procedure TForm1.Button3Click(Sender: TObject); begin Timer1.Enabled:=False; end; procedure TForm1.Timer1Timer(Sender: TObject); begin pp.s_Type := L_ASYNC_ADC_INP; pp.Chn[0]:=0; pLDev.IoAsync(pp); Series1.AddXY(i,10/8000*smallint(pp.Data[0])); i:=i+1; end; procedure TForm1.Button4Click(Sender: TObject); begin i:=0; Series1.Clear; end; end.