DataToFaile на каждый клик читает (записывает) и преобразует N количество байт (определяется выбранным свойством) с места, где находится указатель, указатель передвигается на это количество байт.
Чуть позже набросаю схемку примера.
------------ Дoбавленo в 11.07:
rolin, вот получилось, но неправильно, при подаче 200 "кадров" в секунду вываливается при 100 кадрах работает Вчера часа два затылок чесал, чего-то я недопонимаю в этих файловых потоках
Add(MainForm,2953706,266,266)
{
Height=111
Caption="Rolin"
Point(Handle)
link(onCreate,14871690:doInit,[(305,286)(305,272)])
}
Add(Button,15834607,266,105)
{
Left=10
Top=5
Caption=">>"
link(onClick,11971739:doStart,[])
}
Add(MultiElementEx,15807770,364,105)
{
@Hint=#134:Иммитатор SDR, выдаёт кадры по 1442 байта, первые 2 нулевые, остальные содержат 24-битные Sin и Cos 1000 Гц при 48000 Гц дискретизации|
link(onStrm,2552183:doEvent1,[])
}
BEGIN_SDK
Add(EditMultiEx,11645957,21,21)
{
WorkCount=#6:doStrm|
EventCount=#32:onStrm=Выдаёт поток из 1442 байт|
Width=419
Height=277
link(doStrm,9982970:doEvent1,[(46,27)(46,153)])
}
Add(DataToFileEx,7182087,336,119)
{
DataSize=3
Signed=0
BigEndian=0
link(Stream,6066762:Var2,[])
}
Add(MemoryStream,15327036,336,49)
{
}
Add(Hub,225577,196,161)
{
link(onEvent1,5284807:doOperation,[])
link(onEvent2,7995971:doOperation,[(221,174)(221,216)])
}
Add(For,1419073,98,161)
{
End=239
link(onEvent,10518159:doOperation,[])
link(onStop,4449329:doData,[(137,174)(137,251)])
}
Add(Hub,9982970,56,147)
{
OutCount=3
link(onEvent1,15327036:doClear,[(81,153)(81,62)])
link(onEvent2,13573717:doData,[(88,160)(88,125)])
link(onEvent3,1419073:doFor,[])
}
Add(DataToFile,10935020,147,119)
{
Type=1
link(Stream,6066762:Var1,[(153,103)])
}
Add(GetDataEx,6066762,336,98)
{
link(Data,15327036:Stream,[])
}
Add(DoData,13573717,98,119)
{
Data=Integer(0)
link(onEventData,10935020:doPut,[])
}
Add(Math,10518159,147,161)
{
OpType=2
Op2=0.130899693899575
link(onResult,225577:doEvent1,[])
}
Add(Math,5284807,231,161)
{
OpType=13
link(onResult,7824963:doOperation,[])
}
Add(Math,7995971,231,210)
{
OpType=12
link(onResult,13082787:doOperation,[])
}
Add(Math,13082787,280,210)
{
OpType=2
Op2=8388600
ResultType=0
link(onResult,7976762:doWork3,[(326,216)])
}
Add(Math,7824963,280,161)
{
OpType=2
Op2=8388600
ResultType=0
link(onResult,7976762:doWork2,[])
}
Add(HubEx,7976762,322,161)
{
Angle=3
link(onEvent,7182087:doPut,[(326,132)])
}
Add(DoData,4449329,364,245)
{
link(onEventData,11645957:onStrm,[(403,251)(403,27)])
link(Data,6066762:Var3,[(370,103)])
}
END_SDK
Add(Thread,11971739,315,105)
{
Delay=10
link(onExec,15807770:doStrm,[])
}
Add(Button,3126444,266,147)
{
Left=10
Top=35
Caption="II"
link(onClick,11971739:doStop,[(305,153)(305,118)])
}
Add(BASS_Init,14871690,315,266)
{
Freq=48000
link(onInit,10183901:doCheck,[])
link(onError,11232751:doMessage,[])
link(Handle,2953706:Handle,[(335,257)(258,257)(258,306)(272,306)])
}
Add(BASS_StreamCreate,5785541,567,266)
{
Freq=48000
Channels=2
Name="MySDR"
link(onCreate,11772076:doPlay,[])
link(Data,7526552:Data,[])
}
Add(SoundBuffer,920753,497,63)
{
}
Add(DataToFileEx,7526552,567,217)
{
DataSize=3
Signed=0
BigEndian=0
Point(doPosition)
link(Stream,13545473:Stream,[])
}
Add(Hub,2552183,413,105)
{
OutCount=5
link(onEvent1,1110172:doCopy,[(438,111)(438,55)])
link(onEvent2,920753:doAdd,[(445,118)(445,69)])
link(onEvent3,14651797:doCopy,[(486,125)(486,118)])
link(onEvent4,6180934:doData,[])
link(onEvent5,4392974:doCopy,[(438,139)(438,174)])
}
Add(DoData,6180934,448,126)
{
Data=Integer(2)
link(onEventData,14651797:doPosition,[])
}
Add(BASS_ChannelPlay,11772076,616,266)
{
Channel="MySDR"
}
Add(BASS_Version,10183901,399,266)
{
link(onCheckOk,5785541:doCreate,[])
link(onCheckFailed,109118:doMessage,[])
}
Add(Message,11232751,357,273)
{
Message="Error BASS initialization"
Caption="Error"
Icon=1
}
Add(Message,109118,441,273)
{
Message="Incorrect version of BASS library "
Caption="Error"
Icon=1
}
Add(MemoryStream,14651797,497,112)
{
Point(doPosition)
link(SrcStream,920753:Stream,[])
}
Add(DoData,1257513,672,217)
{
link(onEventData,11128013:doPosition,[])
link(Data,13545473:FullState,[(678,208)(580,208)])
}
Add(StreamCopy,4392974,490,168)
{
Count=1440
link(onCopy,13545473:doAdd,[])
link(Dest,5632447:Var1,[(496,155)])
link(Source,14651797:Stream,[])
}
Add(ProgressBar,11128013,721,217)
{
Left=85
Top=20
Width=215
Height=10
Color=32768
ProgressColor=65280
}
Add(SoundBuffer,13545473,567,168)
{
link(SoundStream,5632447:Var3,[(573,155)])
}
Add(MemoryStream,1110172,546,49)
{
}
Add(Timer,7664329,630,217)
{
Interval=30
link(onTimer,1257513:doData,[])
}
Add(GetDataEx,5632447,546,150)
{
link(Data,1110172:Stream,[])
}
Add(Math,7288998,462,217)
{
OpType=3
Op2=256
link(onResult,10056068:doData,[])
}
Add(EventFromData,10056068,504,217)
{
}