#ifndef RECIPE_MANAGER_H
|
#define RECIPE_MANAGER_H
|
|
#include <string>
|
#include <vector>
|
#include <map>
|
#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<std::pair<std::string, double>> 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<int, AxisInfo>& getAxes() const;
|
|
// »ñÈ¡µ¥¸öÖáÐÅÏ¢
|
AxisInfo getAxis(int axisId) const;
|
|
// ¸üÐÂÖáÐÅÏ¢
|
bool updateAxis(const AxisInfo& axisInfo);
|
|
// Ìí¼ÓеÄÖáÐÅÏ¢
|
bool addAxis(const AxisInfo& axisInfo);
|
|
// ɾ³ýÖáÐÅÏ¢
|
bool deleteAxis(int axisId);
|
|
// »ñÈ¡ËùÓÐÖáID
|
std::vector<int> getAllAxisID() const;
|
|
// »ñȡָ¶¨Ò³µÄ¶¨Î»µã
|
std::vector<std::pair<std::string, double>> getPositions(int axisId, int pageNumber, int pageSize) const;
|
|
private:
|
RecipeManager();
|
|
private:
|
std::string m_recipeFolder; // Åä·½Îļþ¼Ð·¾¶
|
std::map<int, AxisInfo> m_axes; // ÖáÐÅÏ¢»º´æ
|
};
|
|
#endif // RECIPE_MANAGER_H
|