#pragma once
#include <string>

class  ICard
{


public:
    /************************************************************************/
    //!构造函数
    /*!	构造函数完成了一系列初始化工作 \n
    2. 对每一块卡,初始化编码器方向,限位触发,安全处理等\n
    3. 对卡上的每一个轴,配置控制器,工作模式等\n
    4. 针对每一个轴生成一个轴对象\n
    5. 针对每一块卡成一个通用输入对象,一个通用输出对象
    \param strFileName  配置文件名,当前目录的文件名或全路径文件名
    */
    ICard(/*string strFileName=NULL*/){};
    //打开控制卡,包括OpenCard, ResetCard, 加载配置文件(建议都用这种方式,这种方式最简单)
    //加载配置文件:文件名称用默认的方式,比如GTSCardConfig
    virtual bool OpenCard() = 0;
    //关闭控制卡
    virtual bool CloseCard() = 0;

    /************************************************************************/
    //!析构函数
    /*!	析构函数完成了一系列清理工作 \n
    1. 释放各种对象对应的内存 \n
    2. 关闭每个轴的伺服\n
    3. 关闭卡\n
    */
    virtual ~ICard(){};


public:
 
    int m_nCardIndex = -1;
    bool m_bExtCard = false; //主卡还是扩展卡,true:主卡,false:扩展卡
    short m_nTotalAxisNum;
    std::string m_sCardLoad= "";


};