/** * @file photo_interrupter.h * @brief 光电限位开关类头文件 * * 该类用于处理光电限位开关的触发事件,支持起始位置和结束位置的检测。 * 通过回调函数机制,当限位开关被触发时执行相应的处理逻辑。 */ #ifndef PHOTO_INTERRUPTER_H #define PHOTO_INTERRUPTER_H #include "io_expansion_board.h" #include /** * @class PhotoInterrupter * @brief 光电限位开关类 * * 提供限位开关的初始化、中断处理和回调函数管理功能。 * 支持起始位置和结束位置两个限位开关的检测。 */ class PhotoInterrupter { public: /** * @brief 构造函数 * * 初始化PhotoInterrupter对象,设置默认状态 */ PhotoInterrupter(); /** * @brief 析构函数 * * 清理资源,释放分配的内存 */ ~PhotoInterrupter(); /** * @brief 初始化限位开关 * * 执行限位开关的初始化操作,包括设置默认回调函数 */ void Init(); /** * @brief 处理限位开关中断 * * 当限位开关被触发时调用的中断处理函数 */ void Interrupt(); /** * @brief 设置起始限位开关触发回调函数 * @param callback 回调函数对象,当起始限位开关被触发时执行 * * 允许用户自定义起始限位开关被触发时的处理逻辑 */ void OnStartTrigger(std::function callback); /** * @brief 设置结束限位开关触发回调函数 * @param callback 回调函数对象,当结束限位开关被触发时执行 * * 允许用户自定义结束限位开关被触发时的处理逻辑 */ void OnEndTrigger(std::function callback); /** * @brief 触发起始限位开关回调 * * 当检测到起始限位开关被触发时,执行注册的回调函数 */ void TriggerStartCallback(); /** * @brief 触发结束限位开关回调 * * 当检测到结束限位开关被触发时,执行注册的回调函数 */ void TriggerEndCallback(); private: std::function on_start_trigger_; ///< 起始限位开关回调函数 std::function on_end_trigger_; ///< 结束限位开关回调函数 }; #endif // PHOTO_INTERRUPTER_H