unit OSCHILOGRAF;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,soundTemp, StdCtrls,mmsystem, ExtCtrls, ComCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    TrackBar1: TTrackBar;
    GroupBox2: TGroupBox;
    RadioButton5: TRadioButton;
    RadioButton7: TRadioButton;
    RadioButton8: TRadioButton;
    RadioButton9: TRadioButton;
    RadioButton10: TRadioButton;
    GroupBox3: TGroupBox;
    TrackBar2: TTrackBar;
    GroupBox4: TGroupBox;
    RadioButton11: TRadioButton;
    Button2: TButton;
    RadioButton6: TRadioButton;
    GroupBox5: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Label1: TLabel;
    Label2: TLabel;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure MMOutOpen(var msg: Tmessage); message MM_WIM_DATA;//сообщение зв.карты
    procedure FormCreate(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure RadioButton5Click(Sender: TObject);
    procedure TrackBar2Change(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation



{$R *.dfm}
var Yyrov1,Yyrov, vdel,mash,sdvig:integer;
  sx,ln:integer;
//обработка сообщений зв.карты
procedure TForm2.MMOutOpen(var msg: Tmessage);
begin
if  RadioButton6.Checked then begin
        if CheckBox1.Checked then sx:=0 else sx:=1;
        if CheckBox2.Checked then ln:=0 else ln:=1;
        clearHDC(Panel1.Handle);
        grafsignal(ln,mash,panel1.Handle,sdvig,vdel+sdvig,Yyrov,Panel1.Height div 2,$00ff00,$0000ff);
         sleep(300); //частота обновления экрана
         msgwavIn;//подготовка зв.карты к следующему циклу
         end;
         
end;
//старт работы осцилографа
procedure TForm2.Button1Click(Sender: TObject);
begin
//2-канала, 44100Гц-частота, 176400-размер буфера, 4байт-блок, 16бит-преобразов, 40000 бит/сек
createsound(2,44100,176400,4,16,40000);
startInsound(form2.Handle); //
end;
///////////////////////////////////////////////////////////////////////////////////

procedure TForm2.FormCreate(Sender: TObject);
begin
RadioButton1.Checked :=true;
RadioButton6.Checked:=true;
RadioButton5.Checked:=true;
Yyrov:=1000;
button1.Click;
TrackBar2.Position:=1000;
end;

procedure TForm2.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked then  Yyrov1:=1000;
if RadioButton2.Checked then  Yyrov1:=100;
if RadioButton3.Checked then  Yyrov1:=10;
if RadioButton4.Checked then  Yyrov1:=1;
TrackBar1.Position:=1;
Yyrov:=Yyrov1;
end;

procedure TForm2.TrackBar1Change(Sender: TObject);
begin
Yyrov:= Yyrov1 div TrackBar1.Position;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
clearHDC(Panel1.Handle);
application.ProcessMessages;
msgwavIn;
grafsignal(ln,mash,panel1.Handle,sdvig,vdel+sdvig,Yyrov,Panel1.Height div 2,$00ff00,$0000ff);
end;

procedure TForm2.RadioButton5Click(Sender: TObject);
begin
if RadioButton5.Checked then begin  vdel:=10000; mash:=10; end;
if RadioButton7.Checked then begin  vdel:=1000; mash:=1; end;
if RadioButton8.Checked then begin  vdel:=1000; mash:=-5; end;
if RadioButton9.Checked then begin  vdel:=100; mash:=-20; end;
if RadioButton10.Checked then begin  vdel:=100; mash:=-40; end;
end;

procedure TForm2.TrackBar2Change(Sender: TObject);
begin

sdvig:= TrackBar2.Position;
        clearHDC(Panel1.Handle);
        application.ProcessMessages;
        grafsignal(ln,mash,panel1.Handle,sdvig,vdel+sdvig,Yyrov,Panel1.Height div 2,$00ff00,$0000ff);

end;


procedure TForm2.RadioButton6Click(Sender: TObject);
begin
if form2.Active then msgwavIn;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
form2.Close;
end;

end.
