1. 程式人生 > >模擬大華或海康相機的迴圈&&動態連結庫的形式實現&&回撥函式的使用

模擬大華或海康相機的迴圈&&動態連結庫的形式實現&&回撥函式的使用

1.動態連結庫封裝函式

  • Dll的cpp檔案
#include <iostream>
#include <windows.h>
using namespace std;
long lLogin_Temp;
long lLogin;
unsigned long Login_Init(char* Cam_Ip, unsigned long Cam_Port, char*Cam_User, char* Cam_Password)
{
     lLogin_Temp = 100;
     return lLogin_Temp;
}
unsigned long Cam_Init(char
* Cam_Ip, unsigned long Cam_Port, char*Cam_User, char* Cam_Password) { lLogin = Login_Init(Cam_Ip, Cam_Port, Cam_User, Cam_Password); return lLogin; } int Fun1(int b) { cout << "寫資料庫成功。。。...寫入的資料為:" <<b<< endl; return 0; } void InDoorProc(int a, int(*Fun)(int b)) //模擬對相機影象幀的處理過程 int a代表Mat Img
//int(*Fun)(int b) 模擬處理之後對結果的操作,這裡對結果進行的操作是存入資料庫 { if (a > 0) { cout << "a是大於0的,此時寫資料庫!!!!" << endl; //Fun = Fun1; Fun(a); } else cout << "a不大於0,此時不進行寫資料庫!!!!" << endl; } int Cam_Loop(long lLogin, void (*InDoorProc1)(int a, int(*Fun)(int
b))) //模擬相機的迴圈 相機上電 登入成功之後 , //就一直在進行相應的處理(採集影象 對影象進行處理 將處理結果的存入資料庫等過程) { int(*Fun)(int b); if (lLogin == 100) while (1) { int a = 50; for (a = 50; a > -50; a--) { Fun = Fun1; InDoorProc1(a, Fun); Sleep(1000); } } else { cout << "登入失敗!請重登入......." << endl; } return 0; }
  • dll中的def檔案
LIBRARY Dll2

EXPORTS
Cam_Init
lLogin
InDoorProc
Fun1
Cam_Loop

2.測試程式碼TestDll

#include <iostream>
using namespace std;
#pragma comment(lib,"Dll2.lib")
_declspec(dllexport) unsigned long Cam_Init(char* Cam_Ip, unsigned long Cam_Port, char*Cam_User, char* Cam_Password);
_declspec(dllexport) int Fun1(int b);
_declspec(dllexport) void InDoorProc(int a, int(*Fun)(int b));
_declspec(dllexport) int Cam_Loop(long lLogin, void(*InDoorProc1)(int a, int(*Fun)(int b)));
_declspec(dllexport) long lLogin;
int main()
{
    char* Cam_Ip = "192.168.1.107";
    unsigned long Cam_Port = 37777;
    char* Cam_User = "admin";
    char* Cam_Password = "admin";
    lLogin = Cam_Init(Cam_Ip, Cam_Port, Cam_User,Cam_Password);
    Cam_Loop(lLogin, InDoorProc);
    system("pause");
    return 0;
}

3.測試結果輸出

圖片2

這裡寫圖片描述

4.總結

由於專案需要,需要用大華或者海康IpCamare進行開發。
因為大華或者海康的IPCAMARE一旦上電,登入成功之後,就會一直進行迴圈底採集影象,對影象進行處理,將處理之後的結果存入資料庫等操作,並且需要寫成動態連結庫讓甲方呼叫。所以有了這篇部落格,進行模擬甲方的需要。