public int SetResponse(byte[] responseBytes, McFrame mcFrame) { if (mcFrame.HasFlag(McFrame.ASCII_FLAG)) { return(SetResponse(ASCIIEncoding.ASCII.GetString(responseBytes))); } ResultCode = 0xcccc; int min = (FrameType.HasFlag(McFrame.MC3E)) ? 11 : 15; if (min <= responseBytes.Length) { var btCount = new[] { responseBytes[min - 4], responseBytes[min - 3] }; var btCode = new[] { responseBytes[min - 2], responseBytes[min - 1] }; int rsCount = BitConverter.ToUInt16(btCount, 0); if (FrameType.HasFlag(McFrame.ASCII_FLAG)) { rsCount = rsCount / 2; } ResultCode = BitConverter.ToUInt16(btCode, 0); Response = new byte[rsCount - 2]; Buffer.BlockCopy(responseBytes, min, Response, 0, Response.Length); } return(ResultCode); }
} //站号 // ==================================================================================== // 构造函数,用于设定通讯协议为3E,参数为目标e71的ip地址和端口号 protected McProtocolApp(string iHostName, int iPortNumber, McFrame mf, uint ucn) { CommandFrame = mf; HostName = iHostName; PortNumber = iPortNumber; appcn = ucn; }
} // 応答データ // ================================================================================ // コンストラクタ public McCommand(McFrame iFrame) { FrameType = iFrame; SerialNumber = 0x0001u; NetwrokNumber = 0x0000u; PcNumber = 0x00FFu; IoNumber = 0x03FFu; ChannelNumber = 0x0000u; CpuTimer = 0x0010u; }
} // 响应数据 public McCommand(McFrame iFrame) { FrameType = iFrame; SerialNumber = 0x0001; NetwrokNumber = 0x00; PcNumber = 0xFF; IoNumber = 0x03FF; ChannelNumber = 0x00; CpuTimer = 0x0010; }
} // PLC响应返回的数据 // ================================================================================ // 构造函数 public McCommand(McFrame iFrame) { FrameType = iFrame; SerialNumber = 0x0001u; //用于4E frame协议 NetwrokNumber = 0x0000u; //0x0002u是不符合手册的。单联时默认0x0000u PcNumber = 0x00FFu; //同上默认0x00FFu; IoNumber = 0x03FFu; //同上默认0x03FFu; ChannelNumber = 0x0008u; //e71站号 CpuTimer = 0x000Au; //同上默认 }
public McProtocolUdp(string iHostName, int iPortNumber, McFrame mf, uint cn) : base(iHostName, iPortNumber, mf, cn) { Client = new UdpClient(iPortNumber); }