private void FromBytesToFormatoPainelCfg(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoRegiao *regiao = (FormatoRegiao *)pSrc;

                    this.versao             = regiao->versao;
                    this.formatoDataHora    = regiao->formatoDataHora;
                    this.unidadeVelocidade  = regiao->unidadeVelocidade;
                    this.unidadeTemperatura = regiao->unidadeTemperatura;
                    this.opcaoAmPm_Ponto    = regiao->opcaoAmPm_Ponto;
                    this.moeda            = regiao->moeda;
                    this.separadorDecimal = regiao->separadorDecimal;
                    for (int i = 0; i < 16; i++)
                    {
                        this.nome[i] = regiao->nome[i];
                    }

                    for (int i = 0; i < 40; i++)
                    {
                        this.reservado[i] = regiao->reservado[i];
                    }

                    this.crc = regiao->crc;

                    for (int i = 0; i < 64; i++)
                    {
                        this.idiomaPath[i] = regiao->idiomaPath[i];
                    }
                }
            }
        }
        /*
         *
         * public void Salvar(string arquivoNome, ControladorPontos.Controlador Ctrldr)
         * {
         *
         *  for(int painel = 0; painel < Ctrldr.QuantidadePaineis; painel++)
         *  {
         *      Salvar(arquivoNome);
         *  }
         *
         * }
         */
        public unsafe void AtualizarCRC()
        {
            Byte[] dados = toByteArray();

            fixed(byte *pSrc = dados)
            {
                FormatoRegiao *regiao = (FormatoRegiao *)pSrc;

                this.crc = CalcularCRC(dados);
            }
        }
        public bool VerificarCRC(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoRegiao *parametros = (FormatoRegiao *)pSrc;

                    return(parametros->crc == CalcularCRC(dados));
                }
            }
        }
        private unsafe UInt16 CalcularCRC(Byte[] dados)
        {
            int tamanho;

            Byte[] dadosCRC = new byte[sizeof(FormatoRegiao) - sizeof(UInt16)];

            fixed(byte *pSrc = dados)
            {
                FormatoRegiao *regiao = (FormatoRegiao *)pSrc;

                Array.Copy(dados, 0, dadosCRC, 0, (int)&regiao->crc - (int)pSrc);
                Array.Copy(dados, ((int)&regiao->crc - (int)pSrc + sizeof(UInt16)), dadosCRC,
                           (int)&regiao->crc - (int)pSrc,
                           sizeof(FormatoRegiao) - ((int)&regiao->crc - (int)pSrc + sizeof(UInt16)));

                return(CRC16CCITT.Calcular(dadosCRC));
            }
        }
        private byte[] toByteArray()
        {
            unsafe
            {
                Byte[] resultado = new Byte[sizeof(FormatoRegiao)];

                fixed(byte *pSrc = resultado)
                {
                    FormatoRegiao *regiao = (FormatoRegiao *)pSrc;

                    regiao->versao             = this.versao;
                    regiao->formatoDataHora    = this.formatoDataHora;
                    regiao->unidadeVelocidade  = this.unidadeVelocidade;
                    regiao->unidadeTemperatura = this.unidadeTemperatura;
                    regiao->moeda            = this.moeda;
                    regiao->separadorDecimal = this.separadorDecimal;
                    regiao->opcaoAmPm_Ponto  = this.opcaoAmPm_Ponto;
                    for (int i = 0; i < 16; i++)
                    {
                        regiao->nome[i] = this.nome[i];
                    }

                    for (int i = 0; i < 40; i++)
                    {
                        regiao->reservado[i] = this.reservado[i];
                    }

                    regiao->crc = this.crc;

                    for (int i = 0; i < 64; i++)
                    {
                        regiao->idiomaPath[i] = this.idiomaPath[i];
                    }

                    return(resultado);
                }
            }
        }