Beispiel #1
0
        /// <summary>
        /// 读取自定义的寄存器的值
        /// </summary>
        /// <param name="address">起始地址,示例:"I100","M100"</param>
        /// <param name="length">数据长度</param>
        /// <exception cref="IndexOutOfRangeException"></exception>
        /// <returns>byte数组值</returns>
        public override OperateResult <byte[]> Read(string address, ushort length)
        {
            OperateResult <byte, int, ushort> analysis = SiemensS7Net.AnalysisAddress(address);

            if (!analysis.IsSuccess)
            {
                return(OperateResult.CreateFailedResult <byte[]>(analysis));
            }

            switch (analysis.Content1)
            {
            case 0x81: return(OperateResult.CreateSuccessResult(inputBuffer.GetBytes(analysis.Content2 / 8, length)));

            case 0x82: return(OperateResult.CreateSuccessResult(outputBuffer.GetBytes(analysis.Content2 / 8, length)));

            case 0x83: return(OperateResult.CreateSuccessResult(memeryBuffer.GetBytes(analysis.Content2 / 8, length)));

            case 0x84: return(OperateResult.CreateSuccessResult(dbBlockBuffer.GetBytes(analysis.Content2 / 8, length)));

            default: return(new OperateResult <byte[]>(StringResources.Language.NotSupportedDataType));
            }
        }
Beispiel #2
0
        /// <summary>
        /// 往指定的地址里写入bool数据对象
        /// </summary>
        /// <param name="address">西门子的地址信息</param>
        /// <param name="value">值</param>
        /// <returns>是否成功的结果</returns>
        public OperateResult Write(string address, bool value)
        {
            OperateResult <byte, int, ushort> analysis = SiemensS7Net.AnalysisAddress(address);

            if (!analysis.IsSuccess)
            {
                return(analysis);
            }

            switch (analysis.Content1)
            {
            case 0x81: inputBuffer.SetBool(value, analysis.Content2); return(OperateResult.CreateSuccessResult( ));

            case 0x82: outputBuffer.SetBool(value, analysis.Content2); return(OperateResult.CreateSuccessResult( ));

            case 0x83: memeryBuffer.SetBool(value, analysis.Content2); return(OperateResult.CreateSuccessResult( ));

            case 0x84: dbBlockBuffer.SetBool(value, analysis.Content2); return(OperateResult.CreateSuccessResult( ));

            default: return(new OperateResult(StringResources.Language.NotSupportedDataType));
            }
        }