39码 128B码解决方案

39码可以直接用字体代替,来字符前后都加下“*”,即可被条码枪识别。

128B码的话,用字体加算法的方法才行,要计算开始位、校验位、结束位。

VBA计算方法:

View Code
 1 Function code128b(Tar As Range)   '128B码:ChrW(204).
 2  Dim s$, i%, ss$, j%, curR%, checkB%
 3  curR = Tar.Row
 4  s = Tar.Value
 5  checkB = 1  '开始位的码值为104 mod 103 =1
 6  For i = 1 To Len(s)
 7      ss = Mid(s, i, 1)
 8      j = Asc(ss) '不过滤无效字符,比如汉字.
 9      If j < 135 Then
10          j = j - 32
11      ElseIf j > 134 Then
12          j = j - 100
13      End If
14      checkB = (checkB + i * j) Mod 103   '计算校验位
15  Next
16  If checkB < 95 And checkB > 0 Then  '有的资料直接求103的模,解说不充分,因为有的校验位超过127时,系统会"吃"掉它们(连带休止符).
17      checkB = checkB + 32
18  ElseIf checkB > 94 Then '字体设置时,字模被定义了2个值.观察字体文件时能发现.
19      checkB = checkB + 100
20  End If
21  code128b = ChrW(204) & s & IIf(checkB, ChrW(checkB), Chr(32)) & ChrW(206)
22  End Function


C#计算方法:

 

View Code
 1  private string Get128CodeString(string inputData)
 2         {
 3             string result;
 4             int checksum = 104;
 5             for (int ii = 0; ii < inputData.Length; ii++)
 6             {
 7                 if (inputData[ii] >= 32)
 8                 {
 9                     checksum += (inputData[ii] - 32) * (ii + 1);
10                 }
11                 else
12                 {
13                     checksum += (inputData[ii] + 64) * (ii + 1);
14                 }
15             }
16             checksum = checksum % 103;
17             if (checksum < 95)
18             {
19                 checksum += 32;
20             }
21             else
22             {
23                 checksum += 100;
24             }
25             result = Convert.ToChar(204) + inputData.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);
26             return result;
27         }

 

 

转载于:https://www.cnblogs.com/yycxy/archive/2012/05/21/2511555.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值