Esempio n. 1
0
        //*********************************************************************
        /// <summary>解析した文字列を保存する
        /// </summary>
        ///
        /// <param name="recType">      レコード種別</param>
        /// <param name="data">         データ(空文字列の可能性もあり</param>
        //*********************************************************************
        private void storeValue(int start, int len, string recType, string data)
        {
            // データレコード以外は保存しない
            if (!recType.Equals("00"))
            {
                return;
            }

            //-------------------------------------------------------
            // このデータによって開始・終了アドレスが変わるかチェック
            //-------------------------------------------------------
            if (start < startAddr)
            {
                startAddr = start;
            }
            if (start + len > endAddr)
            {
                endAddr = start + len;
            }

            //-------------------------------------------------------
            // 追加すべきデータをセット
            //-------------------------------------------------------
            HexFileData hexFileData = new HexFileData();

            hexFileData.Offset  = start;
            hexFileData.Length  = len;
            hexFileData.RecType = recType;
            hexFileData.Data    = data;

            //-------------------------------------------------------
            // 一覧に追加
            //-------------------------------------------------------
            hexFileList.Add(hexFileData);
        }
Esempio n. 2
0
        //*********************************************************************
        /// <summary> 指定されたアドレスの値を取得する
        /// </summary>
        /// <param name="address">  取得対象アドレス</param>
        /// <returns>               メモリ値</returns>
        //*********************************************************************
        public string getValue(int address)
        {
            // 指定されたアドレスに対する定義を探す
            HexFileData targetData = null;

            foreach (HexFileData curData in hexFileList)
            {
                if (curData.Offset <= address && curData.Offset + curData.Length > address)
                {
                    targetData = curData;
                    break;
                }
            }

            // 指定されたアドレスの定義がない場合は、デフォルト値を返す
            if (targetData == null)
            {
                int wordLen = DefaultValue.Length / 2;  // 1ワードの長さを求める
                int wordPos = address % wordLen;        // 要求されたアドレスが、ワード中のどこにあたるかかのoffsetを求める

                return(DefaultValue.Substring(wordPos * 2, 2));
            }

            // 定義がある場合は、ファイルの内容を返す
            int pos = address - targetData.Offset;

            return(targetData.Data.Substring(pos * 2, 2));
        }