/* * /// <summary> * /// 根据EPC获取GTIN * /// </summary> * /// <param name="epc"></param> * /// <returns></returns> * public string GetGtin(string epc) * { * var epcBinary = Utils.HexToBinary(epc); * var partitionBinary = epcBinary.Substring(s_headerBits + s_filterValueBits,s_partitionBits); * var partition = Convert.ToInt32(partitionBinary, 2).ToString(); * var companyPrefixAndItemReferenceBinary = epcBinary.Substring(s_headerBits + s_filterValueBits + s_partitionBits,s_gtinBits); * * return GtinManager.ToGtin(companyPrefixAndItemReferenceBinary, partition); * } * */ /// <summary> /// 根据现有EPC更改serailNumber /// </summary> /// <param name="epc">24位十六进制数据</param> /// <param name="serialNumber">序列号</param> /// <returns></returns> public string ToEpc(string epc, string serialNumber) { var epcBinary = Utils.HexToBinary(epc); //var epcBinaryWithoutSerialNumber = epcBinary.Substring(s_headerBits + s_filterValueBits + s_partitionBits + s_gtinBits, s_serialNbrBits); var epcBinaryWithoutSerialNumber = epcBinary.Substring(0, s_headerBits + s_filterValueBits + s_partitionBits + s_gtinBits); var serialNumberBinary = Convert.ToString(long.Parse(serialNumber), 2).PadLeft(s_serialNbrBits, '0'); return(EpcManager.BinaryEpcToHex(epcBinaryWithoutSerialNumber + serialNumberBinary)); }
/// <summary> /// 转成24位十六进制EPC 二进制为96位 /// </summary> /// <param name="header">96 bit GTIN</param> /// <param name="filterValue">Selling Unit</param> /// <param name="partition">7 digit Mfg Nbr including number system characters</param> /// <param name="upc">UPC will convert to GTIN</param> /// <param name="serialNumber">Serial Nbr assigned by EPC Mgr for item</param> /// <returns></returns> public static string UpcConvertEpc(string header, string filterValue, string partition, string upc, string serialNumber) { var gtin = new GtinManager(upc, partition); var headerBinary = Convert.ToString(int.Parse(header), 2).PadLeft(s_headerBits, '0'); var filterValueBinary = Convert.ToString(int.Parse(filterValue), 2).PadLeft(s_filterValueBits, '0'); var partitionBinary = Convert.ToString(int.Parse(partition), 2).PadLeft(s_partitionBits, '0'); var gtinBinary = gtin.ToBinaryString(); var serialNumberBinary = Convert.ToString(long.Parse(serialNumber), 2).PadLeft(s_serialNbrBits, '0'); var epcBinary = string.Format("{0}{1}{2}{3}{4}", headerBinary, filterValueBinary, partitionBinary, gtinBinary, serialNumberBinary); return(EpcManager.BinaryEpcToHex(epcBinary)); }
/// <summary> /// 解析EPC /// </summary> /// <param name="epc">24位十六进制的EPC</param> public static EpcManager Parse(string epc) { var epcBinary = Utils.HexToBinary(epc); var headerBinary = epcBinary.Substring(0, s_headerBits); var header = Convert.ToInt32(headerBinary, 2).ToString(); var filterValueBinary = epcBinary.Substring(s_headerBits, s_filterValueBits); var filterValue = Convert.ToInt32(filterValueBinary, 2).ToString(); var partitionBinary = epcBinary.Substring(s_headerBits + s_filterValueBits, s_partitionBits); var partition = Convert.ToInt32(partitionBinary, 2).ToString(); var companyPrefixAndItemReferenceBinary = epcBinary.Substring(s_headerBits + s_filterValueBits + s_partitionBits, s_gtinBits); var serialNumberBinary = epcBinary.Substring(s_headerBits + s_filterValueBits + s_partitionBits + s_gtinBits, s_serialNbrBits); var serialNumber = Convert.ToInt64(serialNumberBinary, 2).ToString(); EpcManager epcManager = new EpcManager(header, filterValue, partition); epcManager.GTIN = GtinManager.ToGtinManager(companyPrefixAndItemReferenceBinary, partition); epcManager.SerialNumber = serialNumber; return(epcManager); }
/// <summary> /// 生成24位十六进制的EPC 调用方法 EpcManager.UpcConvertEpc 实现 /// </summary> /// <param name="upc"></param> /// <param name="serialNumber"></param> /// <returns></returns> public string GetEpc(string upc, string serialNumber) { return(EpcManager.UpcConvertEpc(this.Header, this.FilterValue, this.Partition, upc, serialNumber)); }