/// <summary> /// 通过字符串构造发送价格内容 /// </summary> /// <param name="lstVals"></param> /// <returns></returns> static public IList <GlareLedSysDefPub.CardGasValEachNumAByte> MakeOilValBytesByString(IList <string> lstVals) { IList <GlareLedSysDefPub.CardGasValEachNumAByte> lstOil = new List <GlareLedSysDefPub.CardGasValEachNumAByte>(); foreach (string aStr in lstVals) { string strTmp = aStr; strTmp.Replace(".", ""); while (strTmp.Length < 6) { strTmp += "0"; } GlareLedSysDefPub.CardGasValEachNumAByte aNewOilVal = new GlareLedSysDefPub.CardGasValEachNumAByte(); byte[] bArr = new byte[6]; for (int i = 0; i < 6; i++) { byte bTmp = 0; string strABit = strTmp.Substring(i, 1); byte.TryParse(strABit, out bTmp); bArr[i] = bTmp; } aNewOilVal.AddAGasValOfBCDVal(bArr); lstOil.Add(aNewOilVal); } return(lstOil); }
/// <summary> /// 分析读取的价格内容是否成功 /// </summary> /// <param name="pBufRec"></param> /// <param name="iAddr"></param> /// <param name="lstOilVals"></param> /// <returns></returns> static public bool AnalyeseRecGetOilVal(byte[] pBufRec, int iAddr, ref List <GlareLedSysDefPub.CardGasValEachNumAByte> lstOilVals) { try { byte bCmdType = GlareLedSysDefPub.GasCardDef.BT_CmdGetGasVal; int iRecWantLen = GlareLedSysDefPub.GasCardDef.BT_RecBytesLenGetGasVal; if (pBufRec.Length != iRecWantLen) { string str = BitConverter.ToString(pBufRec); LogMgr.WriteInfoDefSys("AnalyeseRecGetOilVal Length error:" + str); return(false); } if (pBufRec[0] != GlareLedSysDefPub.GasCardDef.BT_CmdStart && pBufRec[1] != GlareLedSysDefPub.GasCardDef.BT_RecCmdStart && pBufRec[GlareLedSysDefPub.GasCardDef.CmdOffsetOfTypeSection] != bCmdType && pBufRec[pBufRec.Length - 1] != GlareLedSysDefPub.GasCardDef.BT_CmdEnd) { LogMgr.WriteInfoDefSys("AnalyeseRecGetOilVal Code Error"); return(false); } if (!IsCheckSumCorrect(pBufRec, pBufRec[pBufRec.Length - 2])) { LogMgr.WriteInfoDefSys("Crc Error"); return(false); } while (lstOilVals.Count < GlareLedSysDefPub.GasCardDef.MaxScreen) { GlareLedSysDefPub.CardGasValEachNumAByte aItem = new GlareLedSysDefPub.CardGasValEachNumAByte(); lstOilVals.Add(aItem); } int iTmp = 5; byte[] bArrScreenVal = new byte[6]; for (int i = 0; i < GlareLedSysDefPub.GasCardDef.MaxScreen; i++) { byte bValBcd1 = pBufRec[iTmp++]; byte bValBcd2 = pBufRec[iTmp++]; byte bValBcd3 = pBufRec[iTmp++]; bArrScreenVal[0] = GetHeightLowByteByBCDVal(bValBcd1, true); bArrScreenVal[0 + 1] = GetHeightLowByteByBCDVal(bValBcd1, false); bArrScreenVal[0 + 2] = GetHeightLowByteByBCDVal(bValBcd2, true); bArrScreenVal[0 + 3] = GetHeightLowByteByBCDVal(bValBcd2, false); bArrScreenVal[0 + 4] = GetHeightLowByteByBCDVal(bValBcd3, true); bArrScreenVal[0 + 5] = GetHeightLowByteByBCDVal(bValBcd3, false); lstOilVals[i].lstArr.Add(bArrScreenVal[0]); lstOilVals[i].lstArr.Add(bArrScreenVal[1]); lstOilVals[i].lstArr.Add(bArrScreenVal[2]); lstOilVals[i].lstArr.Add(bArrScreenVal[3]); lstOilVals[i].lstArr.Add(bArrScreenVal[4]); lstOilVals[i].lstArr.Add(bArrScreenVal[5]); } return(true); } catch (System.Exception ex) { LogMgr.WriteInfoDefSys(ex.Message); return(false); } }