bool ReadArchiveValById(uint id, ref ArchiveValue archVal) { byte[] cmd = { m_addr, 0x2f, 0x05, 0x00 }; byte[] cmd_data = new byte[0x05]; //преобразуем целочисленные id в посл.байт от младшему к старшему byte[] id_bytes = BitConverter.GetBytes(id); if (!BitConverter.IsLittleEndian) Array.Reverse(id_bytes); //сформируем команду, где первый байт 0х02 - на начало суток (С2) cmd_data[0] = 0x02; Array.Copy(id_bytes, 0, cmd_data, 1, id_bytes.Length); byte[] data_arr = null; if (!SendPT01_CMD(cmd, ref data_arr, cmd_data)) return false; byte crc_check = CRC8(data_arr, data_arr.Length); if (crc_check != 0x0) { WriteToLog("ReadArchiveValById: check sum error"); return false; } try { ArchiveValueParser avp = new ArchiveValueParser(data_arr, this.m_address, this.m_vport); return avp.GetArchiveValue(ref archVal); } catch(Exception ex) { WriteToLog("ReadArchiveValById: " + ex.Message); return false; } }
bool ReadArchiveLastVal(ref ArchiveValue archVal) { byte[] cmd = { m_addr, 0x2e, 0x02, 0x00 }; byte[] cmd_data = { 0x02, 0x01 }; byte[] data_arr = null; if (!SendPT01_CMD(cmd, ref data_arr, cmd_data)) return false; byte crc_check = CRC8(data_arr, data_arr.Length); if (crc_check != 0x0) { WriteToLog("ReadLastArchiveVal: данные приняты неверно"); return false; } try { ArchiveValueParser avp = new ArchiveValueParser(data_arr, this.m_address, this.m_vport); avp.GetArchiveValue(ref archVal); } catch (Exception ex) { WriteToLog("ReadArchiveLastVal: " + ex.Message); return false; } return true; }