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); }
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 }); }
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); }
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); }