schangxiang@126.com
2025-07-23 ba449717184ae09590aaead8a7240103b26cec5e
写入(需要验证是否真正写入了)
已修改2个文件
68 ■■■■■ 文件已修改
SDA/iWareSda/PLCService/Default/Siemens_HslCommunicationService.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/PLCService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/PLCService/Default/Siemens_HslCommunicationService.cs
@@ -142,16 +142,60 @@
            return fre;
        }
        //public override MessageModel WriteValuePoint(string fullAddress, object value, object proObj)
        //{
        //    if (string.IsNullOrEmpty(fullAddress))
        //    {
        //        return new MessageModel() { result = false, resMsg = "地址为空" };
        //    }
        //    var arr = fullAddress.Split(WareSdaStruct.PLCDBADDRESS_SEPARATE);
        //    string dbNumber = arr[0];
        //    string offset = arr[1];
        //    return WriteValuePoint(dbNumber, offset, value, proObj);
        //}
        /// <summary>
        /// 写入方法(需要验证是否真正写入了) 【Editby shaocx,2025-07-16】
        /// </summary>
        /// <param name="fullAddress"></param>
        /// <param name="value"></param>
        /// <param name="proObj"></param>
        /// <returns></returns>
        public override MessageModel WriteValuePoint(string fullAddress, object value, object proObj)
        {
            if (string.IsNullOrEmpty(fullAddress))
            {
                return new MessageModel() { result = false, resMsg = "地址为空" };
            return WriteValuePointForReValidateWriteSucess(fullAddress, value, proObj);
            }
        /// <summary>
        /// 写入(需要验证是否真正写入了)
        /// </summary>
        /// <param name="fullAddress"></param>
        /// <param name="value"></param>
        /// <param name="proObj"></param>
        /// <returns></returns>
        public override MessageModel WriteValuePointForReValidateWriteSucess(string fullAddress, object value, object proObj)
        {
            if (string.IsNullOrEmpty(fullAddress)) return new MessageModel()
            {
                result = false,
                resMsg = "地址是空的"
            };
            var arr = fullAddress.Split(WareSdaStruct.PLCDBADDRESS_SEPARATE);
            string dbNumber = arr[0];
            string offset = arr[1];
            return WriteValuePoint(dbNumber, offset, value, proObj);
            var ret = WriteValuePoint(dbNumber, offset, value, proObj);
            if (ret.result == false) return ret;
            //需要重新读取下
            var readRet = ReadValuePoint(dbNumber, offset, proObj.GetType());
            if (readRet?.ToString() != value?.ToString())
            {
                return new MessageModel()
                {
                    result = false,
                    resMsg = $"写入的值{value}跟读取的值{readRet}不符,dbNumber:{dbNumber},offset:{offset}"
                };
            }
            return ret;
        }
        /// <summary>
SDA/iWareSda/PLCService/PLCService.cs
@@ -67,6 +67,22 @@
        }
        /// <summary>
        /// 写入(需要验证是否真正写入了)
        /// </summary>
        /// <param name="fullAddress">地址</param>
        /// <param name="value">值</param>
        ///  <param name="proObj">属性对象</param>
        /// <returns></returns>
        public virtual MessageModel WriteValuePointForReValidateWriteSucess(string fullAddress, object value, Object proObj)
        {
            return new MessageModel()
            {
                result = false,
                resMsg = "没真正调用方法"
            };
        }
        /// <summary>
        /// 读取
        /// </summary>
        /// <param name="dbNumber">DB块名</param>