Esempio n. 1
0
        public string GetResultString(byte[] DataBuf, byte[] TxBuf)
        {
            string strInfo = null;

            if (DataBuf[0] != 0x01)
            {
                return(null);
            }
//            D3 91 37 00 C0 02 4D FA 3F 02 00 00 00 00 60 09 19 21 68 00 30 11
            //01 10 16 10 22 14 18
            //AA 00 01 00 00 00 00 00 00 00 00 00 00 00 00 20 01 23 1B 0F 39 01 49 57 55 55 DE 16 00 03

            DataRow dr = dt.NewRow();

            dr["序号"]   = dt.Rows.Count + 1;
            dr["表具地址"] = FrmMain.GetStringAddrFromByte(DataBuf, 1);
            dr["命令类型"] = FrmMain.GetStringFromCmd(DataBuf[0]);
            dr["操作时间"] = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");
            strInfo    = FrmMain.GetErrorInfo(DataBuf[1 + FrmMain.AddrLength]);
            dr["操作结果"] = strInfo;
            if (DataBuf.Length > FrmMain.AddrLength + 1 + 1)
            {
                int iPos = 1 + FrmMain.AddrLength + 1;
                if (DataBuf[iPos] == 0)
                {
                    dr["数据格式"] = "实时数据";
                }
                else if (DataBuf[iPos] == 1)
                {
                    dr["数据格式"] = "冻结数据";
                }
                else
                {
                    dr["数据格式"] = "未知格式";
                }
                iPos    += 1;
                strInfo += "\n 数据格式:" + dr["数据格式"].ToString();
                string[] strResult = FrmMain.ExplainMeterData(DataBuf, iPos, DataBuf.Length - iPos);
                int      index     = 0;
                if (strResult.Length == 11)
                {   // 正转用量+反转用量
                    dr["正转用量"] = strResult[index++];
                    dr["反转用量"] = strResult[index++];
                    strInfo   += "\n 正转用量:" + dr["正转用量"].ToString();
                    strInfo   += "\n 反转用量:" + dr["反转用量"].ToString();
                }
                else if (strResult.Length == 15)
                {   // 起始序号+冻结时间+冻结方式+冻结数量+时间间隔+冻结数据
                    dr["起始序号"] = strResult[index++];
                    dr["冻结时间"] = strResult[index++];
                    dr["冻结方式"] = strResult[index++];
                    dr["冻结数量"] = strResult[index++];
                    dr["时间间隔"] = strResult[index++];
                    dr["冻结数据"] = strResult[index++];
                    strInfo   += "\n 起始序号:" + dr["起始序号"].ToString();
                    strInfo   += "\n 冻结时间:" + dr["冻结时间"].ToString();
                    strInfo   += "\n 冻结方式:" + dr["冻结方式"].ToString();
                    strInfo   += "\n 冻结数量:" + dr["冻结数量"].ToString();
                    strInfo   += "\n 时间间隔:" + dr["时间间隔"].ToString();
                    strInfo   += "\n 正转用量:" + dr["正转用量"].ToString();
                    strInfo   += "\n 冻结数据:" + dr["冻结数据"].ToString();
                }
                else if (strResult.Length == 12)
                {   // 起始序号+冻结时间+冻结数据
                    dr["起始序号"] = strResult[index++];
                    dr["冻结时间"] = strResult[index++];
                    dr["冻结数据"] = strResult[index++];
                    strInfo   += "\n 起始序号:" + dr["起始序号"].ToString();
                    strInfo   += "\n 冻结时间:" + dr["冻结时间"].ToString();
                    strInfo   += "\n 冻结数据:" + dr["冻结数据"].ToString();
                }
                dr["报警信息"] = strResult[index++];
                dr["阀门状态"] = strResult[index++];
                dr["电压"]   = strResult[index++];
                dr["温度"]   = strResult[index++];
                dr["信噪比"]  = strResult[index++];
                dr["信道"]   = strResult[index++];
                dr["版本"]   = strResult[index++];
                dr["场强↓"]  = strResult[index++];
                dr["场强↑"]  = strResult[index++];
                strInfo   += "\n 报警信息:" + dr["报警信息"].ToString();
                strInfo   += "\n 阀门状态:" + dr["阀门状态"].ToString();
                strInfo   += "\n 电压:" + dr["电压"].ToString();
                strInfo   += "\n 温度:" + dr["温度"].ToString();
                strInfo   += "\n 信噪比:" + dr["信噪比"].ToString();
                strInfo   += "\n 信道:" + dr["信道"].ToString();
                strInfo   += "\n 版本:" + dr["版本"].ToString();
            }
            dt.Rows.Add(dr);
            if (dt.Rows.Count > 2000)
            {
                dt.Rows.RemoveAt(0);
            }
            string strPath = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\DataForward";

            if (Directory.Exists(strPath) == false)
            {
                Directory.CreateDirectory(strPath);
            }
            string strFile = strPath + "\\ReadRealData.xml";

            if (File.Exists(strFile) == false)
            {
                File.Create(strFile).Close();
            }
            dt.WriteXml(strFile);
            return(strInfo);
        }