// public Gate_Rlt(DateTime _dt):this(comAdr,beforeLevel,behindLevel,height,flux,reWater,tuWater,power,lock_OC) // { // dt = _dt; // } #region Gate_Rlt /// <summary> /// /// </summary> /// <param name="row"></param> /// <returns></returns> static public Gate_Rlt Parse(DataRow r) { if (r == null) { return(null); } try { Gate_Rlt gr = new Gate_Rlt(); gr.dt = Convert.ToDateTime(r["DT"]); gr.beforeLevel = Convert.ToInt32(r["BeforeLevel"]); gr.behindLevel = Convert.ToInt32(r["BehindLevel"]); // gr.comAdr = Convert.ToInt32(r["adress"]); gr.height = Convert.ToInt32(r["Height"]); gr.flux = Convert.ToInt32(r["Flux"]); gr.reWater = Convert.ToInt32(r["RemainWater"]); gr.tuWater = Convert.ToInt32(r["TotalWater"]); return(gr); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return(null); } }
/// <summary> /// 读取实时数据部分 /// </summary> /// <param name="data"></param> /// <param name="refValue"></param> private void Read_Rlt(byte[] Data, ref object oPars) { //实际闸高 height = Data[7] * 256 + Data[8]; //闸前水位 beforeLevel = Data[9] * 256 + Data[10]; //闸后水位 behindLevel = Data[11] * 256 + Data[12]; //瞬时流量 if (Data[13] == 0xFF && Data[14] == 0xFF) { flux = 9999;//错误瞬时流量 } else { flux = (Data[13] * 256 + Data[14]) / 100f;//正确瞬时流量 } //剩余水量 string strReWater = ""; for (int i = 15; i < 19; i++)//15,16,17,18 { strReWater += Data[i].ToString("x2"); } reWater = Convert.ToInt32(strReWater, 16); //总用水量 string strTuWater = ""; for (int i = 19; i < 23; i++)//19,20,21,22 { strTuWater += Data[i].ToString("x2"); } tuWater = Convert.ToInt32(strTuWater, 16); //供电状态 if (Data[23] == 0x00) { power = "市电状态"; } if (Data[23] == 0xFF) { power = "电池状态"; } //开关锁状态 switch (Data[24]) { case 0x00: lock_OC = "强关状态"; break; case 0x01: lock_OC = "强开状态"; break; case 0x02: lock_OC = "正常状态"; break; default: lock_OC = "未知状态"; break; } oPars = new Gate_Rlt(comAdr, beforeLevel, behindLevel, height, flux, reWater, tuWater, power, lock_OC); }
/// <summary> /// /// </summary> /// <param name="row"></param> /// <returns></returns> public static Gate_Rlt Parse(DataRow r) { if (r == null) return null; try { Gate_Rlt gr = new Gate_Rlt(); gr.dt = Convert.ToDateTime(r["DT"]); gr.beforeLevel = Convert.ToInt32(r["BeforeLevel"]); gr.behindLevel = Convert.ToInt32(r["BehindLevel"]); // gr.comAdr = Convert.ToInt32(r["adress"]); gr.height = Convert.ToInt32(r["Height"]); gr.flux = Convert.ToInt32(r["Flux"]); gr.reWater = Convert.ToInt32(r["RemainWater"]); gr.tuWater = Convert.ToInt32(r["TotalWater"]); return gr; } catch (Exception ex) { MessageBox.Show(ex.ToString()); return null; } }
/// <summary> /// ��ȡʵʱ���ݲ��� /// </summary> /// <param name="data"></param> /// <param name="refValue"></param> private void Read_Rlt(byte[] Data, ref object oPars) { //ʵ��բ�� height = Data[7] * 256 + Data[8]; //բǰˮλ beforeLevel = Data[9] * 256 + Data[10]; //բ��ˮλ behindLevel = Data[11] * 256 + Data[12]; //˲ʱ���� if (Data[13] == 0xFF && Data[14] == 0xFF) { flux = 9999;//����˲ʱ���� } else { flux = (Data[13] * 256 + Data[14]) / 100f;//��ȷ˲ʱ���� } //ʣ��ˮ�� string strReWater = ""; for (int i = 15; i < 19; i++)//15,16,17,18 { strReWater += Data[i].ToString("x2"); } reWater = Convert.ToInt32(strReWater, 16); //����ˮ�� string strTuWater = ""; for (int i = 19; i < 23; i++)//19,20,21,22 { strTuWater += Data[i].ToString("x2"); } tuWater = Convert.ToInt32(strTuWater, 16); //����״̬ if (Data[23] == 0x00) { power = "�е�״̬"; } if (Data[23] == 0xFF) { power = "���״̬"; } //������״̬ switch (Data[24]) { case 0x00: lock_OC = "ǿ��״̬"; break; case 0x01: lock_OC = "ǿ��״̬"; break; case 0x02: lock_OC = "����״̬"; break; default: lock_OC = "δ֪״̬"; break; } oPars = new Gate_Rlt(comAdr, beforeLevel, behindLevel, height, flux, reWater, tuWater, power, lock_OC); }