Code128字體不可識別處理


C39字體"條"過細(前后帶*),打印精度不夠或磨損,就不易識別,轉而使用Code128.

但直接用Code128字體做出的條形碼掃描設備識別不了.后查閱才發現Code128字體與Code128條碼並不是一回事.

現記錄轉換方法於下:

 class Code128ex
    {
        /// <summary>
        /// 轉換成Code128A
        /// </summary>
        public static string ExCode128A(string barcode)
        {
            string result = "";
            int checksum = 103;
            int j = 1;
            for (int ii = 0; ii < barcode.Length; ii++)
            {
                if (barcode[ii] >= 32)
                {
                    checksum += (barcode[ii] - 32) * (ii + 1);
                }
                else
                {
                    checksum += (barcode[ii] + 64) * (ii + 1);
                }
            }
            checksum = checksum % 103;
            if (checksum < 95)
            {
                checksum += 32;
            }
            else
            {
                checksum += 100;
            }
            result = Convert.ToChar(203) + barcode.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);
            return result;
        }
        /// <summary>
        /// 轉換成Code128B
        /// </summary>
        public static string ExCode128B(string barcode)
        {
            string result = "";
            int checksum = 104;
            int j = 1;
            for (int ii = 0; ii < barcode.Length; ii++)
            {
                if (barcode[ii] >= 32)
                {
                    checksum += (barcode[ii] - 32) * (ii + 1);
                }
                else
                {
                    checksum += (barcode[ii] + 64) * (ii + 1);
                }
            }
            checksum = checksum % 103;
            if (checksum < 95)
            {
                checksum += 32;
            }
            else
            {
                checksum += 100;
            }
            result = Convert.ToChar(204) + barcode.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);
            return result;
        }
        /// <summary>
        /// 轉換成Code128C
        /// </summary>
        public static string ExCode128C(string barcode)
        {
            string result = "";
            int checksum = 105;
            int j = 1;
            for (int ii = 0; ii < barcode.Length; ii++)
            {
                if (ii % 2 == 0)
                {
                    checksum += Convert.ToInt32(barcode.Substring(ii, 2)) * j;
                    if (Convert.ToInt32(barcode.Substring(ii, 2)) < 95)
                    {
                        result += Convert.ToChar(Convert.ToInt32(barcode.Substring(ii, 2)) + 32);
                    }
                    else
                    {
                        result += Convert.ToChar(Convert.ToInt32(barcode.Substring(ii, 2)) + 100);
                    }
                    j++;
                }
                ii++;
            }
            checksum = checksum % 103;
            if (checksum < 95)
            {
                checksum += 32;
            }
            else
            {
                checksum += 100;
            }
            result = Convert.ToChar(205) + result + Convert.ToChar(checksum) + Convert.ToChar(206);
            return result;
        }
    }
View Code

 

另:
如何看懂Code128條形碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM