public static byte[] ReadDo(int addr, int doNum) { var src = new byte[8]; src[0] = (byte)addr; src[1] = 0x01; src[2] = 0x00; src[3] = 0x00; src[4] = 0x00; src[5] = (byte)doNum; var crc = CalcRTU.CalculateCrc(src, 6); src[6] = (byte)(crc & 0xff); src[7] = (byte)(crc >> 8); return(src); }
public static byte[] WriteDo(int addr, int io, bool openClose) { var src = new byte[8]; src[0] = (byte)addr; src[1] = 0x05; src[2] = 0x00; src[3] = (byte)io; src[4] = (byte)((openClose) ? 0xff : 0x00); src[5] = 0x00; var crc = CalcRTU.CalculateCrc(src, 6); src[6] = (byte)(crc & 0xff); src[7] = (byte)(crc >> 8); return(src); }
private byte[] AnalysisRcv(byte[] src, int len) { if (len < 6) { return(null); } if (src[0] != Convert.ToInt16(_addr)) { return(null); } switch (src[1]) { case 0x01: if (CalcRTU.CalculateCrc(src, src[2] + 5) == 0x00) { byte[] dst = new byte[src[2]]; for (int i = 0; i < src[2]; i++) { dst[i] = src[3 + i]; } return(dst); } break; case 0x02: if (CalcRTU.CalculateCrc(src, src[2] + 5) == 0x00) { var dst = new byte[src[2]]; for (var i = 0; i < src[2]; i++) { dst[i] = src[3 + i]; } return(dst); } break; case 0x04: if (CalcRTU.CalculateCrc(src, src[2] + 5) == 0x00) { var dst = new byte[src[2]]; for (var i = 0; i < src[2]; i++) { dst[i] = src[3 + i]; } return(dst); } break; case 0x05: if (CalcRTU.CalculateCrc(src, 8) == 0x00) { var dst = new byte[1]; dst[0] = src[4]; return(dst); } break; case 0x0f: if (CalcRTU.CalculateCrc(src, 8) == 0x00) { var dst = new byte[1]; dst[0] = 1; return(dst); } break; } return(null); }