예제 #1
0
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _slave.OnWriteHoldingRegisters = (_, start, hrs) =>
            {
                Console.WriteLine("Write holding registers at {0}, len: {1}", start, hrs.Length);

                for (var i = 0; i < hrs.Length; ++i)
                {
                    Console.WriteLine("{0}: {1}", i + start, hrs[i]);
                }

                return(MbExceptionCode.Ok);
            };
            _slave.OnReadHoldingRegisters = (_, start, count) =>
            {
                var buffer = new ushort[count];

                for (var i = 0; i < count; ++i)
                {
                    buffer[i] = (ushort)(i + start);
                }

                return(buffer, MbExceptionCode.Ok);
            };
            _slave.OnWriteCoils = (_, start, bools) =>
            {
                Console.WriteLine("Write coils at {0}, len: {1}", start, bools.Length);

                for (var i = 0; i < bools.Length; ++i)
                {
                    Console.WriteLine("{0}: {1}", i + start, bools[i]);
                }

                return(MbExceptionCode.Ok);
            };

            _slave.OnWriteHoldingRegisters = (_, start, hrs) =>
            {
                Console.WriteLine("Write holding registers at {0}, len: {1}", start, hrs.Length);

                for (var i = 0; i < hrs.Length; ++i)
                {
                    Console.WriteLine("{0}: {1}", i + start, hrs[i]);
                }

                return(MbExceptionCode.Ok);
            };

            _slave.OnReadHoldingRegisters = (_, start, count) =>
            {
                var buffer = new ushort[count];

                for (var i = 0; i < count; ++i)
                {
                    buffer[i] = (ushort)(i + start);
                }

                return(buffer, MbExceptionCode.Ok);
            };

            _slave.OnReadInputRegisters = _slave.OnReadHoldingRegisters;


            _slave.OnReadCoils = (_, start, count) =>
            {
                var buffer = new bool[count];

                for (var i = 0; i < count; ++i)
                {
                    buffer[i] = (start + i) % 3 == 0;
                }

                return(buffer, MbExceptionCode.Ok);
            };
            _slave.OnReadDiscretes = _slave.OnReadCoils;
            return(_slave.Listen());
        }