示例#1
0
        public Item <bool>[] ReadBools(DeviceAddress deviceAddress, ushort length)
        {
            var datas  = readBool(deviceAddress, length);
            var bdatas = NetConvert.BytesToBools(datas, length);

            return(NetConvert.ToItems(bdatas, 0, length));
        }
示例#2
0
        public Item <bool>[] ReadBools(DeviceAddress deviceAddress, ushort length)
        {
            var datas = readyBytes(deviceAddress, (int)Math.Ceiling((double)(deviceAddress.BitAddress + length) / 8));
            var bools = NetConvert.BytesToBools(datas, deviceAddress.BitAddress, length);

            return(NetConvert.ToItems(bools, 0, length));
        }
示例#3
0
        /// <summary>
        /// Force Multi Coils Rely
        /// Function:0x0F
        /// </summary>
        /// <param name="address">00001~09999</param>
        /// <param name="data"></param>
        /// <param name="count">bools count of byte array</param>
        /// <returns></returns>
        private byte[] writeMulColilRely(int address, byte[] data, int count)
        {
            byte[] relyBuffer = new byte[6];
            var    values     = NetConvert.BytesToBools(data, count);

            for (int i = 0; i < count; i++)
            {
                var addressString = string.Format("{0:D5}", address + i + 1);//地址偏移+1
                if (_mapping.SetValue(addressString, new bool[] { values[i] }) == -1)
                {
                    return(errorRely(FunctionCode.ForceMulCoil, ErrorCode.LllegalDataAddress));
                }
            }
            relyBuffer[0] = (byte)_salveId;
            relyBuffer[1] = (byte)FunctionCode.ForceMulCoil;
            var addrByte = UnsafeNetConvert.UShortToBytes((ushort)address, ByteOrder.BigEndian);

            Array.Copy(addrByte, 0, relyBuffer, 2, 2);
            var countByte = UnsafeNetConvert.UShortToBytes((ushort)count, ByteOrder.BigEndian);

            Array.Copy(countByte, 0, relyBuffer, 4, 2);
            return(relyBuffer);
        }