public byte[] ReadData(string OAD)
        {
            string txString = string.Empty;

            txString = "68" + "L1L2" + "43" + (Addr.Length / 2 - 1).ToString("x2") + Addr + "10";
            string hString = txString.Substring(2);

            txString += "H_CS";
            txString += "05";//读
            if (OAD.Length / 8 > 1)
            {
                txString += "02";                            //多个OAD读
                txString += "01";                            //piid
                txString += (OAD.Length / 8).ToString("X2"); //个数
            }
            else
            {
                txString += "01"; //单个OAD读
                txString += "01"; //piid
            }
            txString += OAD;
            txString += "00";//没有时间标签
            txString += "F_CS";
            txString += "16";

            int frmLen = txString.Length / 2 - 2;

            txString = txString.Replace("L1L2", (frmLen & 0x00ff).ToString("X2") + (frmLen >> 8).ToString("X2"));

            hString  = hString.Replace("L1L2", (frmLen & 0x00ff).ToString("X2") + (frmLen >> 8).ToString("X2"));
            txString = txString.Replace("H_CS", GetCS(hString));

            string fString = txString.Substring(2, txString.Length - 8);

            txString = txString.Replace("F_CS", GetCS(fString));

            byte[] ret = {};
            string res = SendAndRec(txString);

            if (res != null && res.Length > 0)
            {
                Frame698 frm = new Frame698(res);
                if (frm.IsValidFrame)
                {
                    //ret = new byte[frm.Apdu.Length];
                    ret = frm.Apdu;
                }
            }
            return(ret);
        }
        /// <summary>
        /// 建立连接
        /// </summary>
        /// <param name="keyVer">密钥版本</param>
        /// <param name="comformance">协商参数信息</param>
        /// <param name="connectType">加密类型</param>
        public void Connect(string keyVer, Consult consult)
        {
            string apdu = "0203";

            apdu += consult.ProtocolVer;
            apdu += consult.ProtocolConformance;
            apdu += consult.FunctionConformance;
            apdu += consult.TxMaxSize;
            apdu += consult.RxMaxSize;
            apdu += consult.MaxSizeFrmNum;
            apdu += consult.MaxApduSize;
            apdu += consult.OverTime;
            apdu += consult.SecurityRule;

            Esam698Service.Esam698ServiceClient ESAMproxy = new Esam698Service.Esam698ServiceClient();

            int    iKeyState = Get_KeyState(keyVer);
            string cDiv      = Get_Div(iKeyState);
            string cASCTR    = _asctr.ToString("X8");

            Esam698Service.InitSessionState initSessionState;
            initSessionState = ESAMproxy.Obj_Meter_Formal_InitSession(iKeyState, cDiv, cASCTR, "01");

            RandonHost  = initSessionState.OutRandHost;
            SessionInit = initSessionState.OutSessionInit;
            Sign        = initSessionState.OutSign;

            apdu += (SessionInit.Length / 2).ToString("X2");
            apdu += SessionInit;
            apdu += (Sign.Length / 2).ToString("X2");
            apdu += Sign;
            apdu += "00";//没有时间标签

            string txString = MakeSendFrm("43", apdu);
            string ret      = string.Empty;
            string res      = SendAndRec(txString);

            if (res != null && res.Length > 0)
            {
                Frame698 frm = new Frame698(res);
                if (frm.IsValidFrame)
                {
                    ret = frm.ApduStr;
                }
            }
        }
        public string ReadAddr()
        {
            string txString = "6817004345AAAAAAAAAAAA11534E0501024001020000BB0B16";
            //返回:68 21 00 C3 45 11 11 11 11 11 11 11 7D E0 85 01 02 40 01 02 00 01 09 06 11 11 11 11 11 11 00 00 7C 3A 16
            string ret = string.Empty;
            string res = SendAndRec(txString);

            if (res != null && res.Length > 0)
            {
                Frame698 frm = new Frame698(res);
                if (frm.IsValidFrame)
                {
                    ret = frm.SaStr;
                }
            }
            return(ret);
        }
 protected override void AnayzeFrm(string frm)
 {
     Frame698 frame698 = new Frame698(frm);
 }
        /// <summary>
        /// 判断是否读完
        /// </summary>
        /// <param name="frm">输入帧</param>
        /// <returns></returns>
        protected override bool ReceiveFinishJudge(byte[] frm)
        {
            Frame698 frame698 = new Frame698(frm);

            return(frame698.IsValidFrame);
        }