using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Nanji_Island { class CModbusDll { public static byte[] WriteDO(int addr, int io, bool openclose) { byte[] 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; ushort crc = CMBRTU.CalculateCrc(src, 6); src[6] = (byte)(crc & 0xff); src[7] = (byte)(crc >> 8); return src; } public static byte[] WriteAllDO(int addr, int ionum, bool openclose) { byte[] src = new byte[10]; src[0] = (byte)addr; src[1] = 0x0f; src[2] = 0x00; src[3] = 0x00; src[4] = 0x00; src[5] = (byte)ionum; src[6] = 0x01; src[7] = (byte)((openclose) ? 0xff : 0x00); ushort crc = CMBRTU.CalculateCrc(src, 8); src[8] = (byte)(crc & 0xff); src[9] = (byte)(crc >> 8); return src; } public static byte[] ReadDO(int addr, int donum) { byte[] src = new byte[8]; src[0] = (byte)addr; src[1] = 0x01; src[2] = 0x00; src[3] = 0x00; src[4] = 0x00; src[5] = (byte)donum; ushort crc = CMBRTU.CalculateCrc(src, 6); src[6] = (byte)(crc & 0xff); src[7] = (byte)(crc >> 8); return src; } public static byte[] ReadDI(int addr, int dinum) { byte[] src = new byte[8]; src[0] = (byte)addr; src[1] = 0x02; src[2] = 0x00; src[3] = 0x00; src[4] = 0x00; src[5] = (byte)dinum; ushort crc = CMBRTU.CalculateCrc(src, 6); src[6] = (byte)(crc & 0xff); src[7] = (byte)(crc >> 8); return src; } } }