示例#1
0
        public void SetData(byte SlaveAddr, ushort StartAddr, Action <bool> DataSent, params ushort[] Data)
        {
            byte[] buffer = new byte[9 + Data.Length * 2];
            buffer[0] = SlaveAddr;
            buffer[1] = 0x10;
            buffer[2] = (byte)((StartAddr >> 8) & 0xFF);
            buffer[3] = (byte)(StartAddr & 0xFF);
            buffer[4] = (byte)((Data.Length >> 8) & 0xFF);
            buffer[5] = (byte)(Data.Length & 0xFF);
            buffer[6] = (byte)(2 * Data.Length);

            for (int i = 0; i < Data.Length; i++)
            {
                buffer[7 + i * 2] = (byte)((Data[i] >> 8) & 0xFF);
                buffer[8 + i * 2] = (byte)(Data[i] & 0xFF);
            }

            byte[] buffer1;
            ModbusCRC.CalcCRC(buffer, 7 + Data.Length * 2, out buffer1);

            this.DataSent = DataSent;
            waitByteCount = 8;
            Action <byte[]> a = new Action <byte[]>(SendWriteCoils);

            a.BeginInvoke(buffer1, null, null);
        }
示例#2
0
        public void GetData(byte SlaveAddr, ushort StartAddr, int Count, Action <bool, ushort[]> DataReceived)
        {
            byte[] txBuffer = new byte[8];
            txBuffer[0] = SlaveAddr;
            txBuffer[1] = 0x03;
            BitConverter.GetBytes(StartAddr).Reverse().ToArray().CopyTo(txBuffer, 2);
            BitConverter.GetBytes((ushort)Count).Reverse().ToArray().CopyTo(txBuffer, 4);

            byte[] txBufferCRC;
            ModbusCRC.CalcCRC(txBuffer, 6, out txBufferCRC);

            this.DataReceived = DataReceived;
            waitByteCount     = 5 + 2 * Count;
            waitWordCount     = Count;

            Action <byte[]> a = new Action <byte[]>(SendReadCoils);

            a.BeginInvoke(txBufferCRC, null, null);
        }
示例#3
0
        public void Request(byte[] Buffer, byte ExpectByteCount, Action <bool, byte[]> DataReceived)
        {
            if (Buffer == null)
            {
                return;
            }
            if (Buffer.Length < 2)
            {
                return;
            }
            byte[] txBufferCRC;
            ModbusCRC.CalcCRC(Buffer, Buffer.Length, out txBufferCRC);
            waitByteCount         = ExpectByteCount;
            this.DataReceivedByte = DataReceived;

            Action <byte[]> a = new Action <byte[]>(SendRequest);

            a.BeginInvoke(txBufferCRC, null, null);
        }