模擬大華或海康相機的迴圈&&動態連結庫的形式實現&&回撥函式的使用
阿新 • • 發佈:2019-01-01
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.測試結果輸出
4.總結
由於專案需要,需要用大華或者海康IpCamare進行開發。
因為大華或者海康的IPCAMARE一旦上電,登入成功之後,就會一直進行迴圈底採集影象,對影象進行處理,將處理之後的結果存入資料庫等操作,並且需要寫成動態連結庫讓甲方呼叫。所以有了這篇部落格,進行模擬甲方的需要。