-
Notifications
You must be signed in to change notification settings - Fork 4
/
ZERO.PAS
145 lines (123 loc) · 4.11 KB
/
ZERO.PAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
unit Zero;
{ -----------------------------------------------------------
WinWCP (c) J.Dempster, University of Strathclyde 1996-97
Channel zero level setup module
-----------------------------------------------------------
3/8/99 ... 32 bit version
29.08.12 ... Now callable from recordfrm and replay forms
26.05.22 ... Channel zero settings now directly updated from within OK button method
(Avoids zero being forced to record-relative when cancel button pressed)
}
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Mask, maths, ValEdit,
ValidatedEdit;
type
TZeroFrm = class(TForm)
TypeGrp: TGroupBox;
rbFromRecord: TRadioButton;
Label1: TLabel;
Label2: TLabel;
rbFixed: TRadioButton;
Label3: TLabel;
edChannel: TEdit;
bOK: TButton;
bCancel: TButton;
edNumAveraged: TValidatedEdit;
edAtSample: TValidatedEdit;
edFixedLevel: TValidatedEdit;
procedure bOKClick(Sender: TObject);
procedure rbFixedClick(Sender: TObject);
procedure rbFromRecordClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Chan : Integer ;
OldZeroAt : Integer ;
NewZeroAt : Integer ;
Level : Integer ;
ChanName : String ;
NumSamplesPerRecord : Integer ;
NumZeroAveraged : Integer ;
MaxValue : Integer ;
EnableFromRecord : Boolean ;
end;
var
ZeroFrm: TZeroFrm;
implementation
{$R *.DFM}
uses WCPFIleUnit;
procedure TZeroFrm.FormShow(Sender: TObject);
{ ----------------------------------
Initialisation when form is opened
---------------------------------- }
begin
// ChanName := WCPFile.Channel[Chan].ADCName ;
edChannel.text := format('Ch.%d %s',[Chan,WCPFile.Channel[Chan].ADCName]) ;
OldZeroAt := WCPFile.Channel[Chan].ADCZeroAt ;
NumZeroAveraged := WCPFile.FH.NumZeroAvg ;
MaxValue := WCPFile.FH.MaxADCValue ;
{ Starting sample for zero level average (-1=fixed level) }
edAtSample.LoLimit := 0 ;
edAtSample.HiLimit := NumSamplesPerRecord-1 ;
edAtSample.Value := NewZeroAt ;
{ Number of samples averaged to compute zero level }
edNumAveraged.LoLimit := 1 ;
edNumAveraged.HiLimit := NumSamplesPerRecord ;
edNumAveraged.Value := NumZeroAveraged ;
{ Amplitude of zero level when in fixed zero mode }
edFixedLevel.LoLimit := -MaxValue ;
edFixedLevel.HiLimit := MaxValue ;
edFixedLevel.Value := Level ;
rbFromRecord.Enabled := EnableFromRecord ;
if (OldZeroAt >= 0) and EnableFromRecord then begin
{ Enable "From Record" zero level options }
rbFromRecord.checked := True ;
edAtSample.enabled := True ;
edNumAveraged.enabled := True ;
edFixedLevel.enabled := False ;
end
else begin
{ Enabled "Fixed" zero level options }
rbFixed.checked := True ;
edFixedLevel.enabled := True ;
edAtSample.enabled := False ;
edNumAveraged.enabled := False ;
end ;
end ;
procedure TZeroFrm.bOKClick(Sender: TObject);
{ -----------------
Update zero level
----------------- }
begin
if rbFromRecord.checked then begin
NewZeroAt := Round(edAtSample.Value) ;
NumZeroAveraged := Round(edNumAveraged.Value) ;
WCPFile.FH.NumZeroAvg := NumZeroAveraged ;
WCPFile.Channel[Chan].ADCZeroAt := NewZeroAt ;
end
else begin
Level := Round(edFixedLevel.Value) ;
WCPFile.Channel[Chan].ADCZero := ZeroFrm.Level ;
NewZeroAt := -1 ;
WCPFile.Channel[Chan].ADCZeroAt := NewZeroAt ;
end ;
// Save changes to file header
WCPFile.SaveHeader( WCPFile.FH ) ;
end;
procedure TZeroFrm.rbFixedClick(Sender: TObject);
begin
edFixedLevel.enabled := True ;
edAtSample.enabled := False ;
edNumAveraged.enabled := False ;
end;
procedure TZeroFrm.rbFromRecordClick(Sender: TObject);
begin
edAtSample.enabled := True ;
edNumAveraged.enabled := True ;
edFixedLevel.enabled := False ;
end;
end.