Exemplo n.º 1
0
        private string ReadPmcHandle(ref ushort flib, string para)
        {
            string message = null;

            var paraModel = JsonConvert.DeserializeObject <ReadPmcModel>(para);
            var res       = new List <ReadPmcResultItemModel>();

            Dictionary <short, int[]> datas = new Dictionary <short, int[]>();

            foreach (var item in paraModel.Readers)
            {
                int[] data = new int[item.DwordQuantity];
                var   ret  = new PmcHelper().ReadPmcRange(flib, item.AdrType, item.StartNum, item.DwordQuantity, ref data);
                if (ret.Item1 == -16 || ret.Item1 == -8)
                {
                    var ret_conn = ConnectHelper.BuildConnect(ref flib, m_ip, m_port, m_timeout);

                    if (ret_conn == 0)
                    {
                        ret = new PmcHelper().ReadPmcRange(flib, item.AdrType, item.StartNum, item.DwordQuantity, ref data);
                    }
                }

                if (ret.Item1 == 0)
                {
                    datas.Add(item.AdrType, data);
                }
            }

            foreach (var item in paraModel.Decompilers)
            {
                string data    = "";
                string ret_dec = "";
                if (datas.ContainsKey(item.AdrType))
                {
                    ret_dec = new PmcHelper().DecompilerReadPmcInfo(datas[item.AdrType], item, ref data);
                }
                // var ret_dec = PmcHelper.DecompilerReadPmcInfo(datas[item.AdrType], item, ref data);
                if (ret_dec != null)
                {
                    message = ret_dec;
                }
                else
                {
                    res.Add(new ReadPmcResultItemModel()
                    {
                        Id    = item.Id,
                        Value = data
                    });
                }
            }
            GetResultEvent?.Invoke(new BaseCNCResultModel <ReadPmcResultItemModel>()
            {
                Value = res, Id = ""
            });
            return(message);
        }
Exemplo n.º 2
0
        public HubReadWriterResultModel Reversal(HubReadWriterModel hubRead)
        {
            short  adrType = (short)Convert.ToInt32(hubRead.Data[0].ToString());
            ushort adr     = (ushort)Convert.ToInt32(hubRead.Data[1].ToString());
            ushort bit     = (ushort)Convert.ToInt32(hubRead.Data[2].ToString());

            var res = new PmcHelper().ReversalPmcBit(flib, adrType, adr, bit);

            return(new HubReadWriterResultModel()
            {
                Result = res,
                Error = res,
                Success = string.IsNullOrEmpty(res),
                SuccessTip = hubRead.SuccessTip,
                ErrorTip = hubRead.ErrorTip
            });
        }
Exemplo n.º 3
0
        protected override object PollDecompiler(List <ReadPmcResultItemModel> res, DecompReadPmcItemModel deModel)
        {
            string data = "";

            if (!datas.ContainsKey(deModel.AdrType))
            {
                return("PMC未正确读取,无法解析!");
            }
            var ret_dec = new PmcHelper().DecompilerReadPmcInfo(datas[deModel.AdrType], deModel, ref data);

            if (string.IsNullOrEmpty(ret_dec))
            {
                res.Add(new ReadPmcResultItemModel()
                {
                    Id = deModel.Id, Value = data
                });
            }
            return(ret_dec);
        }
Exemplo n.º 4
0
        protected override Tuple <short, string> PollRead(ReadPmcTypeModel inputModel)
        {
            var dwQty = (int)Math.Ceiling((inputModel.EndNum - inputModel.StartNum) / 4.0);

            int[] data = new int[dwQty];
            var   ret  = new PmcHelper().ReadPmcRange(flib, inputModel.AdrType, inputModel.StartNum, dwQty, ref data);

            if (ret.Item1 == 0)
            {
                if (datas.ContainsKey(inputModel.AdrType))
                {
                    datas[inputModel.AdrType] = data;
                }
                else
                {
                    datas.Add(inputModel.AdrType, data);
                }
            }
            return(ret);
        }