|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
#include "LaipuVbDllMgr.h"
|
|
|
|
|
#include "LogMgr.h"
|
|
|
|
|
#include "SinglechipCardMgr.h"
|
|
|
|
|
#include "Mirror.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLaipuVbDllMgr *gLaipuVbDllMgr = new CLaipuVbDllMgr;
|
|
|
|
|
CLaipuVbDllMgr::CLaipuVbDllMgr(void)
|
|
|
|
|
{
|
|
|
|
|
pMarkingScanCom = NULL;//<2F><><EFBFBD><EFBFBD>dll <20><><EFBFBD><EFBFBD>com <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
m_bIni = false;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>
|
|
|
|
|
}
|
|
|
|
|
CLaipuVbDllMgr::~CLaipuVbDllMgr(void)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
void CLaipuVbDllMgr::Ini()
|
|
|
|
|
{
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mark dll <20><>com <20><><EFBFBD><EFBFBD>------------------------------------------------------
|
|
|
|
|
HRESULT hresult;
|
|
|
|
|
CLSID cls_marking_scan_id;
|
|
|
|
|
CoInitialize(NULL);
|
|
|
|
|
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>
|
|
|
|
|
hresult=CLSIDFromProgID(OLESTR("marking_scan.marking_scan_dll"), &cls_marking_scan_id);
|
|
|
|
|
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CLSID
|
|
|
|
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC>CLSADO
|
|
|
|
|
/*<2A><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Com<6F><6D><EFBFBD><EFBFBD>
|
|
|
|
|
CoCreateInstance<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CLSID<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>128λ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD>ر<EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
|
|
|
|
<EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̻أ<EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD>ΪCLSCTX_INPROC_SERVER<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>DLL<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>Žӿڵ<EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>128λ<EFBFBD>ı<EFBFBD><EFBFBD>룻
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľӿ<EFBFBD>ָ<EFBFBD>롣*/
|
|
|
|
|
hresult=CoCreateInstance(cls_marking_scan_id,NULL,CLSCTX_INPROC_SERVER,__uuidof(_marking_scan_dll),(LPVOID *) &pMarkingScanCom);
|
|
|
|
|
if(FAILED(hresult))
|
|
|
|
|
{
|
|
|
|
|
gLogMgr->WriteDebugLog("mark dll <20><>com <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!",_LOG_ERROR);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_bIni = true;
|
|
|
|
|
gLogMgr->WriteDebugLog("mark dll <20><>com <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//ͨ<><CDA8>vb dll <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|
|
|
|
void CLaipuVbDllMgr::VbIniCard(short low,short High)
|
|
|
|
|
{
|
|
|
|
|
if(!m_bIni)
|
|
|
|
|
{
|
|
|
|
|
Ini();
|
|
|
|
|
}
|
|
|
|
|
gLogMgr->WriteDebugLog(_T("func : VbIniCard"));
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>SAFEARRAY
|
|
|
|
|
const int size = 5;
|
|
|
|
|
BYTE ComArr[size];//<2F>ѻ<EFBFBD><D1BB><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4>ں<EFBFBD>
|
|
|
|
|
for(int i=0;i<size;i++)
|
|
|
|
|
{
|
|
|
|
|
ComArr[i]=gSinglechipCardMgr->GetCardCom(i);
|
|
|
|
|
}
|
|
|
|
|
//ת<><D7AA>ΪSAFEARRAY <20><><EFBFBD><EFBFBD>----------------------------------------------
|
|
|
|
|
SAFEARRAY *psa;
|
|
|
|
|
SAFEARRAYBOUND rgsabound[1];
|
|
|
|
|
rgsabound[0].cElements = size;//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
|
|
|
|
rgsabound[0].lLbound = 0;
|
|
|
|
|
psa = SafeArrayCreate(VT_UI1,1,rgsabound);//VT_UI1 <20><>ʾBYTE <20><><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>SAFEARRAY
|
|
|
|
|
for(long index=0;index<size;index++)
|
|
|
|
|
{
|
|
|
|
|
if(FAILED(SafeArrayPutElement(psa,&index,&ComArr[index])))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
short card = 1;//<2F>ѻ<EFBFBD><D1BB><EFBFBD>1 , pci <20><>0
|
|
|
|
|
if(gMirror->IsUsePciCard())
|
|
|
|
|
{
|
|
|
|
|
gLogMgr->WriteDebugLog(_T("ʹ<EFBFBD><EFBFBD>pci <20><>"));
|
|
|
|
|
card = 0;
|
|
|
|
|
}
|
|
|
|
|
short LaserFlg = 0;//<2F>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>?
|
|
|
|
|
if(gMirror->IsLaserSwitch())
|
|
|
|
|
{
|
|
|
|
|
LaserFlg = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
short LaserType = (LASER_TYPE)gMirror->GetLaserType();
|
|
|
|
|
short MirrorIdx = 0;//<2F><>ʱֻ<CAB1><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
CString LogStr;
|
|
|
|
|
LogStr.Format(_T("[low] = [%d] ,[High] = [%d]"),low,High);
|
|
|
|
|
gLogMgr->WriteDebugLog(LogStr);
|
|
|
|
|
LogStr.Format(_T("[card] = [%d] ,[LaserType] = [%d]"),card,LaserType);
|
|
|
|
|
gLogMgr->WriteDebugLog(LogStr);
|
|
|
|
|
LogStr.Format(_T("[MirrorIdx] = [%d] ,[LaserFlg] = [%d]"),MirrorIdx,LaserFlg);
|
|
|
|
|
gLogMgr->WriteDebugLog(LogStr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
short ret = pMarkingScanCom->Marking_init_pci(
|
|
|
|
|
&low,//<2F><>8λ<38><CEBB><EFBFBD><EFBFBD><EFBFBD>˿ڳ<CBBF>ʼֵ
|
|
|
|
|
&High,//<2F><>8λ<38><CEBB><EFBFBD><EFBFBD><EFBFBD>˿ڳ<CBBF>ʼֵ
|
|
|
|
|
&card,
|
|
|
|
|
&LaserType,
|
|
|
|
|
&MirrorIdx,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ò<EFBFBD>ͬ<EFBFBD><CDAC>У<D0A3>ļ<EFBFBD>
|
|
|
|
|
&psa,
|
|
|
|
|
&LaserFlg
|
|
|
|
|
);
|
|
|
|
|
gLogMgr->WriteDebugLog("Marking_init_pci","ret",ret);
|
|
|
|
|
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY <20>ռ<EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡvb com <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
_marking_scan_dll *CLaipuVbDllMgr::GetCom()
|
|
|
|
|
{
|
|
|
|
|
return pMarkingScanCom;
|
|
|
|
|
}
|
|
|
|
|
void CLaipuVbDllMgr::MarkingStart()
|
|
|
|
|
{
|
|
|
|
|
gLogMgr->WriteDebugLog(_T("MarkingStart"));
|
|
|
|
|
pMarkingScanCom->marking_start();
|
|
|
|
|
}
|
|
|
|
|
void CLaipuVbDllMgr::MarkingStop()
|
|
|
|
|
{
|
|
|
|
|
gLogMgr->WriteDebugLog(_T("MarkingStop"));
|
|
|
|
|
pMarkingScanCom->Marking_stop();
|
|
|
|
|
}
|
|
|
|
|
void CLaipuVbDllMgr::CallMarkingEnd(long fileno,long fileAll,long MarkM,long m_sel,long head,SAFEARRAY * psa)
|
|
|
|
|
{
|
|
|
|
|
//gLogMgr->WriteDebugLog(_T("CallMarkingEnd"));
|
|
|
|
|
//test
|
|
|
|
|
pMarkingScanCom->Marking_end(&fileno,&fileAll,&MarkM,&m_sel,&head,&psa);
|
|
|
|
|
}
|
|
|
|
|
//DA <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>808 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ѹ)
|
|
|
|
|
//V <20>ǵ<EFBFBD>ѹֵ(<28><><EFBFBD><EFBFBD>10 V),XY = 0<><30>ʾX<CABE><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʾY<CABE><59><EFBFBD><EFBFBD>
|
|
|
|
|
void CLaipuVbDllMgr::Marking_DA(double V,short XY)
|
|
|
|
|
{
|
|
|
|
|
pMarkingScanCom->Marking_DA(&V,&XY);
|
|
|
|
|
}
|
|
|
|
|
#if 1
|
|
|
|
|
void CLaipuVbDllMgr::CallMarkingData(vector<vector<Dbxy>> &vec)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAFEARRAY *pSafeArr = CreatSafeArray(vec);
|
|
|
|
|
if(pSafeArr)
|
|
|
|
|
{
|
|
|
|
|
pMarkingScanCom->Marking_data(&pSafeArr);
|
|
|
|
|
SafeArrayDestroy(pSafeArr);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
|
|
|
|
|
int CLaipuVbDllMgr::CalElementsCnt(vector<vector<Dbxy>> &vec)
|
|
|
|
|
{
|
|
|
|
|
int ret = 0;
|
|
|
|
|
vector<vector<Dbxy>>::iterator iter = vec.begin();
|
|
|
|
|
vector<vector<Dbxy>>::iterator iter_end = vec.end();
|
|
|
|
|
for(;iter!=iter_end;iter++)
|
|
|
|
|
{
|
|
|
|
|
ret++;//<2F><>ǰ<EFBFBD>߶εĵ<CEB5><C4B5>ĸ<EFBFBD><C4B8><EFBFBD>
|
|
|
|
|
ret += (*iter).size()*2;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
ret++;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>λ
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
int CLaipuVbDllMgr::CalElementsCnt(vector<double> &vec)
|
|
|
|
|
{
|
|
|
|
|
int ret = vec.size()*3;
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>װSAFEARRAY <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>Ҫ<EFBFBD>ڵ<EFBFBD><DAB5>ú<EFBFBD><C3BA>ͷ<EFBFBD><CDB7><EFBFBD>Դ)
|
|
|
|
|
SAFEARRAY * CLaipuVbDllMgr::CreatSafeArray(vector<vector<Dbxy>> &vec)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>SAFEARRAY
|
|
|
|
|
SAFEARRAY *psa;
|
|
|
|
|
SAFEARRAYBOUND rgsabound[1];
|
|
|
|
|
rgsabound[0].cElements = CalElementsCnt(vec);//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
|
|
|
|
rgsabound[0].lLbound = 0;
|
|
|
|
|
psa = SafeArrayCreate(VT_R8,1,rgsabound);//VT_R8 <20><>ʾdouble <20><><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>SAFEARRAY
|
|
|
|
|
long idx = 0;
|
|
|
|
|
vector<vector<Dbxy>>::iterator iter = vec.begin();
|
|
|
|
|
vector<vector<Dbxy>>::iterator iter_end = vec.end();
|
|
|
|
|
for(;iter!=iter_end;iter++)
|
|
|
|
|
{
|
|
|
|
|
int size = (*iter).size();
|
|
|
|
|
if(size==0)
|
|
|
|
|
continue;
|
|
|
|
|
double Cnt = (double)size;
|
|
|
|
|
if(FAILED(SafeArrayPutElement(psa,&idx,&Cnt)))//<2F><>ǰ<EFBFBD>߶εĵ<CEB5><C4B5><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
idx++;
|
|
|
|
|
|
|
|
|
|
vector<Dbxy>::iterator iter1 = (*iter).begin();
|
|
|
|
|
vector<Dbxy>::iterator iter1_end = (*iter).end();
|
|
|
|
|
for(;iter1!=iter1_end;iter1++)
|
|
|
|
|
{
|
|
|
|
|
if(FAILED(SafeArrayPutElement(psa,&idx,&(*iter1).x)))//<2F><><EFBFBD>ݵ<EFBFBD>X <20><><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
idx++;
|
|
|
|
|
if(FAILED(SafeArrayPutElement(psa,&idx,&(*iter1).y)))//<2F><><EFBFBD>ݵ<EFBFBD>Y <20><><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
idx++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
double zero = 0;
|
|
|
|
|
if(FAILED(SafeArrayPutElement(psa,&idx,&zero)))//<2F><><EFBFBD><EFBFBD>λ
|
|
|
|
|
{
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
return psa;
|
|
|
|
|
}
|
|
|
|
|
SAFEARRAY * CLaipuVbDllMgr::CreatSafeArray(vector<double> &vec)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>SAFEARRAY
|
|
|
|
|
SAFEARRAY *psa;
|
|
|
|
|
SAFEARRAYBOUND rgsabound[1];
|
|
|
|
|
rgsabound[0].cElements = CalElementsCnt(vec);//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
|
|
|
|
rgsabound[0].lLbound = 0;
|
|
|
|
|
psa = SafeArrayCreate(VT_R8,1,rgsabound);//VT_R8 <20><>ʾdouble <20><><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>SAFEARRAY
|
|
|
|
|
long idx = 0;
|
|
|
|
|
vector<double>::iterator iter = vec.begin();
|
|
|
|
|
vector<double>::iterator iter_end = vec.end();
|
|
|
|
|
for(;iter!=iter_end;iter++)
|
|
|
|
|
{
|
|
|
|
|
if(FAILED(SafeArrayPutElement(psa,&idx,&(*iter))))
|
|
|
|
|
{
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
idx++;
|
|
|
|
|
}
|
|
|
|
|
return psa;
|
|
|
|
|
}
|
|
|
|
|
#endif
|