/// <summary> /// Contrutor via Código de barras /// </summary> /// <param name="barcode">Código de Barras</param> /// <param name="serial">Série</param> /// <param name="Filter">Filter</param> /// <param name="part">Partição</param> public Sgtin96(string barcode, long serial, string Filter, int part = 6) { //Se vier com "0" no inicio if (barcode.Substring(0, 1) == "0") { barcode = barcode.Substring(1, barcode.Length - 1); } //preenche com "0" se não for um ean 13 barcode = HelperConverter.fill(barcode, 12); this.Header = EpcHeaders.GetName(EpcHeaders.SGTIN_96); this.Filter = Filter; this.Partition = part; string auxbarcode = barcode.Substring(0, (barcode.Length - 1)); this.CompanyPrefix = Convert.ToInt64(HelperConverter.fill(auxbarcode.Substring(0, SgtinPartition.GetCompanyDigitos(this.Partition)), SgtinPartition.GetCompanyDigitos(this.Partition))); this.ItemReference = Convert.ToInt64( HelperConverter.fill( auxbarcode.Substring(SgtinPartition.GetCompanyDigitos(this.Partition), (auxbarcode.Length - SgtinPartition.GetCompanyDigitos(this.Partition))), SgtinPartition.GetItemDigitos(this.Partition))); this.SerialNumber = serial; this.Barcode = barcode; }
/// <summary> /// Método de Codificação segundo o Padrão EPC /// </summary> /// <returns>Objeto Simplicado do padrão</returns> public EPCSimplesDTO Encript() { string Header = EpcHeaders.GetBin(this.Header); string Filter = HelperConverter.fill(Convert.ToString(Convert.ToInt32(this.Filter), 2), 3); string Partition = HelperConverter.fill(Convert.ToString(this.Partition, 2), 3); string CompanyPrefix = HelperConverter.fill(Convert.ToString(this.CompanyPrefix, 2), GiaiPartition.GetCompany(this.Partition)); string ItemReference = HelperConverter.fill(Convert.ToString(this.ItemReference, 2), GiaiPartition.GetItem(this.Partition)); string BinString = $"{Header}{Filter}{Partition}{CompanyPrefix}{ItemReference}"; EPCSimplesDTO retorno = new EPCSimplesDTO(); retorno.BarCode = this.Barcode; retorno.EPCString = EpcTagURI(); retorno.HexadecimalString = HelperConverter.BinaryStringToHexString(BinString); return(retorno); }
/// <summary> /// Método de geração do EPC. /// </summary> /// <param name="Parametro">Tipo primitivo GS1</param> /// <returns></returns> public static EPCSimplesDTO SerializarGenerico(GS1 Parametro) { switch (EpcHeaders.GetBin(Parametro.Header)) { case EpcHeaders.SGTIN_96: return(new Sgtin96(Parametro).Encript()); case EpcHeaders.GRAI_96: return(new Grai96(Parametro).Encript()); case EpcHeaders.GIAI_96: return(new Giai96(Parametro).Encript()); default: return(null); } }
/// <summary> /// Método de Decodificação da string binária para valores legíveis /// </summary> /// <param name="linhaBinaria">Descriptografa a string Binária no padrão GS1</param> public void Decript(string linhaBinaria) { int posicaoInicial = 0; this.Header = EpcHeaders.GetName(linhaBinaria.Substring(posicaoInicial, 8)); posicaoInicial += 8; this.Filter = Convert.ToInt32(linhaBinaria.Substring(posicaoInicial, 3), 2).ToString(); posicaoInicial += 3; this.Partition = Convert.ToInt32(linhaBinaria.Substring(posicaoInicial, 3), 2); posicaoInicial += 3; this.CompanyPrefix = Convert.ToInt64(linhaBinaria.Substring(posicaoInicial, GraiPartition.GetCompany(this.Partition)), 2); posicaoInicial += GraiPartition.GetCompany(this.Partition); this.ItemReference = Convert.ToInt64(linhaBinaria.Substring(posicaoInicial, GraiPartition.GetItem(this.Partition)), 2); posicaoInicial += GraiPartition.GetItem(this.Partition); this.SerialNumber = Convert.ToInt64(linhaBinaria.Substring(posicaoInicial, 38), 2); }
/// <summary> /// Método de Decodificação da string binária para valores legíveis /// </summary> /// <param name="linhaBinaria">Descriptografa a string Binária no padrão GS1</param> public void Decript(string linhaBinaria) { int posicaoInicial = 0; string part = linhaBinaria.Substring(posicaoInicial, 8); this.Header = EpcHeaders.GetName(part); posicaoInicial += 8; part = linhaBinaria.Substring(posicaoInicial, 3); this.Filter = Convert.ToInt32(part, 2).ToString(); posicaoInicial += 3; part = linhaBinaria.Substring(posicaoInicial, 3); this.Partition = Convert.ToInt32(part, 2); posicaoInicial += 3; part = linhaBinaria.Substring(posicaoInicial, GiaiPartition.GetCompany(this.Partition)); this.CompanyPrefix = Convert.ToInt64(part, 2); posicaoInicial += GiaiPartition.GetCompany(this.Partition); part = linhaBinaria.Substring(posicaoInicial, GiaiPartition.GetItem(this.Partition)); this.ItemReference = Convert.ToInt64(part, 2); posicaoInicial += GiaiPartition.GetItem(this.Partition); }
public static EPCSimplesDTO EncriptFiltro(GS1 Parametro, string barcode = "", long serial = 0, int partition = 6) { if (barcode.Length == 0) { switch (EpcHeaders.GetBin(Parametro.Header)) { case EpcHeaders.SGTIN_96: return(new Sgtin96(Parametro).Encript()); case EpcHeaders.GRAI_96: return(new Grai96(Parametro).Encript()); case EpcHeaders.GIAI_96: return(new Giai96(Parametro).Encript()); default: return(null); } } else { return(new Sgtin96(barcode, serial, partition).Encript()); } }