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