Форум программистов, компьютерный форум CyberForum.ru

Ох уж эти указатели - C++

Восстановить пароль Регистрация
 
zhrk
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 6
25.02.2013, 21:08     Ох уж эти указатели #1
Есть С++ библиотека
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    int CCDTitanFUnctions::GetFrame(float exduration)
    {
        if (hCam == NULL)
            return 1;
 
        // Don't switch amplifier off for short exposures
        //ArtemisSetAmplifierSwitched(hCam, exduration>2.5f);
 
        // Start the exposure
        Start = ArtemisStartExposure(hCam, exduration*0.001f);
 
        // Wait until it's ready, or ESC is pressed.
        // A more polished app would not use this method!
        while(!ArtemisImageReady(hCam))
        {
            if (GetAsyncKeyState(VK_ESCAPE)&0x8000)
            {
                ArtemisAbortExposure(hCam);
                return 2;
            }
            Sleep(100);
        }
 
        int x,y,wid,hgt,binx,biny;
        ArtemisGetImageData(hCam, &x, &y, &wid, &hgt, &binx, &biny);
        x_out = x; y_out = y; w_out = wid; h_out = hgt;
 
        [B][I][U]unsigned short* pimg = (unsigned short*)ArtemisImageBuffer(hCam);[/U][/I][/B]
 
        lenght = sizeof(pimg);
        return 3;
    }
Должна в pimg запихувать массив изображения с камеры, но как я не долбаюсь длинна pimg = 4 и все.... до этого все этапы инициализации и всего остального камера работают четко... как тут быть и чего дальше делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2013, 21:08     Ох уж эти указатели
Посмотрите здесь:

Эти простые числа... C++
C++ Вновь эти часы
Ах, эти указатели C++
Ох уж эти массивы C++
C++ Чем отличаются эти функции?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2013, 21:25     Ох уж эти указатели #2
pimg - это указатель. sizeof(pimg) всегда равен 4 в 32 битных системах и 8 - в 64 битных и ничего вы с этим не сделаете. наверно вместо lenght = sizeof(pimg); нужно сделать что-нибудь другое. если это указатель на длину,
то length = *pimg; если указатель на что-то другое - то нужно что-то другое делать.
zhrk
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 6
25.02.2013, 21:39  [ТС]     Ох уж эти указатели #3
Цитата Сообщение от DU Посмотреть сообщение
pimg - это указатель. sizeof(pimg) всегда равен 4 в 32 битных системах и 8 - в 64 битных и ничего вы с этим не сделаете. наверно вместо lenght = sizeof(pimg); нужно сделать что-нибудь другое. если это указатель на длину,
то length = *pimg; если указатель на что-то другое - то нужно что-то другое делать.
ага....
это указатель на массив
// Return pointer to internal image buffer (actually unsigned shorts)
extern void* ArtemisImageBuffer(ArtemisHandle hCam);

так вот оно описано в UserAPI

идея - по этому указателю выковырять массив...
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2013, 21:43     Ох уж эти указатели #4
я так понял нужно получить размер этого буфера (массива). так вот sizeof для этого не подходит. нужно смотреть другие UserAPI функции, которые бы вернули размер буфера. или самостоятельно считать этот размер исходя из размера и формата изображения.
zhrk
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 6
25.02.2013, 22:06  [ТС]     Ох уж эти указатели #5
Цитата Сообщение от DU Посмотреть сообщение
я так понял нужно получить размер этого буфера (массива). так вот sizeof для этого не подходит. нужно смотреть другие UserAPI функции, которые бы вернули размер буфера. или самостоятельно считать этот размер исходя из размера и формата изображения.
Ну реальные значения получаются внутри ф-ции... вот как бы этот массив выковырять наружу... а еще лучше для C#
Yandex
Объявления
25.02.2013, 22:06     Ох уж эти указатели
Ответ Создать тему
Опции темы

Текущее время: 04:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru