CODE128一般不需要校验位,目前也没有关于128码校验位算法的说明。需要用到校验位的是EAN-13码,这种条码一般是用在商品上的,最后一位校验位是根据前12位数字经过一定的算法而生成的,并不是手工算出来的。山东青岛艾讯条码技术小组提供 www.ausense.com
128码的结构
128码开始于1981年推出,是一种长度可变、连续性的字母数字条形码。与其它一维条形码比较起来,128码是较为复杂的条形码系统,而其所能支持的字符也相对地比其它一维条形码来得多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。128码的内容大致亦分为起始码、资料码、终止码、检查码等四部份,其中检查码是可有可无的。
128码的编码方式
128码有三种不同类型的编码方式,而欲选择何种编码方式,则决定于起始码的内容。 128码采用三个字符集,分别为字符集A、字符集B、字符集C。字符集A包括所有标准的大写英文字母、数字字符、控制字符、特殊字符及辅助字符;字符集B包括所有标准的大写和小写英文字母、数字字符、特殊字符及辅助字符;字符集C包括00~99的100个数字以及辅助字符。因为字符集C中的一个条码字符表示两个数字字符,因此使用该字符集表示数信息可以比其它字符集信息量增加一倍,即条码符号的密度提高一倍。这三个字符集的交替使用可将127个ASCII码编码。三个字符集之前可以能过SHIFT A 、SHIFT B、SHIFT C进行字符集之间的转换。
无论是采用A、B、C何种编码方式,128码的终止码均为固定的一种型态,其逻辑型态皆为1100011101011。
128码的特性
128码具有下列特性:
1. 具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字符的编码使用。
2. 允许双向的扫瞄处理。
3. 可自行决定是否要加上检查码。
4. 条形码长度可自由调整,但包括起码和终止码在内,不可超过232个字符。
同一个128码,可以不同的方式多以编码。藉由A、B、C三种不同编码规则的互换可扩大字符选择的范围,也可缩短编码的长度。
DataToEncode=Session("PstrSum")
PrintableString = ""
WeightedTotal = 104
PrintableString = Chr(204)
StringLength = len(DataToEncode)
For I = 1 To StringLength
CurrentCharNum = Asc(Mid(DataToEncode, I, 1))
If CurrentCharNum < 135 Then CurrentValue = CurrentCharNum - 32
If CurrentCharNum > 134 Then CurrentValue = CurrentCharNum - 100
CurrentValue = CurrentValue * I
WeightedTotal = WeightedTotal + CurrentValue
If CurrentCharNum = 32 Then CurrentCharNum = 194
PrintableString = PrintableString & Chr(CurrentCharNum)
next
CheckDigitValue = (WeightedTotal Mod 103)
If CheckDigitValue < 95 And CheckDigitValue > 0 Then C128CheckDigit = Chr(CheckDigitValue + 32)
If CheckDigitValue > 94 Then C128CheckDigit = Chr(CheckDigitValue + 100)
If CheckDigitValue = 0 Then C128CheckDigit = Chr(194)
PrintableString = PrintableString + C128CheckDigit + Chr(206) + " "