Архитектура Системы Видеонаблюдения
От: shrkn Россия  
Дата: 10.02.06 17:40
Оценка:
Привет Всем!

У меня следующая проблема

Нужно разработать программную архитектуру телевизионной системы видеонаблюдения (далее ТСН).
Есть некий SDK для плат видеозахвата, я решил низкоуровневые операции такие как:
работа с окнами вывода, захват видео, управление ТСН по сети и др. сделать в виде
набора DLL-ок, причем не просто функции экспортировать а классы по фунциональности, ну во первых
потому, что сложилась уже в голове некая иерария классов (типичное ООП проектирование),
а во вторых с ними работать удобнее.

SDK для плат привязано к GDI, и отчасти к MFC ну потому что примерчик который там есть написан
именно с помощью нее. Легче разобраться.

В общем у меня схема такая:
Весь интерфейс пользователя я решил сделать на билдере, а DLL работает напрямую с SDK на VC++ 7,
но вот я сделал DLL и передаю одному из методов класса хендл на окно, а в методе инициализация
окна по этому хэндлу через GDI, но вот косяк не работают эти функции в DLL не рисуют и все

Но вот если я линкую DLL с приложением на том же VC++ 7 MFC 7 все работает. Причем это с GDI такие проблемы
а вообще MFC код работает нормально (я вставлял в DLL код CFile(...); все работает а вот GetDC();...
не хотят. Ниже приведу как я это делал.

Сделал я DLL-ку для теста которая экспортирует класс так:

файлик export.h

class CBaseVideoWin {
  public:
   virtual initOverlay(void)=0;
   virtual viewWindow((void*) wnd)=0;
   }

extern "C"__declspec(dllexport) CBaseVideoWin* createCVideoWin(void);


файлик videowin.h

#include "export.h"

class CVideoWin: public CBaseVideoWin
{
public:
    CVideoWin(void);
    ~CVideoWin(void);
    virtual int viewWindow(void* wnd);
    virtual int initOverlay(void);
private:
    HANDLE h0;
    HANDLE h1;
};


файлик videowin.cpp

#include "StdAfx.h"
#include ".\videowin.h"
#include "tmsdk.h"

CVideoWin::CVideoWin(void)
{
}

CVideoWin::~CVideoWin(void)
{
}

int CVideoWin::viewWindow(void* wnd)
{
             HWND* hWnd = (HWND*) wnd              
        HDC hdc = GetDC(hWnd);     
                 //....
                 // Здесь я устанавливаю фон RGB(10,10,10);
                 // Вывожу видео....
                 //....
                ReleaseDC(hdc);
        return 0;
}

int CVideoWin::initOverlay(void)
{

    InitDSPs();
    h0 = ChannelOpen(0);
    h1 = ChannelOpen(1);
    return 0;
}


файлик video.cpp создание DLL video.dll

#include "stdafx.h"
#include <afxdllx.h>
#include "videowin.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

static AFX_EXTENSION_MODULE videoDLL = { NULL, NULL };

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
   // код сгенерированный VS
    return 1;   // ok
}

CBaseVideoWin* createCVideoWin()
 {
     return new CVideoWin();
 }


Далее я подключаю созданную DLL в билдере и получаю указатель на объект CVideoWin:

CBaseVideoWin* cVideo = createCVideoWin();


а затем вызываю

 cVideo->initOverlay();
  cVideo->viewWindow((*void) Form1->Handle);


ошибок при выполнении никаких, но ничего не происходит, а должен установиться
RGB(10,10,10) цвет формы в заданном прямоугольнике (RECT).

Вопрос в чем может быть проблема?
И если можно рекомендации как лучше построить программную архитектуру в данном случае?
Помогите плиззз
Re: Архитектура Системы Видеонаблюдения
От: LeeMouse Россия  
Дата: 10.02.06 18:24
Оценка:
Я разработал такую систему, но архитектуру расскажу, если ты продукт купишь
Re[2]: Архитектура Системы Видеонаблюдения
От: shrkn Россия  
Дата: 14.02.06 05:55
Оценка:
Здравствуйте, LeeMouse, Вы писали:

LM>Я разработал такую систему, но архитектуру расскажу, если ты продукт купишь


Ну я же не прошу полностью проект с реализациями, а просто прошу совета нельзя же быть таким меркантильным
а разработать, в принципе и написать я и сам могу, мне важно точка зрения профессионалов
Re: Архитектура Системы Видеонаблюдения
От: vgrigor  
Дата: 14.02.06 15:37
Оценка:
У вас техническая проблема по DLL а не архитектура,
которая вполне вами составлена,
хотя и простая весьма.


Спросите в форуме Дельфишников как они работают с DLL C++/
Винтовку добудешь в бою!
Re[3]: Архитектура Системы Видеонаблюдения
От: LeeMouse Россия  
Дата: 15.02.06 09:53
Оценка:
Здравствуйте, shrkn, Вы писали:

S>Здравствуйте, LeeMouse, Вы писали:


LM>>Я разработал такую систему, но архитектуру расскажу, если ты продукт купишь


S> Ну я же не прошу полностью проект с реализациями, а просто прошу совета нельзя же быть таким меркантильным

S>а разработать, в принципе и написать я и сам могу, мне важно точка зрения профессионалов

Правами на этот продукт обладает моя контора-наниматель.
Я просто намекнул на то, что не нужно разрабатывать с 0 самому то, что уже разработано, отлажено и протестировано за вас
Re[4]: Архитектура Системы Видеонаблюдения
От: shrkn Россия  
Дата: 15.02.06 19:14
Оценка:
Здравствуйте, LeeMouse, Вы писали:

LM>Здравствуйте, shrkn, Вы писали:


S>>Здравствуйте, LeeMouse, Вы писали:


LM>>>Я разработал такую систему, но архитектуру расскажу, если ты продукт купишь


S>> Ну я же не прошу полностью проект с реализациями, а просто прошу совета нельзя же быть таким меркантильным

S>>а разработать, в принципе и написать я и сам могу, мне важно точка зрения профессионалов

LM>Правами на этот продукт обладает моя контора-наниматель.

LM>Я просто намекнул на то, что не нужно разрабатывать с 0 самому то, что уже разработано, отлажено и протестировано за вас

Кстати говоря о разработках, та система которую вы разработали подойдет нашей конторе тока на процентов 0-5, потому что разрабатываемая мной система должна отрабатывать команды тренажера, переставлять окна вывода камемер между собой определяя конфигурации отображения, но это самое малое, самое главное то что у нас есть платы которые мы уже купили (и кстати говоря эти платы хватают полный PAL сигнал, колличество каналов в системе ограничено тока разьемами PCI, поскоку жмет она все аппаратно). Вот поэтому прошу помочь конструктивно, а не корысными советами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.