using System;
using System.Collections.Generic;
using System.Text;
namespace ICommLayer
{
///
/// 发送设备命令的接口
/// 创建者:Richard.Liu
///
public interface ISendDeviceOrder
{//20230811richard.liu周期内按S7连接批量发送,重构CControl.cs\文件夹Communication、Common内通讯CSendDeviceOrder: ISendDeviceOrder相关文件
string CommLayerError
{
get;
set;
}
///
/// 发送堆垛机命令
///
/// 消息编号
/// 任务编号
/// 堆垛机命令字
///1-复位
///2-将取
///3-将送
///4-取货
///5-放货
///6-取放货
/// 设备编号
/// 起始x坐标,排-沿轨道方向
/// 起始y坐标,层-高度方向
/// 起始z坐标,列-面向堆垛机操作面板,1-左侧,2-右侧
/// 目标x坐标,列-沿轨道方向
/// 目标y坐标,层-高度方向
/// 目标z坐标,排-面向堆垛机操作面板,1-左侧,2-右侧
/// 发送堆垛机命令是否成功
bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ, out StringBuilder[] itemnames, out StringBuilder[] itemvalues);
///
/// 发送穿梭车、输送机设备命令
///
/// 消息编号
/// 任务编号
/// 命令字
/// 穿梭车命令字:
///1-复位
///2-左接货
///3-左送货
///4-右接货
///5-右送货
///6-停止
///7-运动(运动到第4、5字节指定的目标设备所引)
///输送机命令字:
///1-入库(朝向库)
///2-出库(背向库)
///3-送货
///4-接货
///5-停止
/// 设备编号
///对于输送机、穿梭车代表目标设备所引,
/// 0-代表单一设备控制,无目标设备所引;1…65535代表目标设备所引(终点输送机的设备所引)
/// 发送穿梭车、输送机设备命令是否成功
bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex,int ArrowDeviceIndex, out StringBuilder[] itemnames, out StringBuilder[] itemvalues);
///
/// 上位机给下位机发送烟箱按品牌码分道信息共15字节,有数据时写入实际数据,否则全部写零
///
/// 码垛位设备号索引
/// 第3--15字节,烟箱码
/// 第1字节,1-有一号工程码,0-无一号工程码
/// 第2字节,1-小烟箱,0-正常烟箱
/// 第16字节,烟箱码垛数量
///
bool SendDeviceOrder(int DeviceIndex, string TobaccoCode, bool HaveFirstProjectCode, bool IfSmallTobacco,int Count);
///
/// 向PLC的DB区写入数据
///
/// 标签变量名称数组
/// 标签值数组
///
bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues, string PLCconnectionID);
}
}