/// <summary> /// /// </summary> /// <param name="bs"></param> /// <returns></returns> static internal LYR001StatusData Parse(byte[] bs) { if (bs == null) { throw new ArgumentNullException("bs"); } if (bs.Length < 3) { throw new ArgumentException("bs.Length must >= 3"); } BitArray list = new BitArray(bs); PumpStatus cm1 = GetPumpStatus(list, 0, 3); PumpStatus cm2 = GetPumpStatus(list, 1, 4); PumpStatus cm3 = GetPumpStatus(list, 2, 5); PumpStatus rm1 = GetPumpStatus(list, 6, 8); PumpStatus rm2 = GetPumpStatus(list, 7, 9); ManualAutomatic ma = GetManualAutomatic(list, 10); List <string> alarmList = GetAlarmList(list, 12); //BitArray list LYR001StatusData r = new LYR001StatusData(cm1, cm2, cm3, rm1, rm2, ma, alarmList); return(r); }
/// <summary> /// /// </summary> /// <param name="task"></param> /// <param name="pr"></param> private void ProcessReadStatus(ITask task, IParseResult pr) { byte[] bs = (byte[])pr.Results["Status"]; LYR001StatusData statusData = LYR001StatusDataParser.Parse(bs); LYR001Device d = (LYR001Device)task.Device; LYR001DataCache cache = d.DataCacheManager.GetDataCache(); cache.StatusData = statusData; ProcessDataCache(d, cache); }