Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-1161588490
DmiSb
2006-10-23 11:28
2006.12.03
Запутался с показом немодальной формы из DLL


3-1159713284
bugorik
2006-10-01 18:34
2006.12.03
Не вводятся русские данные в Interbase таблицу.


2-1163352962
jose
2006-11-12 20:36
2006.12.03
передача массивов в функцию в виде параметров


2-1163848810
Handle
2006-11-18 14:20
2006.12.03
OpenProcess


2-1163406624
Choco
2006-11-13 11:30
2006.12.03
Программа с многими формами