Текущий архив: 2006.12.03;
Скачать: CL | DM;
Вниз
Как записать в файл массив размером 8 точек на миллион Найти похожие ветки
← →
MikePetrichenko © (2006-11-14 02:39) [80]
> Как это можно обойти? мне действительно нужно столько объектов.
Для тех кто в танке:
Memory Mapped Files MSDN
> вопрос более глобальный: ты выбором специальности не ошибся?
И не только специальности...
← →
fog (2006-11-14 02:55) [81]>Для тех кто в танке:
>Memory Mapped Files MSDN
согласен.
при такой частоте - только так.
+ описание АЦП (min/max значения, вес 1 разряда)
← →
fog (2006-11-14 03:22) [82]+ летом пролетал вопрос про осциллограф из звуковой платы -> в архив форума
← →
Anatoly Podgoretsky © (2006-11-14 08:55) [83]> fog (14.11.2006 02:55:21) [81]
> описание АЦП (min/max значения, вес 1 разряда)
Ну он же утверждает, что у него REAL :-)
← →
yuraspb © (2006-11-16 11:15) [84]Да, похоже у меня не real )
← →
Mikhail V © (2006-11-16 11:28) [85]Весело тут у вас
← →
Сергей М. © (2006-11-16 11:32) [86]
> yuraspb © (16.11.06 11:15) [84]
>
> Да, похоже у меня не real
real или не real у тебя там - не суть как важно.
Ты лучше объясни нам, бестолковым, зачем тебе такой огромный по размеру массив ?
Что мешает считывать из АЦП блоки данных в массив размером, скажем, 4к и тут же записывать содержимое массива в файл ?
← →
yuraspb © (2006-11-16 13:47) [87]Сергей М.,
Спасибо Вам за действительно Полезный совет. Я попробую так и сделать.
Соответственно считывать их тоже можно блоками? А как узнать сколько? Записывать число последней или первой записью?
← →
Сергей М. © (2006-11-16 14:11) [88]Приведи фрагмент кода, в котором ты читаешь АЦП и заполняешь свой массив, тогда и рекомендации, возможно, будут.
← →
yuraspb © (2006-11-16 14:17) [89]With ptFaiData do
begin
overrun := @wOverrun;
count := frmInit.giConvCount;
start := 0; {Start from buffer begging}
DataType := Word(frmInit.chkFloatData.Checked);
ActiveBuf := 0; {Single buffer}
{If want floating data}
if DataType = 1 Then
i := SizeOf(single)
{Else need Raw data}
else
i := SizeOf(Word);
DataBuffer := Pointer(GlobalLock(frmInit.hUserbuf)); {Alolocate memory for data}
end;
lErrCde := DRV_FAITransfer(frmInit.ghDev, ptFaiData);
if DoesErr(lErrCde) = 1 then
begin
GlobalUnlock(frmInit.hBuf);
GlobalFree(frmInit.hBuf);
GlobalUnlock(frmInit.hUserbuf);
GlobalFree(frmInit.hUserbuf);
DRV_DeviceClose(frmInit.ghDev);
Exit;
end;
{Save data to data show screen}
p := ptFaiData.DataBuffer;
if gbCyclic = True Then
lRetrieved := ptFaiData.count - 1
else
lRetrieved := ptAiCheck.retrieved^ - 1;
frmDataShow.memData.Lines.Clear;
j:=0;
for i:=0 to (lRetrieved - 1) do
begin
if ptFaiData.DataType = 1 then
begin
{Converting to Floating data}
j:=j+1;
if j=1 then frminit.Chart1.Series[0].AddXY(i+vt,Single(p^),"",10289720);
if j=2 then frminit.Chart1.Series[1].AddXY(i+vt,Single(p^),"",16711680);
if j=3 then frminit.Chart1.Series[2].AddXY(i+vt,Single(p^),"",12550656);
if j=4 then frminit.Chart1.Series[3].AddXY(i+vt,Single(p^),"",40192);
if j=5 then frminit.Chart1.Series[4].AddXY(i+vt,Single(p^),"",65408);
if j=6 then frminit.Chart1.Series[5].AddXY(i+vt,Single(p^),"",65535);
if j=7 then frminit.Chart1.Series[6].AddXY(i+vt,Single(p^),"",33023);
if j=8 then frminit.Chart1.Series[7].AddXY(i+vt,Single(p^),"",255);
if j=8 then j:=0;
Longint(p) := Longint(p) + SizeOf(Single);
end
else
begin
{Convert to Hex data}
frmDataShow.memData.Lines.Append(Format("Buff[%d] = ", [i])+ IntToHex(Word(p^), 3));
Longint(p) := Longint(p) + SizeOf(Word);
end;
end;
{Free data buffer}
GlobalUnlock(frmInit.hBuf);
GlobalFree(frmInit.hBuf);
GlobalUnlock(frmInit.hUserbuf);
GlobalFree(frmInit.hUserbuf);
{Close device}
DRV_DeviceClose(frmInit.ghDev);
{Display the Data Show Form}
frmConverting.Enabled := True;
butTerminate.Caption := "&Terminate";
//frmDataShow.Show;
frmInit.Enabled := True;
frmConverting.Hide;
//rminit.StatusBar1.SimpleText:="Ãîòîâ. Èíôîðìàöèÿ îáðàáîòàíà. ";
//frminit.gotov:=true;
// if not frminit.stopp then frminit.butconvert.click;
end;
← →
Сергей М. © (2006-11-16 14:36) [90]
> count := frmInit.giConvCount;
И чему равно значение frmInit.giConvCount ?
← →
yuraspb © (2006-11-16 14:45) [91]обычно 90000
← →
Сергей М. © (2006-11-16 14:50) [92]
> обычно 90000
Откуда это число взялось ? От балды взято ? Или чем-то аргументирован его выбор ? Как оно соотносится с массивом размером в ~50 мбайт (см. [9]) ?
← →
ANB © (2006-11-16 14:51) [93]
> yuraspb © (16.11.06 14:17) [89]
Чет не вижу я никакого массива. Вроде как ты напрямую в выделенный буфер памяти пишешь. Если этот кусок работает, то прямо из этого буфера и запиши в файл - чего его в массив то копировать ?
← →
Jeer © (2006-11-16 14:54) [94]
> yuraspb © (16.11.06 14:17) [89]
Вам повезло, что я не Ваш начальник.
← →
Сергей М. © (2006-11-16 14:54) [95]И нафих, спрашивается, ты сюда чарт приплел ? Всуе ?
← →
Сергей М. © (2006-11-16 14:55) [96]
> Jeer © (16.11.06 14:54) [94]
Да уж, Серега).. Я бы не позавидовал автору при таком раскладе)
← →
yuraspb © (2006-11-16 14:55) [97]да число строго аргументировано, причём прогонять его надо аж 10 раз подряд ( 10 раз по 90000 ).
Кроме этого его нужно обрабатывать с помощью кластерного анализа, но сейчас главное хотябы минимум обработки ( нормировка ) и запись в файл.
← →
yuraspb © (2006-11-16 14:57) [98]
> Вам повезло, что я не Ваш начальник.
я и есть начальник.
← →
Сергей М. © (2006-11-16 14:59) [99]
> yuraspb © (16.11.06 14:55) [97]
> число строго аргументировано
Плакалъ ...
Сразу вспомнилось
- Аргументируйте !
- Аргументриую.
- Чем ?
- АргУментами !
(С)
Спасиб, потешил меня, старика))
> прогонять его надо аж 10 раз подряд ( 10 раз по 90000 )
Получил свои 90000 в очередной итерации ? Сразу пиши их в файл ! В чем проблема ?
← →
Сергей М. © (2006-11-16 14:59) [100]
> я и есть начальник
"Ты начальник - я дурак" (с)
))
← →
yuraspb © (2006-11-16 15:00) [101]обработать мне их надо
← →
Сергей М. © (2006-11-16 15:01) [102]Ну так как все-таки связано сакраментальное число 90000 с размером массива в ~50мбайт ?
Я так и не понял...
← →
yuraspb © (2006-11-16 15:02) [103]я вообще не понимаю что за 50 мбайт и откуда Вы их взяли
← →
Сергей М. © (2006-11-16 15:02) [104]
> yuraspb © (16.11.06 15:00) [101]
>
> обработать мне их надо
Ну и обработай ! Что мешает-то ? А обработав тут же пиши в файл. Начерта тут массив-то бешеного размера ? Объясни мне, тундре ...
← →
Сергей М. © (2006-11-16 15:04) [105]
> yuraspb © (16.11.06 15:02) [103]
> не понимаю что за 50 мбайт и откуда Вы их взяли
>
> yuraspb © (10.11.06 19:37) [9]
>
> У меня массив array[1..8,1..1000000] of real
>
Это ты сказал, я ни слова ни приврал.
SizeOfReal = 6
8 * 1000000 * 6 = 48000000 ~ 50mb
Any questions, sir ?
← →
yuraspb © (2006-11-16 15:06) [106]объясню: мне кажется если я буду обрабатывать в реальном времени у меня всё будет зверски тормозить.
И к тому же будет идти запись 90000 раз по одному значению?
← →
yuraspb © (2006-11-16 15:09) [107]про массив я говорил, но так как вариантов решения в таком виде не нашлось решил сделать 10 раз по 90000
← →
Сергей М. © (2006-11-16 15:09) [108]
> yuraspb © (16.11.06 15:06) [106]
Ты вообще откуда этот код взял ? Содрал откуда-то ? Док-ция к нему хоть какая-то имеется ? Если имеется, то читал ли ты ее ?
> мне кажется
Ты программист или где ?)
Что значит "кажется" ?
Что подразумевается под "обрабатывать в реальном времени" ?
Что значит "тормозить" ?
Что за детсад, в конце концов !?
← →
Сергей М. © (2006-11-16 15:10) [109]
> будет идти запись 90000 раз по одному значению?
>
Это кто сказал ?
← →
Сергей М. © (2006-11-16 15:11) [110]
> yuraspb
Слыш, начальник, это какой-то бред...
Ты вообще-то понимаешь, что происходит при вызове тобой некоей ф-ции DRV_FAITransfer() ?
← →
yuraspb © (2006-11-16 15:16) [111]слушай, я понимаю что вы тут все крутые бывалые программеры и Ketmar- школьник,
но пойми это не моя сфера, мне сказали как сделать я сделал, не получилось, вот пытаюсь чтото изменить
← →
yuraspb © (2006-11-16 15:19) [112]DRV_FAITransfer - наверно это ошибка передачи
← →
Сергей М. © (2006-11-16 15:20) [113]
> мне сказали как сделать я сделал
Как это соотносится с [98] ?
Так обычно действует исполнитель, но отнюдь не начальник.
> пытаюсь чтото изменить
Прежде чем здесь что-то менять, следует понять, как работает ф-ция DRV_FAITransfer()
Ты ни сам не желаешь это сделать, ни нам инф-ции не даешь.
И что же ты хочешь при таком раскладе ?
Продолжай париться - это единственное, что я могу посоветовать в такой ситуации.
← →
Сергей М. © (2006-11-16 15:22) [114]
> DRV_FAITransfer - наверно это
Вот как выяснишь, так и приходи)
Что тут гадать на коф.гуще да с бубном скакать вокруг твоей проблемы ?
← →
yuraspb © (2006-11-16 15:24) [115]
> Как это соотносится с [98] ?
>
> Так обычно действует исполнитель, но отнюдь не начальник.
>
</>
программеры хотят денег немеренно не нашёл никого дешевле 15000, а всё это написал мой друг, а сам свалил.
← →
yuraspb © (2006-11-16 15:28) [116]DRV_FAITransfer() - это и есть функция которая запускает передачу данных с АЦП
← →
Плохиш © (2006-11-16 15:34) [117]Хм, как-то не вяжутся
> yuraspb © (16.11.06 14:57) [98]
> я и есть начальник.
и
> yuraspb © (16.11.06 15:16) [111]
> мне сказали как сделать я сделал
:-)
А вообщв, спасибо за ветку, и главное вовремя. Весёлый желудок лучше пищу переваривает :-P
← →
Плохиш © (2006-11-16 15:35) [118]
> yuraspb © (16.11.06 15:28) [116]
> DRV_FAITransfer() - это и есть функция которая запускает
> передачу данных с АЦП
Такие красивые намёки (c) котёнок Гав :-)
← →
Сергей М. © (2006-11-16 15:44) [119]
> yuraspb © (16.11.06 15:28) [116]
>
> DRV_FAITransfer() - это и есть функция которая запускает
> передачу данных с АЦП
Замечательно.
Мои телепатические способности явно не равны нулю).
Ну так и что там насчет описания параметров/перультата этой ф-ции ?
> программеры хотят денег немеренно не нашёл никого дешевле
> 15000, а всё это написал мой друг, а сам свалил
Бедняжка, тебя пожалеть-приголубить прилюдно ?(
← →
yuraspb © (2006-11-16 15:44) [120]Удалено модератором
Страницы: 1 2 3 4 5 вся ветка
Текущий архив: 2006.12.03;
Скачать: CL | DM;
Память: 0.7 MB
Время: 0.044 c