.
.
.
function GetBlockValues(pValues:
array of single):integer;
{$IFDEF WIN32}stdcall;
external '
DiggerClient.dll';
{$ENDIF}
function GetBlockValuesEx (pValues:
array of single;numVec:integer):integer;
{$IFDEF WIN32}stdcall;
external '
DiggerClient.dll';
{$ENDIF}
function GetNumAvailableDataVec:integer;
{$IFDEF WIN32}stdcall;
external '
DiggerClient.dll';
{$ENDIF}
function WaitForNumVec(numVecToWait:integer):integer;
{$IFDEF WIN32}stdcall;
external '
DiggerClient.dll';
{$ENDIF}[pre]
// Messung starten
Starttick:=GetTickCount;
Startzeit:=Now;
if MaxChannels=UseChannels
then
// alle Kanäle
StatusBar1.SimpleText:='
Startstatus: '+IntToStr(StartMessung)
else
begin
// nur einige Kanäle
// SetLength(Kanaele,UseChannels);
for i:=0
to UseChannels-1
do
Kanaele[i]:=i;
//test:=StartMessungEx(Kanaele, UseChannels);
test:=StartMessung;
//PKanaele:=@Kanaele;
//test:=StartMessungEx(PKanaele, UseChannels);
memo1.Text:=IntToStr(test);
end;
// ButtonStopClick(Sender);
end;
procedure TForm1.ButtonStopClick(Sender: TObject);
var AnzahlDaten:Integer;
Puffer:
array of single;
i,j,k,Fenster:Integer;
stl:TStrings;
Zeile:
String;
t:DWORD;
begin
if not InitOK
then
Exit;
Memo1.Text:=IntToStr(WaitForNumVec(10));
// Messzeit anzeigen (Zeit zwischen Start und Stop Klicken; nur intern gemessen)
LabeledEditMesszeit.Text:=IntToStr(GetTickCount-Starttick);
// Messung stoppen
StopMessung;
// 1,5s warten um Verarbeitung in DLL zu ermöglichen (evtl. reduzieren)
t:=GetTickCount;
while (GetTickCount-t)<1500
do
Application.ProcessMessages;
// wieviele Daten wurden gesammelt?
//AnzahlDaten:=GetNumAvailableDataVec;
AnzahlDaten:=20000;
// Puffergröße einstellen
SetLength(Puffer,AnzahlDaten*UseChannels);
AnzahlDaten:=GetBlockValuesEx(Puffer,AnzahlDaten);
Memo1.Text:=IntToStr(AnzahlDaten);
// Diagramm füllen
for i:=0
to UseChannels-1
do
for j:=0
to AnzahlDaten-1
do
try
Chart1.Series[i].AddY(Puffer[
{j*UseChannels+i}i*AnzahlDaten+j]);
except
Memo1.Lines.Add(IntToStr(UseChannels)+'
;'+IntToStr(AnzahlDaten)+'
;'+IntToStr(i)+'
;'+IntToStr(j)+'
;'+FloatToStr(Puffer[
{j*UseChannels+i}i*AnzahlDaten+j]));
end;
// Daten liegen in: Puffer[j*UseChannels+i]
// Daten in Textdatei speichern
stl:=TStringList.Create;
// Infos für Textdatei
stl.Add('
Kanalanzahl: '+IntToStr(UseChannels));
stl.Add('
Abtastrate: '+IntToStr(Round(StrToFloat(ListBoxSampleraten.Items[ListBoxSampleraten.ItemIndex]))));
if CheckBoxDC.Checked
then
stl.Add('
DC-Adjust: ja')
else
stl.Add('
DC-Adjust: nein');
stl.Add('
Messzeit: '+DateTimeToStr(Startzeit));
stl.Add('
Messdauer: '+LabeledEditMesszeit.Text+'
ms');
stl.Add('
');
stl.Add('
Kanalimpedanzen');
stl.AddStrings(ListBoxImpedanzen.Items);
stl.Add('
');
// Datenüberschrift für TXT Datei
Zeile:='
';
for i:=0
to UseChannels-1
do
Zeile:=Zeile+'
Kanal '+IntToStr(i+1)+'
;';
stl.Add(Zeile);
// Daten ausgeben
for j:=0
to AnzahlDaten-1
do
begin
Zeile:='
';
for i:=0
to UseChannels-1
do
Zeile:=Zeile+FloatToStr(Puffer[j*UseChannels+i])+'
;';
stl.Add(Zeile);
end;
// Text speichern
stl.SaveToFile(ExtractFilePath(Applicati