📄 lv20x0load.cpp
字号:
#include "windows.h"
int bLibraryLoaded = -1; // indicates that the library was not yet tried
HINSTANCE hDll = NULL;
#define TDYNLOAD(type,name) typedef type (WINAPI *name)
TDYNLOAD(DWORD, PLvCloseComm) ();
TDYNLOAD(DWORD, PLvOpenComm) (BYTE ucCommPort);
TDYNLOAD(DWORD, PLvOpenCommEx) (BYTE ucCommPort, int iSpeed);
TDYNLOAD(DWORD, PLvSendByteCmd) (BYTE ucSend1, BYTE ucSend2,
BYTE ucSend3, BYTE ucCameraID);
TDYNLOAD(DWORD, PLvSendByteCmdEx) (BYTE ucSend1, BYTE ucSend2,
BYTE ucSend3, BYTE ucCameraID,
BYTE* pucReturn1, BYTE* pucReturn2,
BYTE* pucReturn3, BYTE* pucReturn4);
TDYNLOAD(DWORD, PLvSendCmd) (DWORD dwCmd);
TDYNLOAD(DWORD, PLvSendCmdEx) (DWORD dwCmd,
BYTE* pucReturn1, BYTE* pucReturn2,
BYTE* pucReturn3, BYTE* pucReturn4);
TDYNLOAD(DWORD, PLvSendCmdWithStop) (DWORD dwCmd);
TDYNLOAD(void, PLv20x0ControlDlg) (int iCameraType, int iComPort, int iCameraId);
TDYNLOAD(void, PLv20x0ControlDlgEx)(int iCameraType, int iComPort, int iCameraId,
int iLeft, int iTop);
TDYNLOAD(DWORD, PLvGetFocusLensPos) (WORD* pwFocus, BYTE ucCameraID);
TDYNLOAD(DWORD, PLvGetZoomLensPos) (WORD * pwZoom, BYTE* pucDigiZoom,
BYTE ucCameraID);
TDYNLOAD(DWORD, PLvMemorizeZoom) (BYTE ucIndex, WORD wZoom,
BYTE ucCameraID);
TDYNLOAD(DWORD, PLvMemorizeFocus) (BYTE ucIndex, WORD wFocus,
BYTE ucCameraID);
TDYNLOAD(DWORD, PLvGetAutoExpAreaWeights) (BYTE* pucAreaWeight1,
BYTE* pucAreaWeight2,
BYTE ucCameraID);
TDYNLOAD(DWORD, PLvSetAutoExpAreaWeights) (BYTE ucAreaWeight1,
BYTE ucAreaWeight2,
BYTE CameraID);
TDYNLOAD(DWORD, PLvSetShutter) (BYTE ucShutter, BYTE ucCameraID);
TDYNLOAD(DWORD, PLvGetShutter) (BYTE* pucShutter, BYTE ucCameraID);
PLvCloseComm pLvCloseComm ;
PLvOpenComm pLvOpenComm ;
PLvOpenCommEx pLvOpenCommEx ;
PLvSendByteCmd pLvSendByteCmd ;
PLvSendByteCmdEx pLvSendByteCmdEx ;
PLvSendCmd pLvSendCmd ;
PLvSendCmdEx pLvSendCmdEx ;
PLvSendCmdWithStop pLvSendCmdWithStop ;
PLv20x0ControlDlg pLv20x0ControlDlg ;
PLv20x0ControlDlgEx pLv20x0ControlDlgEx ;
PLvGetFocusLensPos pLvGetFocusLensPos ;
PLvGetZoomLensPos pLvGetZoomLensPos ;
PLvMemorizeZoom pLvMemorizeZoom ;
PLvMemorizeFocus pLvMemorizeFocus ;
PLvGetAutoExpAreaWeights pLvGetAutoExpAreaWeights;
PLvSetAutoExpAreaWeights pLvSetAutoExpAreaWeights;
PLvSetShutter pLvSetShutter ;
PLvGetShutter pLvGetShutter ;
//-------------------------------------------------------------------
void LoadLv20x0DLL()
{
bLibraryLoaded = 0;
bool bSuccess = true;
hDll = LoadLibrary("LV20x0.DLL");
DWORD dwLastError = GetLastError();
if (hDll == NULL) return;
#define GetFn(Pfn,fn,fname) fn = (Pfn) GetProcAddress(hDll, fname); bSuccess = bSuccess && fn != NULL;
GetFn(PLvCloseComm , pLvCloseComm , "LvCloseComm");
GetFn(PLvOpenComm , pLvOpenComm , "LvOpenComm");
GetFn(PLvOpenCommEx , pLvOpenCommEx , "LvOpenCommEx");
GetFn(PLvSendByteCmd , pLvSendByteCmd , "LvSendByteCmd");
GetFn(PLvSendByteCmdEx , pLvSendByteCmdEx , "LvSendByteCmdEx");
GetFn(PLvSendCmd , pLvSendCmd , "LvSendCmd");
GetFn(PLvSendCmdEx , pLvSendCmdEx , "LvSendCmdEx");
GetFn(PLvSendCmdWithStop , pLvSendCmdWithStop , "LvSendCmdWithStop");
GetFn(PLv20x0ControlDlg , pLv20x0ControlDlg , "Lv20x0ControlDlg");
GetFn(PLv20x0ControlDlgEx , pLv20x0ControlDlgEx , "Lv20x0ControlDlgEx");
GetFn(PLvGetFocusLensPos , pLvGetFocusLensPos , "LvGetFocusLensPos");
GetFn(PLvGetZoomLensPos , pLvGetZoomLensPos , "LvGetZoomLensPos");
GetFn(PLvMemorizeZoom , pLvMemorizeZoom , "LvMemorizeZoom");
GetFn(PLvMemorizeFocus , pLvMemorizeFocus , "LvMemorizeFocus");
GetFn(PLvGetAutoExpAreaWeights , pLvGetAutoExpAreaWeights, "LvGetAutoExpAreaWeights");
GetFn(PLvSetAutoExpAreaWeights , pLvSetAutoExpAreaWeights, "LvSetAutoExpAreaWeights");
GetFn(PLvSetShutter , pLvSetShutter , "LvSetShutter");
GetFn(PLvGetShutter , pLvGetShutter , "LvGetShutter");
if (bSuccess)
bLibraryLoaded = 1;
else
bLibraryLoaded = 0;
}
//-------------------------------------------------------------------
void FreeLv20x0DLL()
{
if (hDll != NULL) FreeLibrary(hDll);
}
//-------------------------------------------------------------------
bool LibraryLoaded()
{
if (bLibraryLoaded == 0) return false;
if (bLibraryLoaded == 1) return true;
LoadLv20x0DLL();
if (bLibraryLoaded == 0) return false;
return true;
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvCloseComm ()
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvCloseComm();
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvOpenComm (BYTE ucCommPort)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvOpenComm (ucCommPort);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvOpenCommEx (BYTE ucCommPort, int iSpeed)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvOpenCommEx (ucCommPort, iSpeed);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSendByteCmd (BYTE ucSend1, BYTE ucSend2,
BYTE ucSend3, BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSendByteCmd (ucSend1, ucSend2, ucSend3, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSendByteCmdEx (BYTE ucSend1, BYTE ucSend2,
BYTE ucSend3, BYTE ucCameraID,
BYTE* pucReturn1, BYTE* pucReturn2,
BYTE* pucReturn3, BYTE* pucReturn4)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSendByteCmdEx (ucSend1, ucSend2, ucSend3, ucCameraID,
pucReturn1, pucReturn2, pucReturn3, pucReturn4);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSendCmd (DWORD dwCmd)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSendCmd (dwCmd);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSendCmdEx (DWORD dwCmd,
BYTE* pucReturn1, BYTE* pucReturn2,
BYTE* pucReturn3, BYTE* pucReturn4)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSendCmdEx (dwCmd, pucReturn1, pucReturn2, pucReturn3, pucReturn4);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSendCmdWithStop (DWORD dwCmd)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSendCmdWithStop (dwCmd);
}
//-------------------------------------------------------------------
extern "C" void WINAPI Lv20x0ControlDlg (int iCameraType, int iComPort, int iCameraId)
{
if (!LibraryLoaded()) return;
pLv20x0ControlDlg (iCameraType, iComPort, iCameraId);
}
//-------------------------------------------------------------------
extern "C" void WINAPI Lv20x0ControlDlgEx (int iCameraType, int iComPort, int iCameraId,
int iLeft, int iTop)
{
if (!LibraryLoaded()) return;
pLv20x0ControlDlgEx (iCameraType, iComPort, iCameraId, iLeft, iTop);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvGetFocusLensPos (WORD* pwFocus, BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvGetFocusLensPos (pwFocus, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvGetZoomLensPos (WORD * pwZoom, BYTE* pucDigiZoom,
BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvGetZoomLensPos (pwZoom, pucDigiZoom, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvMemorizeZoom (BYTE ucIndex, WORD wZoom,
BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvMemorizeZoom (ucIndex, wZoom, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvMemorizeFocus (BYTE ucIndex, WORD wFocus,
BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvMemorizeFocus (ucIndex, wFocus, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvGetAutoExpAreaWeights (BYTE* pucAreaWeight1,
BYTE* pucAreaWeight2,
BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvGetAutoExpAreaWeights (pucAreaWeight1, pucAreaWeight2, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSetAutoExpAreaWeights (BYTE ucAreaWeight1,
BYTE ucAreaWeight2,
BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSetAutoExpAreaWeights (ucAreaWeight1, ucAreaWeight2, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvSetShutter (BYTE ucShutter, BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvSetShutter (ucShutter, ucCameraID);
}
//-------------------------------------------------------------------
extern "C" DWORD WINAPI LvGetShutter (BYTE* pucShutter, BYTE ucCameraID)
{
if (!LibraryLoaded()) return ERROR_DLL_INIT_FAILED;
return pLvGetShutter (pucShutter, ucCameraID);
}
//-------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -