using ProjectManagementSystem.Device.Core; using ProjectManagementSystem.Device.Extenions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProjectManagementSystem.Device.Command { public class CommandRoller : IDeviceCommand { private byte[] buffer = new byte[40] { 0x50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x53 }; public byte TargetID { get; set; } public byte Function { get; set; } = 0x11; public ushort Operate { get; set; } = 0x0150; public ushort ActionCode { get; set; } public byte[] Serialization() { var operateBytes = BitConverter.GetBytes(Operate); var actionBytes = BitConverter.GetBytes(ActionCode); buffer[0] = 0x50; buffer[1] = 0x01;//请求序号 buffer[2] = 0x15;//本机ID buffer[3] = TargetID; //目标ID buffer[4] = Function;//功能码 buffer[5] = 0x20;//数据长度 buffer[6] = 0x00;//端口输出 buffer[7] = 0x00;//端口输出 buffer[8] = 0x00;//端口输出 buffer[9] = 0x00;//端口输出 buffer[10] = 0x00;//操作参数2 buffer[11] = 0x00;//操作参数2 buffer[12] = 0x00;//操作参数3 buffer[13] = 0x00;//操作参数3 buffer[14] = operateBytes[1];//操作码 高位 buffer[15] = operateBytes[0];//操作码 低位 buffer[16] = actionBytes[1];//操作内容 高位 buffer[17] = actionBytes[0];//操作内容 低位 buffer[18] = 0x01;//操作执行标志 0-停止 1-执行 buffer[19] = 0x01;//操作中断标志 1-正常 2-暂停 buffer[20] = 0x00;//备用 buffer[21] = 0x00;//备用 //buffer[22] = 0x75;//滚筒超时 //buffer[23] = 0x30;//滚筒超时 1-30000单位0.1s (0对应PLC的默认值,>30000屏蔽) //buffer[24] = 0x00;//滚筒速度 //buffer[25] = 0x32;//滚筒速度 0-不选择 全0则使用PLC默认值单位:r / min 0--60 buffer[22] = 0x00;//滚筒超时 buffer[23] = 0x00;//滚筒超时 1-30000单位0.1s (0对应PLC的默认值,>30000屏蔽) buffer[24] = 0x00;//滚筒速度 buffer[25] = 0x00;//滚筒速度 0-不选择 全0则使用PLC默认值单位:r / min 0--60 buffer[26] = 0x00;//备用 buffer[27] = 0x00;//备用 buffer[28] = 0x00;//备用 buffer[29] = 0x00;//备用 buffer[30] = 0x00;//备用 buffer[31] = 0x00;//备用 buffer[32] = 0x00;//备用 buffer[33] = 0x00;//备用 buffer[34] = 0x00;//备用 buffer[35] = 0x00;//备用 buffer[36] = 0x00;//备用 buffer[37] = 0x00;//备用 buffer[38] = buffer.XOR_Check(38);//异或 return buffer; } } }