Desarrollo SDK fabricante cámaras en Visual C++

Iniciado por troyano11, 22 Diciembre 2016, 17:39 PM

0 Miembros y 1 Visitante están viendo este tema.

troyano11

Estoy intentando meterme en el mundo de los SDK de la mano de un proveedor de cámaras y grabadores (HIKVISION), el SDK esta en C++ y se compone de lo siguiente:

1-   Una demo de un software cliente para las cámara y grabadores.
2-   Manual del SDK.
3-   Librerías a incluir en el proyecto.
4-   Ejemplo del software cliente ya compilado.

El caso es que no estoy muy lúcido con Visual C++ (Me manejo en C#) y me preguntaba si alguien puede echarme una manita (NO al cuello) para tener un pequeño ejemplo de un "preview" (Conectar a una cámara). Para que os hagáis una idea, en el manual del SDK aparecen ejemplos de cada funcionalidad (Os dejo el SDK por si queréis echarle un vistazo rápido https://we.tl/xi5gvhkYWZ), me bastaría con ver o saber cómo pasar este código a visual y poder conectar y visualizar una cámara en una ventana.

La funcionalidad de preview en el SDK es la siguiente (Mediante un ejemplo):

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include <time.h>
using namespace std;

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
   char tempbuf[256] = {0};
   switch(dwType)
   {
   case EXCEPTION_RECONNECT:    //reconnect when preview
   printf("----------reconnect--------%d\n", time(NULL));
   break;
default:
   break;
   }
}

void main() {

 //---------------------------------------
 // Get the window handle of the console
 HMODULE hKernel32 = GetModuleHandle("kernel32");
 GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");

 //---------------------------------------
 //Initialize SDK
 NET_DVR_Init();
 //Set connect time and reconnect time
 NET_DVR_SetConnectTime(2000, 1);
 NET_DVR_SetReconnect(10000, true);

 //---------------------------------------
 //Login device
 LONG lUserID;
 NET_DVR_DEVICEINFO_V30 struDeviceInfo;
 lUserID = NET_DVR_Login_V30("192.0.0.64", 8000, "admin", "12345", &struDeviceInfo);
 if (lUserID < 0)
 {
      printf("Login error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Cleanup();
      return;
 }

 //---------------------------------------
 //Set exception callback function
 NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

 //---------------------------------------
 //Start preview and set to callback stream data
 LONG lRealPlayHandle;
 HWND hWnd = GetConsoleWindow();     //Get window handle
 NET_DVR_PREVIEWINFO struPlayInfo = {0};
 struPlayInfo .hPlayWnd = hWnd;         //If need to decode, please set it valid. If want to get stream data only, it can be set to NULL
 struPlayInfo .lChannel     = 1;       //Preview channel NO.
 struPlayInfo .dwStreamType = 0;       //0-main stream, 1-sub stream, 2-stream3, 3-stream4.
 struPlayInfo.dwLinkMode = 0;         //0-TCP mode, 1-UDP mode, 2-Multi-play mode, 3-RTP mode, 4-RTP/RTSP, 5-RTSP/HTTP
 
 lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, NULL, NULL);
 if (lRealPlayHandle < 0)
 {
     printf("NET_DVR_RealPlay_V40 error\n");
 NET_DVR_Logout(lUserID);
     NET_DVR_Cleanup();
     return;
 }
 
 //---------------------------------------
 //Close preview
 NET_DVR_StopRealPlay(lRealPlayHandle);
 //Logout
 NET_DVR_Logout(lUserID);
 //Release SDK resource
 NET_DVR_Cleanup();

 return;
}
[/b]

[/color]

Para acceder a los equipos es necesario IP, usuario, contraseña y puerto.

lUserID = NET_DVR_Login_V30("192.0.0.64", 8000, "admin", "12345", &struDeviceInfo);


He llegado a probar copiando el código de ejemplo en un nuevo proyecto de C++ en Visual 2015 vacío (.cpp), después agregar las 4 librerías (La interesante para el preview es HCNetSDk.h) pero no salgo de ese punto... al compilar genera errores etc etc.

A ver si podéis echarme una mano chic@s.



Mod: Los códigos deben ir en etiquetas GeSHi

ivancea96