Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Varian Workshop   Найти похожие ветки 

 
Sergo ©   (2002-04-08 13:11) [0]

Мож кто подскажет, почему в моей проге VrScope1 не строит график?

unit Unit1;

interface

uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls,MMSystem,VrControls, VrBorder,VrScale,VrScope,VrDesign,VrClasses,VrLeds,VrLcd, VrThreads,VrBlotter;

type
TData8 = array [0..127] of byte;
PData8 = ^TData8;
TPointArr = array [0..127] of TPoint;
PPointArr = ^TPointArr;
TForm1 = class(TForm)
Button2: TButton;
Label1: TLabel;
Memo1: TMemo;
Button3: TButton;
VrScale1: TVrScale;
VrBorder1: TVrBorder;
VrScope1: TVrScope;
Label2: TLabel;

procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure VrScope1NeedData(Sender: TObject; Channel: Integer;
var Value: Integer);

private

public
procedure OnWaveIn(var Msg: TMessage); message MM_WIM_DATA;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

var
WaveIn: hWaveIn;
hBuf: THandle;
BufHead: TWaveHdr;
bufsize: integer;
Bits16: integer;
p: PPointArr;
stop: boolean = false;
b: extended;
c: integer;
Value: integer;

procedure TForm1.Button1Click(Sender: TObject);
var
header: TWaveFormatEx;
BufLen: word;
buf: pointer;
begin
VrScope1.Active:=true;
VrScope1.Interval:=10;
VrScope1.Frequency:=50;
BufSize := 50;
Bits16 := 0;
with header do begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 1;
nSamplesPerSec := 22025;
wBitsPerSample := integer(Bits16)*8+8;
nBlockAlign := nChannels * (wBitsPerSample div 8);
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
cbSize := 0;
end;
WaveInOpen(Addr(WaveIn), WAVE_MAPPER, addr(header),
Form1.Handle, 0, CALLBACK_WINDOW);
BufLen := header.nBlockAlign * BufSize;
hBuf := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, BufLen);
Buf := GlobalLock(hBuf);
with BufHead do begin
lpData := Buf;
dwBufferLength := BufLen;
dwFlags := WHDR_BEGINLOOP;
end;
WaveInPrepareHeader(WaveIn, Addr(BufHead), sizeof(BufHead));
WaveInAddBuffer(WaveIn, addr(BufHead), sizeof(BufHead));
GetMem(p, BufSize * sizeof(TPoint));
stop := true;
WaveInStart(WaveIn);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
VrScope1.Active:=false;
VrScope1.Clear;
if stop = false then Exit;
stop := false;
while not stop do Application.ProcessMessages;
stop := false;
WaveInReset(WaveIn);
WaveInUnPrepareHeader(WaveIn, addr(BufHead), sizeof(BufHead));
WaveInClose(WaveIn);
GlobalUnlock(hBuf);
GlobalFree(hBuf);
FreeMem(p, BufSize * sizeof(TPoint));
end;

procedure TForm1.OnWaveIn;
var
i: integer;
data8: PData8;
begin
begin
Data8 := PData8(PWaveHdr(Msg.lParam)^.lpData);
for i := 0 to BufSize - 1 do begin
b:=int(0.775*exp(ln(10)*(0.05*(data8^[i]-128)))*500);
c:=round(b);
label1.caption:=floattostr(c);
memo1.lines.Add(inttostr(data8^[i]-128));
end; end;
if stop
then WaveInAddBuffer(WaveIn, PWaveHdr(Msg.lParam),
SizeOf(TWaveHdr))
else stop := true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Button2.Click
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.clear;
end;

procedure TForm1.VrScope1NeedData(Sender: TObject; Channel: Integer;var Value: Integer);
begin
Value := Random(100) + 1;
label2.Caption:=floattostr(c);
end;

end.


 
MBo ©   (2002-04-08 13:22) [1]

обрати внимание на свойство channels


 
Sergo ©   (2002-04-08 13:28) [2]

>MBo ©
Ты подсказал мне пример работы с VrScope и там ничего с channels
не делалось, мож я просто чего то не понимаю?
Будь добр, подскажи, плиз.


 
MBo ©   (2002-04-08 13:38) [3]

щелкни в Obj Inspector на channels и заведи канал (один или сколько нужно). В OnNeedData номер канала передается.


 
Sergo ©   (2002-04-08 13:46) [4]

>Mbo
Огромное тебе спасибо! Выручил в очередной раз!


 
Sergo ©   (2002-04-08 14:05) [5]

>Mbo
А как сделать, чтобы график строился относительно центральной линии?


 
MBo ©   (2002-04-08 14:14) [6]

;(((
и зачем нам дан object inspector? ;)
minvalue,maxvalue


 
Sergo ©   (2002-04-08 14:23) [7]

:)) Спасибо! Гоню я уже :))



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
6-50058
Anar
2002-02-27 14:01
2002.05.16
Подключение к интернет.


4-50156
Draculenok
2002-03-12 15:57
2002.05.16
Можно ли создать прогу ....


14-50099
igorr
2002-04-05 13:50
2002.05.16
Простота Dephi :))


1-50019
[891rpm]
2002-04-30 22:46
2002.05.16
Компонент hex-view


3-49879
Tolick
2002-04-19 13:41
2002.05.16
Конвертировать словарь DCT в DDF