schangxiang@126.com
2025-07-23 ba449717184ae09590aaead8a7240103b26cec5e
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 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()
            {
                return new MessageModel() { result = false, resMsg = "地址为空" };
            }
                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>