public static RecordNo Parse(byte[] datas) { RecordNo r = new RecordNo(); r._fromAddress = datas[ADDRESS_POS]; r._currentHistoryRecordNo = BCDConvert.BCDToDec(datas[CURRENT_HISTORY_RECORDNO_POS]); r._currentPoweroffRecordNo = BCDConvert.BCDToDec(datas[CURRENT_POWEROFF_RECORDNO_POS]); r._currentVibratoRecordNo = BCDConvert.BCDToDec(datas[CURRENT_VIBRATO_RECORDNO_POS]); return(r); }
static public HistoryRecord Parse(byte[] datas) { HistoryRecord r = new HistoryRecord(); r._fromAddress = datas[ADDRESS_POS]; r._beginDateTime = new DateTime( BCDConvert.BCDToDec(datas[BEGIN_DATETIME_BEGIN_POS + 0]) + 2000, BCDConvert.BCDToDec(datas[BEGIN_DATETIME_BEGIN_POS + 1]), BCDConvert.BCDToDec(datas[BEGIN_DATETIME_BEGIN_POS + 2]), BCDConvert.BCDToDec(datas[BEGIN_DATETIME_BEGIN_POS + 3]), BCDConvert.BCDToDec(datas[BEGIN_DATETIME_BEGIN_POS + 4]), 0); r._endDatetTiem = new DateTime( BCDConvert.BCDToDec(datas[END_DATETIME_BEGIN_POS + 0]) + 2000, BCDConvert.BCDToDec(datas[END_DATETIME_BEGIN_POS + 1]), BCDConvert.BCDToDec(datas[END_DATETIME_BEGIN_POS + 2]), BCDConvert.BCDToDec(datas[END_DATETIME_BEGIN_POS + 3]), BCDConvert.BCDToDec(datas[END_DATETIME_BEGIN_POS + 4]), 0); // 获取用水量 // // 如:byte[] {0x00 0x01 0xE2 0x40} 表示 123456, // 使用的是高位在前低位在后,将其转换为低位在前高位在后形式, // 再使用BitConvert进行转换 // byte[] usedWQ = new byte[4]; Array.Copy(datas, USED_WATER_QUANTITY_BEGIN_POS, usedWQ, 0, 4); Array.Reverse(usedWQ); r._usedWaterQuantity = BitConverter.ToInt32(datas, USED_WATER_QUANTITY_BEGIN_POS); return(r); }