ENA13条码转换函数

最近一个VB项目里需要做ENA-13的条码处理,一开始用了很多字体打,可就是不能被扫描,在网上查了相关资料后才知道ENA-13的编码规则,呼呼,
在网上想找相关的VB代码可找没找着,只能用这个规则自己写一个C#及VB函数了,以备日后再用,也为各位需要的同志服务

VB Code
 1 None.gif ' ENA-13条码转换函数
 2 None.gif' 调用此函数打印时推荐使用EanBwrP36Tt,EanBwrP36xTt等同类字体
 3 None.gif' ENA-13条码格式可参考:http://www.enpot.com.cn/zhishi/barcode302.htm
 4 None.gif' Copyright(c) 2001-2006 by S.B.Z. Studio
 5 None.gif' Pvistely 2006-07-17
 6 None.gif Public   Function  ENA13Encoder(pSCode  As   String As   String
 7 None.gif   Dim  tmpRuleStr  As   String , tmpHandleStr  As   String
 8 None.gif   Dim  tmpRule, tmpHandle
 9 None.gif   If   Len (pSCode)  <>   13   Then   Exit   Function
10 None.gif  ' 左资料码格式
11 None.gif   tmpRuleStr  =   " AAAAAA,AAAAAA,AABABB,AABBAB,AABBBA,ABBAAB,ABBBAA,ABABAB,ABABBA,ABBABA "
12 None.gif   ' 导入值符号
13 None.gif   tmpHandleStr  =   " # $ % & ' ( ) * + , "
14 None.gif  tmpRule  =   Split (tmpRuleStr,  " , " )
15 None.gif  tmpHandle  =   Split (tmpHandleStr,  "   " )
16 None.gif   Dim  tmpStr  As   String
17 None.gif   Dim  tmpStr2  As   Integer
18 None.gif   Dim  i, j
19 None.gif   If   Not   IsNumeric (pSCode)  Then  ENA13Encoder  =   "" Exit   Function
20 None.gif  tmpRuleStr  =  tmpRule(Val( Left (pSCode,  1 )))
21 None.gif  tmpHandleStr  =  tmpHandle(Val( Left (pSCode,  1 )))
22 None.gif   ' 第一位(导入值)加左护线
23 None.gif   tmpStr  =  tmpHandleStr  &   " ! "
24 None.gif   ' 第二至七位(左资料码)
25 None.gif    For  i  =   1   To   6
26 None.gif    tmpStr2  =   Mid (pSCode, i  +   1 1 )
27 None.gif     If   Mid (tmpRuleStr, i,  1 =   " A "   Then
28 None.gif      tmpStr  =  tmpStr  &   Mid (pSCode, i  +   1 1 )
29 None.gif     Else
30 None.gif      tmpStr  =  tmpStr  &   Chr (Val( Mid (pSCode, i  +   1 1 ))  +   65 )
31 None.gif     End   If
32 None.gif   Next
33 None.gif   ' 中分符
34 None.gif   tmpStr  =  tmpStr  &   " - "
35 None.gif   ' 第八至十三位(右资料码,包括校验位)
36 None.gif    For  i  =   7   To   12
37 None.gif    tmpStr  =  tmpStr  &   Chr (Val( Mid (pSCode, i  +   1 1 ))  +   97 )
38 None.gif   Next
39 None.gif  ' 函数返回时加右护线
40 None.gif   ENA13Encoder  =  tmpStr  &   " ! "
41 None.gif End Function

C# Code
 1 ExpandedBlockStart.gif ContractedBlock.gif      /**/ /// <summary>
 2InBlock.gif    /// Ena-13编码转换函数
 3InBlock.gif    /// 调用此函数打印时推荐使用EanBwrP36Tt,EanBwrP36xTt等同类字体
 4InBlock.gif    /// ENA-13条码格式可参考:http://www.enpot.com.cn/zhishi/barcode302.htm
 5InBlock.gif    /// Copyright(c) 2001-2006 by S.B.Z. Studio
 6InBlock.gif    /// Pvistely 2006-07-17
 7InBlock.gif    /// </summary>
 8InBlock.gif    /// <param name="pCode">带效验位13位数字串</param>
 9ExpandedBlockEnd.gif    /// <returns> ENA-13编码</returns>

10 None.gif      public   static   string  ENA13Encoder( string  pCode)
11 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
12InBlock.gif      string tmpRuleStr = "AAAAAA,AAAAAA,AABABB,AABBAB,AABBBA,ABBAAB,ABBBAA,ABABAB,ABABBA,ABBABA";
13InBlock.gif      string tmpHandleStr = "# $ % & ' ( ) * + ,";
14ExpandedSubBlockStart.gifContractedSubBlock.gif      string[] tmpRule = tmpRuleStr.Split(new char[] dot.gif',' });
15ExpandedSubBlockStart.gifContractedSubBlock.gif      string[] tmpHandle = tmpHandleStr.Split(new char[] dot.gif' ' });
16InBlock.gif      if (!Microsoft.VisualBasic.Information.IsNumeric(pCode)) return "";
17InBlock.gif      string tmpStr = "";
18InBlock.gif      string tmpStr2 = "";
19InBlock.gif      tmpRuleStr = tmpRule[Convert.ToInt32(pCode.Substring(01))];
20InBlock.gif      tmpHandleStr = tmpHandle[Convert.ToInt32(pCode.Substring(01))];
21InBlock.gif      //第一位
22InBlock.gif      tmpStr = tmpHandleStr + "!";
23InBlock.gif      //第二至七位
24InBlock.gif      for (int i = 1; i <= 6; i++)
25ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
26InBlock.gif        tmpStr2 = pCode.Substring(i, 1);
27InBlock.gif        if (tmpRuleStr.Substring(i - 11== "A")
28InBlock.gif          tmpStr += pCode.Substring(i, 1);
29InBlock.gif        else 
30InBlock.gif          tmpStr += (char)(Convert.ToInt32(pCode.Substring(i, 1)) + 65);
31ExpandedSubBlockEnd.gif      }

32InBlock.gif      //中分符
33InBlock.gif      tmpStr += "-";
34InBlock.gif      //第八至十三位
35InBlock.gif      for (int i = 7; i <= 12; i++)
36InBlock.gif        tmpStr += (char)(Convert.ToInt32(pCode.Substring(i, 1)) + 97);
37InBlock.gif      //加右护线
38InBlock.gif      return tmpStr + "!";
39ExpandedBlockEnd.gif    }

40 None.gif

转载于:https://www.cnblogs.com/pvistely/archive/2006/07/17/452952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值