Exemple #1
0
        /*
         * /// <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));
        }
Exemple #2
0
        /// <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));
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
 /// <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));
 }