public unsafe void AtualizarCRC() { Byte[] dados = toByteArray(); fixed(byte *pSrc = dados) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; this.crc = CalcularCRC(dados); } }
public bool VerificarCRC(byte[] dados) { unsafe { fixed(byte *pSrc = dados) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; return(parametros->crc == CalcularCRC(dados)); } } }
private void FromBytesToFormatoParametrosFixos(byte[] dados) { unsafe { fixed(byte *pSrc = dados) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; this.versao = parametros->versao; this.horaBomDia = parametros->horaBomDia; this.horaBoaTarde = parametros->horaBoaTarde; this.horaBoaNoite = parametros->horaBoaNoite; this.qntPaineis = parametros->qntPaineis; this.tempoInverterLed = parametros->tempoInverterLed; this.painelNSS = parametros->painelNSS; for (int i = 0; i < 46; i++) { this.reservado4[i] = parametros->reservado4[i]; } this.crc = parametros->crc; this.segundosGeracao = parametros->segundosGeracao; for (int i = 0; i < 3; i++) { this.versaoSoftware[i] = parametros->versaoSoftware[i]; this.versaoHardware[i] = parametros->versaoHardware[i]; } this.ativaSenhaAntiFurto = Convert.ToBoolean(parametros->ativaSenhaAntiFurto); this.ativaLock = Convert.ToBoolean(parametros->opcaoLock); //for (int i = 0; i < 20; i++) //{ // this.labelBomDia[i] = parametros->labelBomDia[i]; // this.labelBoaTarde[i] = parametros->labelBoaTarde[i]; // this.labelBoaNoite[i] = parametros->labelBoaNoite[i]; //} //this.somenteHora = parametros->somenteHora; //this.dataHora = parametros->dataHora; //this.horaSaida = parametros->horaSaida; //this.temperatura = parametros->temperatura; //this.tarifa = parametros->tarifa; //this.horaTemperatura = parametros->horaTemperatura; for (int i = 0; i < 32; i++) { this.senhaAcessoEspecial[i] = parametros->senhaAcessoEspecial[i]; this.senhaAntiFurto[i] = parametros->senhaAntiFurto[i]; } } } }
private void FromBytesToFormatoParametrosFixos(byte[] dados) { unsafe { fixed(byte *pSrc = dados) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; this.versao = parametros->versao; this.horaBomDia = parametros->horaBomDia; this.horaBoaTarde = parametros->horaBoaTarde; this.horaBoaNoite = parametros->horaBoaNoite; this.qntPaineis = parametros->qntPaineis; this.tempoInverterLed = parametros->tempoInverterLed; this.baudRate = parametros->baudRate; //this.painelAPP_NSS = parametros->painelAPP_NSS; this.perifericoNaRede = parametros->perifericoNaRede; this.tempoAnimaSemComunicacao = parametros->tempoAnimaSemComunicacao; this.painelAPP = parametros->painelAPP; for (int i = 0; i < reservado4.Length; i++) { this.reservado4[i] = parametros->reservado4[i]; } this.crc = parametros->crc; this.segundosGeracao = parametros->segundosGeracao; for (int i = 0; i < 3; i++) { this.versaoSoftware[i] = parametros->versaoSoftware[i]; this.versaoHardware[i] = parametros->versaoHardware[i]; } this.ativaSenhaAntiFurto = Convert.ToBoolean(parametros->ativaSenhaAntiFurto); this.ativaLock = Convert.ToBoolean(parametros->opcaoLock); for (int i = 0; i < 32; i++) { this.senhaAcessoEspecial[i] = parametros->senhaAcessoEspecial[i]; this.senhaAntiFurto[i] = parametros->senhaAntiFurto[i]; } } } }
private unsafe UInt16 CalcularCRC(Byte[] dados) { int tamanho; Byte[] dadosCRC = new byte[sizeof(FormatoParametrosFixos) - sizeof(UInt16)]; fixed(byte *pSrc = dados) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; Array.Copy(dados, 0, dadosCRC, 0, (int)¶metros->crc - (int)pSrc); Array.Copy(dados, ((int)¶metros->crc - (int)pSrc + sizeof(UInt16)), dadosCRC, (int)¶metros->crc - (int)pSrc, sizeof(FormatoParametrosFixos) - ((int)¶metros->crc - (int)pSrc + sizeof(UInt16))); return(CRC16CCITT.Calcular(dadosCRC)); } }
private byte[] toByteArray() { unsafe { Byte[] resultado = new Byte[sizeof(FormatoParametrosFixos)]; fixed(byte *pSrc = resultado) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; parametros->versao = (Byte)this.versao; parametros->horaBomDia = this.horaBomDia; parametros->horaBoaTarde = this.horaBoaTarde; parametros->horaBoaNoite = this.horaBoaNoite; parametros->tempoInverterLed = this.tempoInverterLed; parametros->baudRate = this.baudRate; //parametros->painelAPP_NSS = this.painelAPP_NSS; parametros->painelAPP = this.painelAPP; parametros->funcao1 = this.funcoes.funcoes1; parametros->funcao2 = this.funcoes.funcoes2; parametros->ativaSenhaAntiFurto = Convert.ToByte(this.ativaSenhaAntiFurto); parametros->opcaoLock = Convert.ToByte(this.ativaLock); parametros->qntPaineis = this.qntPaineis; parametros->perifericoNaRede = this.perifericoNaRede; parametros->tempoAnimaSemComunicacao = this.tempoAnimaSemComunicacao; for (int i = 0; i < reservado4.Length; i++) { parametros->reservado4[i] = this.reservado4[i]; } parametros->crc = this.crc; this.segundosGeracao = (uint)(DateTime.UtcNow - new DateTime(2000, 1, 1, 0, 0, 0, 0)).TotalSeconds; parametros->segundosGeracao = this.segundosGeracao; String versao = Environment.Version.Major.ToString(); versao = versao + " | " + Environment.Version.MajorRevision.ToString() + " | " + Environment.Version.Minor.ToString() + " | " + Environment.Version.MinorRevision.ToString() + " | " + Environment.Version.Revision.ToString(); //parametros->versaoSoftware for (int i = 0; i < 3; i++) { parametros->versaoSoftware[i] = this.versaoSoftware[i]; parametros->versaoHardware[i] = this.versaoHardware[i]; } for (int i = 0; i < 32; i++) { parametros->senhaAcessoEspecial[i] = this.senhaAcessoEspecial[i]; parametros->senhaAntiFurto[i] = this.senhaAntiFurto[i]; } BitConverter.GetBytes(CalcularCRC(resultado)).CopyTo(resultado, 62); return(resultado); } } }
private byte[] toByteArray() { unsafe { Byte[] resultado = new Byte[sizeof(FormatoParametrosFixos)]; fixed(byte *pSrc = resultado) { FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc; parametros->versao = (Byte)this.versao; parametros->horaBomDia = this.horaBomDia; parametros->horaBoaTarde = this.horaBoaTarde; parametros->horaBoaNoite = this.horaBoaNoite; parametros->tempoInverterLed = this.tempoInverterLed; parametros->painelNSS = this.painelNSS; parametros->funcao1 = this.funcoes.funcoes1; parametros->funcao2 = this.funcoes.funcoes2; parametros->ativaSenhaAntiFurto = Convert.ToByte(this.ativaSenhaAntiFurto); parametros->opcaoLock = Convert.ToByte(this.ativaLock); parametros->qntPaineis = this.qntPaineis; for (int i = 0; i < 46; i++) { parametros->reservado4[i] = this.reservado4[i]; } parametros->crc = this.crc; //for (int i = 0; i < 20; i++) //{ // parametros->labelBomDia[i] = this.labelBomDia[i]; // parametros->labelBoaTarde[i] = this.labelBoaTarde[i]; // parametros->labelBoaNoite[i] = this.labelBoaNoite[i]; //} this.segundosGeracao = (uint)(DateTime.UtcNow - new DateTime(2000, 1, 1, 0, 0, 0, 0)).TotalSeconds; parametros->segundosGeracao = this.segundosGeracao; String versao = Environment.Version.Major.ToString(); versao = versao + " | " + Environment.Version.MajorRevision.ToString() + " | " + Environment.Version.Minor.ToString() + " | " + Environment.Version.MinorRevision.ToString() + " | " + Environment.Version.Revision.ToString(); //parametros->versaoSoftware for (int i = 0; i < 3; i++) { parametros->versaoSoftware[i] = this.versaoSoftware[i]; parametros->versaoHardware[i] = this.versaoHardware[i]; } //parametros->somenteHora = this.somenteHora; //parametros->dataHora = this.dataHora; //parametros->horaSaida = this.horaSaida; //parametros->temperatura = this.temperatura; //parametros->tarifa = this.tarifa; //parametros->horaTemperatura = this.horaTemperatura; for (int i = 0; i < 32; i++) { parametros->senhaAcessoEspecial[i] = this.senhaAcessoEspecial[i]; parametros->senhaAntiFurto[i] = this.senhaAntiFurto[i]; } BitConverter.GetBytes(CalcularCRC(resultado)).CopyTo(resultado, 62); return(resultado); } } }