|
|
|
|
|
//#include "StdAfx.h"
|
|
|
|
|
|
#include "LaipuVbDllMgr.h"
|
|
|
|
|
|
//#include "LogMgr.h"
|
|
|
|
|
|
//#include "SinglechipCardMgr.h"
|
|
|
|
|
|
//#include "Mirror.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLaipuVbDllMgr *gLaipuVbDllMgr = new CLaipuVbDllMgr;
|
|
|
|
|
|
bool CLaipuVbDllMgr::m_zIsInitOk = false;
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>̳߳<DFB3>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CoInitialize(NULL);
|
|
|
|
|
|
//<2F><><EFBFBD>̳߳<DFB3>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<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))
|
|
|
|
|
|
{
|
|
|
|
|
|
LaserLogger::GetInstance()->WriteLog(0, "mark dll com is error");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bIni = true;
|
|
|
|
|
|
LaserLogger::GetInstance()->WriteLog(0, "mark dll com is ok");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//ͨ<><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 = 5;//<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 < 5; index++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (FAILED(SafeArrayPutElement(psa, &index, &ComArr[index])))
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
short card = 0;//<2F>ѻ<EFBFBD><D1BB><EFBFBD>1 , pci <20><>0
|
|
|
|
|
|
short LaserFlg = 0;//<2F>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>?
|
|
|
|
|
|
|
|
|
|
|
|
/*if(gMirror->IsLaserSwitch())
|
|
|
|
|
|
{
|
|
|
|
|
|
LaserFlg = 1;
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
short LaserType = _FIBER;
|
|
|
|
|
|
short MirrorIdx = 0;//<2F><>ʱֻ<CAB1><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
short ret = 0;
|
|
|
|
|
|
//low = 1L << 7;
|
|
|
|
|
|
//High = 1L << 7;
|
|
|
|
|
|
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
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
LaserLogger::GetInstance()->WriteLog(0, "Marking_init_pci is " + ret);
|
|
|
|
|
|
|
|
|
|
|
|
SafeArrayDestroy(psa);//<2F>ͷ<EFBFBD>SAFEARRAY <20>ռ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
/*if (false == CLaipuVbDllMgr::m_zIsInitOk)
|
|
|
|
|
|
{
|
|
|
|
|
|
pMarkingScanCom->Marking_init_Z();
|
|
|
|
|
|
CLaipuVbDllMgr::m_zIsInitOk = true;
|
|
|
|
|
|
}*/
|
|
|
|
|
|
}
|
|
|
|
|
|
//<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);
|
|
|
|
|
|
}
|
|
|
|
|
|
#if 1
|
|
|
|
|
|
void CLaipuVbDllMgr::CallMarkingData(vector<vector<Dbxy2>> &vec)
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFEARRAY *pSafeArr = CreatSafeArray(vec);
|
|
|
|
|
|
if(pSafeArr)
|
|
|
|
|
|
{
|
|
|
|
|
|
//TODO:<3A><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̶<EFBFBD>ֵ
|
|
|
|
|
|
pMarkingScanCom->Marking_data(&pSafeArr , 60);
|
|
|
|
|
|
SafeArrayDestroy(pSafeArr);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CLaipuVbDllMgr::CallMarkingDataInSemi(vector<vector<Dbxy2>> &vec)
|
|
|
|
|
|
{
|
|
|
|
|
|
int vecCnt = vec.size();
|
|
|
|
|
|
vector<double> NewVec;
|
|
|
|
|
|
NewVec.push_back(vecCnt);//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
for (auto const & LineVec : vec)
|
|
|
|
|
|
{
|
|
|
|
|
|
Dbxy2 FirstPt = LineVec[0];
|
|
|
|
|
|
double SumX = FirstPt.x;
|
|
|
|
|
|
double SumY = FirstPt.y;
|
|
|
|
|
|
int PtCnt = 1;
|
|
|
|
|
|
for (auto const & pt : LineVec)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pt == FirstPt)
|
|
|
|
|
|
continue;
|
|
|
|
|
|
PtCnt++;
|
|
|
|
|
|
SumX += pt.x;
|
|
|
|
|
|
SumY += pt.y;
|
|
|
|
|
|
}
|
|
|
|
|
|
NewVec.emplace_back(SumX / PtCnt);
|
|
|
|
|
|
NewVec.emplace_back(SumY / PtCnt);
|
|
|
|
|
|
}
|
|
|
|
|
|
NewVec.push_back(0);//<2F><><EFBFBD><EFBFBD>λ
|
|
|
|
|
|
|
|
|
|
|
|
SAFEARRAY *pSafeArr = CreatSafeArrayD(NewVec);
|
|
|
|
|
|
if (pSafeArr)
|
|
|
|
|
|
{
|
|
|
|
|
|
//gLogMgr->WriteDebugLog("Func : pMarkingScanCom->Marking_data");
|
|
|
|
|
|
//pMarkingScanCom->Marking_Points(&pSafeArr, gProgramCspMarkMgr->GetPulseHoldTime(), gProgramCspMarkMgr->GetFirstPulseDelay()); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//TODO:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>
|
|
|
|
|
|
pMarkingScanCom->Marking_Points(&pSafeArr, 20/*m_pauseDelay*/,0/*m_pauseFirstDelay*/);
|
|
|
|
|
|
SafeArrayDestroy(pSafeArr);//<2F>ͷ<EFBFBD>SAFEARRAY
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
|
|
|
|
|
|
int CLaipuVbDllMgr::CalElementsCnt(vector<vector<Dbxy2>> &vec)
|
|
|
|
|
|
{
|
|
|
|
|
|
int ret = 0;
|
|
|
|
|
|
vector<vector<Dbxy2>>::iterator iter = vec.begin();
|
|
|
|
|
|
vector<vector<Dbxy2>>::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<Dbxy2>> &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<Dbxy2>>::iterator iter = vec.begin();
|
|
|
|
|
|
vector<vector<Dbxy2>>::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<Dbxy2>::iterator iter1 = (*iter).begin();
|
|
|
|
|
|
vector<Dbxy2>::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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SAFEARRAY * CLaipuVbDllMgr::CreatSafeArrayD(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
|