From 62a4a8db6c05c98f180ae7f6429a9a232fce6c0c Mon Sep 17 00:00:00 2001 From: mrDarker <mr.darker@163.com> Date: 星期四, 03 七月 2025 17:19:16 +0800 Subject: [PATCH] 1. 重构机器人动画逻辑,采用分帧动画机制,避免在 OnTimer 中阻塞主线程; 2. 动画过程中允许动态中断,确保设备状态变化时可即时响应; 3. 动画结束时自动校正位置与角度,确保最终状态准确一致; --- SourceCode/Bond/Servo/CPageGraph1.h | 31 +++++++++++++++++++++++++++++-- 1 files changed, 29 insertions(+), 2 deletions(-) diff --git a/SourceCode/Bond/Servo/CPageGraph1.h b/SourceCode/Bond/Servo/CPageGraph1.h index f891489..ffd2aeb 100644 --- a/SourceCode/Bond/Servo/CPageGraph1.h +++ b/SourceCode/Bond/Servo/CPageGraph1.h @@ -34,6 +34,7 @@ void RotateRobot(float angleInDegrees); void BindEquipmentToGraph(); void MoveRobotToPosition(SERVO::ROBOT_POSITION position); + void StartRobotMoveToPosition(SERVO::ROBOT_POSITION position); POINT LoadArmOffset(const std::string& armName); void SaveArmOffset(const std::string& armName, const POINT& pt); @@ -43,10 +44,36 @@ BOOL m_bIsRobotMoving; COLORREF m_crBkgnd; HBRUSH m_hbrBkgnd; + + // ===== 鏈哄櫒浜哄姩鐢荤浉鍏虫垚鍛樺彉閲� ===== + + // 鍔ㄧ敾鐩爣浣嶇疆锛堟満鍣ㄤ汉鐩爣浣嶇疆鏋氫妇锛� + SERVO::ROBOT_POSITION m_targetRobotPosition; + + // 鍔ㄧ敾璧峰鍜岀洰鏍� X 鍧愭爣锛堟按骞充綅绉伙級 + int m_nRobotMoveStartX; + int m_nRobotMoveEndX; + + // 鍔ㄧ敾姝ユ暟鎺у埗锛堟�绘鏁� & 褰撳墠姝ワ級 + int m_nRobotMoveSteps; // 鍔ㄧ敾鎬绘鏁帮紙鎺у埗鍔ㄧ敾閫熷害锛� + int m_nRobotMoveCurrentStep; // 褰撳墠鍔ㄧ敾姝ユ暟杩涘害 + + // 鍔ㄧ敾璧峰鍜岀洰鏍囪搴︼紙鏃嬭浆瑙掑害锛屽崟浣嶏細搴︼級 + float m_nRobotMoveStartAngle; // 璧峰瑙掑害 + float m_nRobotMoveEndAngle; // 鐩爣瑙掑害锛堟棆杞搴︼級 + + // ===== 鏈哄櫒浜虹姸鎬佺浉鍏虫垚鍛樺彉閲� ===== + + // 涓婁竴娆″凡瀹屾垚鐨勪綅缃紙鐢ㄤ簬鍒ゆ柇鏄惁闇�瑕佺Щ鍔級 SERVO::ROBOT_POSITION m_lastRobotPosition; + + // 涓婁竴娆″凡鏇存柊鐨勬満鍣ㄤ汉 ARM 鍗犵敤鐘舵�侊紙涓や釜鏈烘鑷傦級 BOOL m_lastArmState[2]; - POINT m_arm1Offset; // ARM1 浠庝腑蹇冨悜宸�47, 鍚戜笂33 - POINT m_arm2Offset; // ARM2 浠庝腑蹇冨悜鍙�10, 鍚戜笂33 + + // 涓や釜鏈烘鑷傜浉瀵逛簬鏈哄櫒浜轰腑蹇冪殑鍋忕Щ锛堝儚绱犲潗鏍囷級 + POINT m_arm1Offset; + POINT m_arm2Offset; + // 瀵硅瘽妗嗘暟鎹� #ifdef AFX_DESIGN_TIME -- Gitblit v1.9.3