⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lv20x0load.cpp

📁 相机传输图像程序源代码 拜耳模式(RAW格式文件)与RGB图像数据互相转换函数库
💻 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 + -