#ifndef RECIPE_MANAGER_H #define RECIPE_MANAGER_H #include #include #include #include "pugixml.hpp" // ÖáÐÅÏ¢½á¹¹Ìå struct AxisInfo { int id; // ÖáID std::string number; // Öá±àºÅ std::string description; // ÖáÃèÊö std::string startAddress; // ÆðʼµØÖ· double jogDistance; // ΢¶¯Á¿ double manualSpeed; // ÊÖ¶¯ËÙ¶È double autoSpeed; // ×Ô¶¯ËÙ¶È double accelerationTime; // ¼ÓËÙʱ¼ä double decelerationTime; // ¼õËÙʱ¼ä std::vector> positions; // ¶¨Î»µã£ºÃèÊöºÍλÖà }; // Åä·½¹ÜÀíÀà class RecipeManager { public: // µ¥Àýģʽ»ñȡʵÀý static RecipeManager& getInstance(); // ÉèÖÃÅä·½Îļþ¼Ð·¾¶ void setRecipeFolder(const std::string& folderPath); // ¼ÓÔØÅä·½£¨Îļþ²»´æÔÚʱ¼ÓÔØÄ¬ÈÏÊý¾Ý£© bool loadRecipe(const std::string& recipeName); // ±£´æÅä·½ bool saveRecipe(const std::string& recipeName); // Éú³ÉĬÈÏÅä·½ void generateDefaultRecipe(); // »ñÈ¡ËùÓÐÖáÐÅÏ¢ const std::map& getAxes() const; // »ñÈ¡µ¥¸öÖáÐÅÏ¢ AxisInfo getAxis(int axisId) const; // ¸üÐÂÖáÐÅÏ¢ bool updateAxis(const AxisInfo& axisInfo); // Ìí¼ÓеÄÖáÐÅÏ¢ bool addAxis(const AxisInfo& axisInfo); // ɾ³ýÖáÐÅÏ¢ bool deleteAxis(int axisId); // »ñÈ¡ËùÓÐÖáID std::vector getAllAxisID() const; // »ñȡָ¶¨Ò³µÄ¶¨Î»µã std::vector> getPositions(int axisId, int pageNumber, int pageSize) const; private: RecipeManager(); private: std::string m_recipeFolder; // Åä·½Îļþ¼Ð·¾¶ std::map m_axes; // ÖáÐÅÏ¢»º´æ }; #endif // RECIPE_MANAGER_H