| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- using Cognex.VisionPro;
- using Cognex.VisionPro.ToolBlock;
- using System;
- using System.Collections.Generic;
- using System.Threading;
- using System.Threading.Tasks;
- using Team.FFFeederService.Interfaces;
- using TeamAAS_VP.Models;
- using TeamAAS_VP.Models.Feeder;
- namespace TeamAAS_VP.Interfaces
- {
- public interface IRemoteCommandService : IDisposable
- {
- /// <summary>
- /// 是否正在执行命令
- /// </summary>
- bool IsExecuting { get; }
- /// <summary>
- /// 是否正在执行视觉命令
- /// </summary>
- bool IsExecutingVisionCommand { get; }
- /// <summary>
- /// 计时器计时通知事件
- /// </summary>
- event EventHandler<TimeSpan> CycleTimingTicked;
- /// <summary>
- /// Execute a remote command string
- /// </summary>
- /// <param name="command"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="callback"></param>
- /// <returns></returns>
- Task ExecuteAsync(string command, CancellationToken cancellationToken, Action<string> callback);
- /// <summary>
- /// 加载产品
- /// </summary>
- /// <param name="productName"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> LoadProductAsync(string productName, CancellationToken cancellationToken);
- /// <summary>
- /// 通过产品编号获取产品名称
- /// </summary>
- /// <param name="productNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetProductNameByNumberAsync(int productNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 通过产品名称获取产品编号
- /// </summary>
- /// <param name="productName"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<int> GetProductNumberByNameAsync(string productName, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品名称
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetCurrentProductNameAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品编号
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<int> GetCurrentProductNumberAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 通过机器人编号和点位编号获取机器人点位信息
- /// </summary>
- /// <param name="robotNumber"></param>
- /// <param name="pointNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetRobotPointInfoAsync(int robotNumber, int pointNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 通过机器人编号和托盘编号、点编号获取机器人托盘点位信息
- /// </summary>
- /// <param name="robotNumber">机器人编号</param>
- /// <param name="palletNumber">托盘编号</param>
- /// <param name="pointNumber">点编号</param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetRobotPalletPointInfoAsync(int robotNumber, int palletNumber, int pointNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 开始节拍计时
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> StartCycleTimingAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 停止节拍计时
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> StopCycleTimingAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 创建一条生产计数,传入计数项
- /// </summary>
- /// <param name="countItem"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> CreateProductionCountAsync(string countItem, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前生产计数
- /// </summary>
- /// <param name="countItem"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<int> GetCurrentProductionCountAsync(string countItem, CancellationToken cancellationToken);
- /// <summary>
- /// 重置生产计数
- /// </summary>
- /// <param name="countItem"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> ResetProductionCountAsync(string countItem, CancellationToken cancellationToken);
- /// <summary>
- /// 创建一条报警记录
- /// </summary>
- /// <param name="alarmCode"></param>
- /// <param name="alarmDescription"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> CreateAlarmRecordAsync(string alarmCode, string alarmDescription, CancellationToken cancellationToken);
- /// <summary>
- /// 创建一条运行信息记录
- /// </summary>
- /// <param name="logMessage"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> CreateOperationLogAsync(string logMessage, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品指定编号的全局参数
- /// </summary>
- /// <param name="parameterNumber"></param>
- /// <param name="itemIndex"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetGlobalParameterAsync(int parameterNumber, int itemIndex, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品的运行速度
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetOperationSpeedAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 获取末端工具信息,传入流程触发命令和工具编号
- /// </summary>
- /// <param name="triggerCommand"></param>
- /// <param name="toolNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetToolParamAsync(string triggerCommand, int toolNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 获取流程参数信息,传入流程触发命令
- /// </summary>
- /// <param name="triggerCommand"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetProcessParamAsync(string triggerCommand, CancellationToken cancellationToken);
- /// <summary>
- /// 执行清料任务
- /// </summary>
- /// <param name="taskNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> ExecuteClearMaterialTaskAsync(int taskNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 终止清料任务
- /// </summary>
- /// <param name="taskNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> StopClearMaterialTaskAsync(int taskNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 获取机器人是否进入调试模式
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> IsRobotInDebugModeAsync(int robotNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 执行视觉任务
- /// </summary>
- /// <param name="procedure">流程</param>
- /// <param name="items">是否先振动</param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string[] Response)> ExecuteVisionTaskAsync(ProcedureModel procedure, string[] items, CancellationToken cancellationToken, ImageParameters imgPara);
- /// <summary>
- /// 执行Feeder视觉引导任务
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="procedure"></param>
- /// <param name="items"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string[] Response)> ExecuteFeederVisionTaskAsync(IVoiceCoilMotorFeeder feeder, ProcedureModel procedure, string[] items, CancellationToken cancellationToken, ImageParameters imgPara);
- /// <summary>
- /// 执行普通视觉任务
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="items"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string Response)> ExecuteNormalVisionTaskAsync(ProcedureModel procedure, string[] items, CancellationToken cancellationToken, ImageParameters imgPara);
- /// <summary>
- /// 执行相机拍照
- /// </summary>
- /// <param name="index"></param>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="outputCollection"></param>
- /// <returns></returns>
- bool ExecutePhoto(int index, ProcedureModel procedure, Dictionary<string, string> InputTerminal, out CogToolBlockTerminalCollection outputCollection, ImageParameters imgPara,int ScrewNum=1);
- /// <summary>
- /// 执行拍照二维码流程运行
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="outputCollection"></param>
- /// <returns></returns>
- bool ExecutePhoto(int index, ProcedureModel procedure, out CogToolBlockTerminalCollection outputCollection);
- /// <summary>
- /// 执行相机拍照获取单个点位结果
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="positionIndex"></param>
- /// <param name="remark"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, double X, double Y, double U)> ExecutePhotoGetSinglePoint(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken, int positionIndex, string remark, ImageParameters imgPara);
- /// <summary>
- /// 执行相机拍照获取单个点位结果,并且返回图像和图形
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, double X, double Y, double U, ICogImage Image, CogGraphicCollection Graphic)> ExecutePhotoGetSinglePointWithImage(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken);
- /// <summary>
- /// 获取需要输出项
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="outputCollection"></param>
- /// <param name="robotPos"></param>
- /// <returns></returns>
- (bool IsSucceed, string ErrMsg, Dictionary<string, (bool IsPoint, object Value)> Output) GetVisionOutput(ProcedureModel procedure, CogToolBlockTerminalCollection outputCollection, double[] robotPos);
- /// <summary>
- /// Feeder拍照前,执行Feeder
- /// </summary>
- /// <param name="Feeder"></param>
- /// <param name="procedure"></param>
- /// <param name="doVibrateFirst"></param>
- /// <param name="doCaptureFirst"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task ExecuteFeederForPhotoBefore(IVoiceCoilMotorFeeder Feeder, ProcedureModel procedure, bool doVibrateFirst, bool doCaptureFirst, CancellationToken cancellationToken);
- /// <summary>
- /// Feeder拍照后,拍照失败时,执行Feeder
- /// </summary>
- /// <param name="Feeder"></param>
- /// <param name="procedure"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task ExecuteFeederForPhotoLater(IVoiceCoilMotorFeeder Feeder, ProcedureModel procedure, CancellationToken cancellationToken);
- /// <summary>
- /// 执行Feeder料仓供料及振动集合
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="isUpdateParame"></param>
- /// <returns></returns>
- Task ExecuteFeederStockWorks(IVoiceCoilMotorFeeder feeder, FeederStockWorks works, CancellationToken cancellationToken, bool isUpdateParame = true);
- /// <summary>
- /// 执行料仓振动任务
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task ExecuteFeederStockWorksOnly(IVoiceCoilMotorFeeder feeder, FeederStockWork[] works, CancellationToken cancellationToken);
- /// <summary>
- /// 执行Feeder振动任务
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="isUpdateParame"></param>
- /// <returns></returns>
- Task ExecuteFeederWorkOnly(IVoiceCoilMotorFeeder feeder, FeederWork[] works, CancellationToken cancellationToken, bool isUpdateParame = true);
- /// <summary>
- /// 执行Feeder振动集合
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="isUpdateParame"></param>
- /// <returns></returns>
- Task ExecuteFeederWorks(IVoiceCoilMotorFeeder feeder, FeederWorks works, CancellationToken cancellationToken, bool isUpdateParame = true);
- /// <summary>
- /// 在拍照前设置光源亮度和打开光源
- /// </summary>
- /// <param name="procedure">流程模型</param>
- /// <returns></returns>
- Task SetLightBeforePhoto(ProcedureModel procedure);
- /// <summary>
- /// 在拍照后关闭光源
- /// </summary>
- /// <param name="procedure">流程模型</param>
- /// <returns></returns>
- Task TurnOffLightAfterPhoto(ProcedureModel procedure);
- }
- }
|