Code128

    128条码符号由以下部分组成:

1)左侧空白区

2)起始字符

3)表示数据和特殊字符的一个或多个符号字符

4)符号校验字符

5)终止字符

6)右侧空白区

      在条码中每个字符都是由11个模块组成,其中条(黑色)的模块数的和是偶数,空(白色)的模块数的和是奇数。该奇偶特性保证字符的自动校验功能。128码有3个独立的数据字符集:字符集A,字符集B,字符集C。查看一个128采用的是那个字符集,可以通过该条码的起始字符而得知。如果起始字符以START A开始,则可以确定该条码采用的是字符集A,如果以START B开始,则可以确定该条码采用的是字符集B,否则是字符集C。不同的字符集包括的内容是不同的。

     字符集A包括所有的大写字母、数字字符、标点字符、控制字符(ASCII值为00到95的字符)以及7个特殊字符;

     字符集B包括所有的大写字母、数字字符、标点符号、小写字母字符(ASCII值为32到127的字符)以及7个特殊字符。

     字符集C包括100个数据(00--99)以及3个特殊字符。选用字符集C是,用一个符号字符表示两位数字。

     对于特殊字符,在ASCII中没有对应的值。但是他们对条码识读设备有特定的意义。对于字符集C,因为一个符号字符表示两位数字,所以只能打印出数字条码,并且只能是偶数位。对于字符集B包括的内容是128码中最全的,所以在实际的应用中128B是最常用的。

    对于条码打印,如果是通过专门的条码打印机(zebra,Intermec....)都会有自己的打印机语言(zebra:ZPL,Intermec:FP,IPL...),可以先用条码软件(BarTender)设计好打印模板,生成模板文件,根据需要替换里面要打印的内容,将打印模板通过一定的方式(COM,网口,LPT口)发送到打印机就可以直接打印出来了。如果是一般的打印机打印,就需要通过画图的方式或者下载字体打印。要通过画图的方式,主要的一个难点是要知道对应字符的条(黑)空(白)比。比如大写字母A的黑白分配是:111323即1黑1白1黑3白2黑3白,画图的时候只要将黑色的都画出来就行了。下面给出一段简单的代码:

  protected virtual void DrawSingleBar(string bar)
        {
            if ((bar != null) && (bar.Length != 0))
            {
                for (int i = 0; i < bar.Length; i += 2)//每次增加2,获得黑色码块
                {
                    char ch = bar[i];
                    int width = int.Parse(ch.ToString()) * this.LineWidth;//LineWidth每个块的宽度,默认是2
                    this.g.FillRectangle(this.BarBrush, this.Left, this.Top, width, this.BarHeight);
                    this.Left += width;
                    if ((i + 1) < bar.Length)//计算白块的宽度
                    {
                        ch = bar[i + 1];
                        this.Left += int.Parse(ch.ToString()) * this.LineWidth;
                    }
                }
            }
        }

对于默认的每个块的宽度,最小的是2,最大的是7,具体的算法可查找128码的编码规则。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值