public PowerInfo(byte [] data) { if (data.Length != 9) { Logger.Instance().Error("PowerInfo实例化失败,没有9个字节!"); } else { m_Head[0] = data[0]; m_Head[1] = data[1]; m_Length = data[2]; //m_PID =(ProductID)data[3]; m_Pump2PC = data[4]; m_MessageID = data[5]; m_AppDC = data[6]; if (Enum.IsDefined(typeof(PumpPowerStatus), data[7])) { m_PowerStatus = (PumpPowerStatus)data[7]; } else { m_PowerStatus = PumpPowerStatus.External; } m_CheckCode = data[8]; } }
static private VPump100Data[] ConvertToVPump100Datas(DataTable datatable, out int createCount) { NullOrDBNullConverter nc = new NullOrDBNullConverter(0f); createCount = 0; List <VPump100Data> list = new List <VPump100Data>(); foreach (DataRow row in datatable.Rows) { DateTime dt = Convert.ToDateTime(row[ColumnNamesForPump.StrTime]); float instantFlux = Convert.ToSingle(nc.Convert(row[ColumnNamesForPump.Flux])); float efficienty = Convert.ToSingle(nc.Convert(row[ColumnNamesForPump.Efficiency])); float sum = Convert.ToSingle(nc.Convert(row[ColumnNames.TuWater])); float remain = Convert.ToSingle(nc.Convert(row[ColumnNames.ReWater])); PumpStatus pumpStatus = VPumpStatusParser.ParsePumpStatus(row[ColumnNamesForPump.PumpStatus].ToString()); ForceStartStatus forceStatus = VPumpStatusParser.ParseForceStartStatus(row[ColumnNamesForPump.ForceRun].ToString()); VibrateStatus vibrateStatus = VPumpStatusParser.ParseVibrateStatus(row[ColumnNamesForPump.Vibrate].ToString()); PumpPowerStatus powerStatus = VPumpStatusParser.ParsePowerStatus(row[ColumnNamesForPump.Power].ToString()); VPump100Data data = new VPump100Data(); data.DT = dt; data.InstantFlux = instantFlux; data.Efficiency = efficienty; data.TotalAmount = sum; data.RemainAmount = remain; data.PumpStatus = pumpStatus; data.ForceStartStatus = forceStatus; data.VibrateStatus = vibrateStatus; data.PowerStatus = powerStatus; list.Add(data); if (list.Count >= 5) { break; } } createCount = list.Count; while (list.Count < 5) { list.Add(new VPump100Data()); } return(list.ToArray()); }
/// <summary> /// /// </summary> /// <param name="bs"></param> /// <param name="startIndex"></param> /// <returns></returns> static public VPump100Data ToVPump100Data(byte[] bs, int startIndex) { int start = startIndex; Int64 ticks = BitConverter.ToInt64(bs, start); start += 8; float instantFlux = BitConverter.ToSingle(bs, start); start += 4; float eff = BitConverter.ToSingle(bs, start); start += 4; float total = BitConverter.ToSingle(bs, start); start += 4; float remain = BitConverter.ToSingle(bs, start); start += 4; PumpStatus pumpStatus = (PumpStatus)bs[start++]; ForceStartStatus forceStartStatus = (ForceStartStatus)bs[start++]; VibrateStatus vibrateStatus = (VibrateStatus)bs[start++]; PumpPowerStatus powerStatus = (PumpPowerStatus)bs[start++]; VPump100Data data = new VPump100Data(); data.DT = new DateTime(ticks); data.InstantFlux = instantFlux; data.Efficiency = eff; data.ForceStartStatus = forceStartStatus; data.PowerStatus = powerStatus; data.PumpStatus = pumpStatus; data.RemainAmount = remain; data.TotalAmount = total; data.VibrateStatus = vibrateStatus; return(data); }