예제 #1
0
        public unsafe void AtualizarCRC()
        {
            Byte[] dados = toByteArray();

            fixed(byte *pSrc = dados)
            {
                FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc;

                this.crc = CalcularCRC(dados);
            }
        }
예제 #2
0
        public bool VerificarCRC(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoParametrosFixos *parametros = (FormatoParametrosFixos *)pSrc;

                    return(parametros->crc == CalcularCRC(dados));
                }
            }
        }
예제 #3
0
        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];
                    }
                }
            }
        }
예제 #4
0
        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];
                    }
                }
            }
        }
예제 #5
0
        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)&parametros->crc - (int)pSrc);
                Array.Copy(dados, ((int)&parametros->crc - (int)pSrc + sizeof(UInt16)), dadosCRC,
                           (int)&parametros->crc - (int)pSrc,
                           sizeof(FormatoParametrosFixos) - ((int)&parametros->crc - (int)pSrc + sizeof(UInt16)));

                return(CRC16CCITT.Calcular(dadosCRC));
            }
        }
예제 #6
0
        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);
                }
            }
        }
예제 #7
0
        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);
                }
            }
        }