#include "StdAfx.h" #include #include #include "..\Keyence\LkIF.h" #include "So7_Interface.h " #define MAX_STORAGE_DATA_SIZE 65536 CSo7_Interface::CSo7_Interface() { m_bIsStorage=FALSE; m_iSetOutNo=0; m_StoredDataNumber=0; m_NeedStorageDataNumber=0; } CSo7_Interface::~CSo7_Interface() { FreeLibrary(m_hImageDLL); } //======================================== void CSo7_Interface::KeyenceLaserInit(void) { m_hImageDLL=LoadLibrary(_T("Image.dll")); if(m_hImageDLL) { m_pGetCalcData=(pLKIF_GetCalcData)GetProcAddress(m_hImageDLL,"LKIF_GetCalcData"); m_pDataStorageStart=(pLKIF_DataStorageStart)GetProcAddress(m_hImageDLL,"LKIF_DataStorageStart"); m_pDataStorageStop=(pLKIF_DataStorageStop)GetProcAddress(m_hImageDLL,"LKIF_DataStorageStop"); m_pDataStorageInit=(pLKIF_DataStorageInit)GetProcAddress(m_hImageDLL,"LKIF_DataStorageInit"); m_pDataStorageGetData=(pLKIF_DataStorageGetData)GetProcAddress(m_hImageDLL,"LKIF_DataStorageGetData"); m_pDataStorageGetStatus=(pLKIF_DataStorageGetStatus)GetProcAddress(m_hImageDLL,"LKIF_DataStorageGetStatus"); m_pSetDataStorage=(pLKIF_SetDataStorage)GetProcAddress(m_hImageDLL,"LKIF_SetDataStorage"); } } //============================================== void CSo7_Interface::Get_KeyenceLaserData(float *LaserValue1,float *LaserValue2) { *LaserValue1=10; *LaserValue2=10; LKIF_FLOATVALUE GetVal1,GetVal2; if(m_pGetCalcData(&GetVal1,&GetVal2)!=1) { return ; } switch(GetVal1.FloatResult) { case LKIF_FLOATRESULT_RANGEOVER_P: { *LaserValue1=50; break; } case LKIF_FLOATRESULT_RANGEOVER_N: { *LaserValue1=-50; break; } case LKIF_FLOATRESULT_WAITING: { *LaserValue1=0; break; } default: { *LaserValue1=GetVal1.Value; break; } } switch(GetVal2.FloatResult) { case LKIF_FLOATRESULT_RANGEOVER_P: { *LaserValue2=50; break; } case LKIF_FLOATRESULT_RANGEOVER_N: { *LaserValue2=-50; break; } case LKIF_FLOATRESULT_WAITING: { *LaserValue2=0; break; } default: { *LaserValue2=GetVal2.Value; break; } } } //============================================== BOOL CSo7_Interface::StartStoreData(int _NeedStorageDataNumber,int _SampleTime) { BOOL bStatus(FALSE); GetStoreDataStatus(); if (!m_bIsStorage) { bStatus=m_pDataStorageInit(); if (_NeedStorageDataNumber<1) { _NeedStorageDataNumber=1; } else if (_NeedStorageDataNumber>65536) { _NeedStorageDataNumber=65536; } m_NeedStorageDataNumber=_NeedStorageDataNumber; if (_SampleTime<0.4) { m_StorageCycle=LKIF_STORAGECYCLE_1; } else if (_SampleTime<1) { m_StorageCycle=LKIF_STORAGECYCLE_2; } else if (_SampleTime<2) { m_StorageCycle=LKIF_STORAGECYCLE_5; } else if (_SampleTime<4) { m_StorageCycle=LKIF_STORAGECYCLE_10; } else if (_SampleTime<10) { m_StorageCycle=LKIF_STORAGECYCLE_20; } else if (_SampleTime<20) { m_StorageCycle=LKIF_STORAGECYCLE_50; } else if (_SampleTime<40) { m_StorageCycle=LKIF_STORAGECYCLE_100; } else if (_SampleTime<100) { m_StorageCycle=LKIF_STORAGECYCLE_200; } else if (_SampleTime<200) { m_StorageCycle=LKIF_STORAGECYCLE_500; } else { m_StorageCycle=LKIF_STORAGECYCLE_1000; } bStatus=m_pSetDataStorage(LKIF_TARGETOUT_OUT1,m_NeedStorageDataNumber,m_StorageCycle); if (bStatus) { bStatus=m_pDataStorageStart(); } } return bStatus; }; //============================================== BOOL CSo7_Interface::StopStoreData() { BOOL bStatus(FALSE); GetStoreDataStatus(); if (m_bIsStorage) { bStatus=m_pDataStorageStop(); } return bStatus; }; //============================================== BOOL CSo7_Interface::PauseScanAndGetData(float *GetStorageData,int *GetStorageNumber) { BOOL bStatus(FALSE); GetStoreDataStatus(); if (m_bIsStorage) { bStatus=m_pDataStorageStop(); bStatus=GetStoredData(GetStorageData,GetStorageNumber); bStatus=m_pDataStorageStart(); } else { bStatus=GetStoredData(GetStorageData,GetStorageNumber); } return bStatus; }; //============================================== BOOL CSo7_Interface::GetStoredData(float *GetStorageData,int *GetStorageNumber) { BOOL bStatus(FALSE); GetStoreDataStatus(); if (!m_bIsStorage) { LKIF_FLOATVALUE GetStorageValue[MAX_STORAGE_DATA_SIZE]; bStatus=m_pDataStorageGetData(m_iSetOutNo,m_StoredDataNumber,GetStorageValue,GetStorageNumber); for(int i=0;i<*GetStorageNumber;i++) { switch(GetStorageValue[i].FloatResult) { case LKIF_FLOATRESULT_RANGEOVER_P: { *GetStorageData++=50; break; } case LKIF_FLOATRESULT_RANGEOVER_N: { *GetStorageData++=-50; break; } case LKIF_FLOATRESULT_WAITING: { *GetStorageData++=0; break; } default: { *GetStorageData++=GetStorageValue[i].Value; break; } } } } return bStatus; }; //============================================== BOOL CSo7_Interface::GetStoreDataStatus() { BOOL bStatus(FALSE); bStatus=m_pDataStorageGetStatus(m_iSetOutNo,&m_bIsStorage,&m_StoredDataNumber); return bStatus; };