rolin, правильно заданый вопрос содержит 90% ответа, с этого надо и начать было
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) { }
Решил плюнуть на "ни строчки кода" и сделать IC к вечеру выложу.
|