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