diff --git a/dll/iodllD.dll b/dll/iodllD.dll index 0bed1ed..9de34c0 100644 Binary files a/dll/iodllD.dll and b/dll/iodllD.dll differ diff --git a/dll/mcctrdllD.dll b/dll/mcctrdllD.dll index 417f951..a2b36bb 100644 Binary files a/dll/mcctrdllD.dll and b/dll/mcctrdllD.dll differ diff --git a/iodll/Include/InputControllerBase.h b/iodll/Include/InputControllerBase.h index 19376bc..6d566c4 100644 --- a/iodll/Include/InputControllerBase.h +++ b/iodll/Include/InputControllerBase.h @@ -14,7 +14,7 @@ class CInputBase; class CInputControllerBase : public CCard { public: - CInputControllerBase(std::string csMutexName); + CInputControllerBase(const std::string& csMutexName); virtual ~CInputControllerBase(); void RegisterInput(const CInputSetting& inputSetting, CInputBase* pInput); diff --git a/iodll/Include/MotionControllerBase.h b/iodll/Include/MotionControllerBase.h index 37fb30a..de4e156 100644 --- a/iodll/Include/MotionControllerBase.h +++ b/iodll/Include/MotionControllerBase.h @@ -17,15 +17,19 @@ protected: int m_CardType{ -1 }; int m_nNoOfCard{ 0 }; int m_index{ 0 }; - std::string m_szCardName{ "" }; + std::string m_strCardName{ "" }; + + std::vector m_vecInitializedCards; // keep track of initialized card ids handled by APS library public: CMotionControllerBase(int index, const std::string& pMutexName); virtual ~CMotionControllerBase(); - void SetCardInfo(int nCardType, const std::string& cardName); - int GetCardType() const; - std::string GetCardName() const; + void SetCardInfo(int nCardType, const std::string& cardName); + int GetCardType() const; + const std::string& GetCardName() const; + + std::vector GetInitializedCards() const; virtual BOOL Init(int& nNoOfMtr) = 0; virtual void Close(); diff --git a/iodll/Include/MotionControllerFactory.h b/iodll/Include/MotionControllerFactory.h index cf9e4c3..2b2e238 100644 --- a/iodll/Include/MotionControllerFactory.h +++ b/iodll/Include/MotionControllerFactory.h @@ -2,23 +2,24 @@ class CMotionControllerBase; class CMtrProfile; -#ifdef BUILD_IODLL -#define IODLLCLASS __declspec(dllexport) +#ifdef BUILD_IODLL +#define IODLLCLASS __declspec(dllexport) #else -#define IODLLCLASS __declspec(dllimport) +#define IODLLCLASS __declspec(dllimport) #endif class IODLLCLASS CAbstractMotionControllerFactory { private: - int m_cardType; - char *m_cardName; + int m_cardType{ -1 }; + std::string m_cardName; + public: - CAbstractMotionControllerFactory(int cardType, char* m_cardName); + CAbstractMotionControllerFactory(int cardType, const std::string& m_cardName); virtual ~CAbstractMotionControllerFactory(); - virtual CMotionControllerBase *CreateMotionController(int index) = 0; - int GetCardType(); - char * GetCardName(); + virtual CMotionControllerBase* CreateMotionController(int index) = 0; + int GetCardType() const; + const std::string& GetCardName() const; }; /** @@ -32,14 +33,15 @@ class IODLLCLASS CMotionControllerFactory { private: CMotionControllerFactory(void); + public: virtual ~CMotionControllerFactory(void); - static CMotionControllerFactory &Instance(); - void AddFactory(CAbstractMotionControllerFactory *pFactory); - void RemoveFactory(CAbstractMotionControllerFactory *pFactory); - CMotionControllerBase *CreateMotionController(int index, const char* cardName); - CMotionControllerBase *CreateMotionController(int index, int cardType); - int GetCardType(const char* cardName); + static CMotionControllerFactory& Instance(); + void AddFactory(CAbstractMotionControllerFactory* pFactory); + void RemoveFactory(CAbstractMotionControllerFactory* pFactory); + CMotionControllerBase* CreateMotionController(int index, const std::string& cardName); + CMotionControllerBase* CreateMotionController(int index, int cardType); + int GetCardType(const std::string& cardName); }; /** @@ -60,17 +62,17 @@ public: * @param MotionController_class The class of the MotionController that the factory creates. */ -#define REGISTER_MOTIONCONTROLLER_FACTORY(mType, name, MotionController_class) \ - class Factory ## MotionController_class : public CAbstractMotionControllerFactory \ - { \ - public: \ - Factory ## MotionController_class() : CAbstractMotionControllerFactory(mType, name){} \ - CMotionControllerBase *CreateMotionController(int index) \ - { \ - CMotionControllerBase *ptr = new MotionController_class(index); \ - ptr->SetCardInfo(mType, name); \ - return ptr; \ - } \ - }; \ - static Factory ## MotionController_class StaticFactory ## MotionController_class; \ - CAbstractMotionControllerFactory* GetFactory ## MotionController_class() { return &StaticFactory ## MotionController_class; } +#define REGISTER_MOTIONCONTROLLER_FACTORY(mType, name, MotionController_class) \ + class Factory##MotionController_class : public CAbstractMotionControllerFactory \ + { \ + public: \ + Factory##MotionController_class() : CAbstractMotionControllerFactory(mType, name) {} \ + CMotionControllerBase* CreateMotionController(int index) \ + { \ + CMotionControllerBase* ptr = new MotionController_class(index); \ + ptr->SetCardInfo(mType, name); \ + return ptr; \ + } \ + }; \ + static Factory##MotionController_class StaticFactory##MotionController_class; \ + CAbstractMotionControllerFactory* GetFactory##MotionController_class() { return &StaticFactory##MotionController_class; } diff --git a/iodll/Include/MotionController_ADLINK_APS.h b/iodll/Include/MotionController_ADLINK_APS.h index 36effed..3904134 100644 --- a/iodll/Include/MotionController_ADLINK_APS.h +++ b/iodll/Include/MotionController_ADLINK_APS.h @@ -25,6 +25,9 @@ public: void Close() override; private: + std::vector BitsToCardIds(int cardIDBits); + BOOL Init_7856(int nCardID, CHardwareCfgFactory& cfgFty, int nCfgMotionNumber, int nCfgCardNumber, int& nNoOfMtr); BOOL Init_ECAT(int nCardID, CHardwareCfgFactory& cfgFty, int nCfgMotionNumber, int nCfgCardNumber, int& nNoOfMtr); + }; diff --git a/iodll/Include/OutputControllerBase.h b/iodll/Include/OutputControllerBase.h index ff2f3d2..675c6af 100644 --- a/iodll/Include/OutputControllerBase.h +++ b/iodll/Include/OutputControllerBase.h @@ -13,7 +13,7 @@ class COutputBase; class COutputControllerBase : public CCard { public: - COutputControllerBase(std::string csMutexName); + COutputControllerBase(const std::string& csMutexName); virtual ~COutputControllerBase(); void RegisterOutput(const COutputSetting& outputSetting, COutputBase* pOutput); diff --git a/iodll/lib/iodllD.lib b/iodll/lib/iodllD.lib index ec3ed6c..aaaebef 100644 Binary files a/iodll/lib/iodllD.lib and b/iodll/lib/iodllD.lib differ