ENA13条码转换函数

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

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

C# Code
 1ExpandedBlockStart.gifContractedBlock.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>

10None.gif    public static string ENA13Encoder(string pCode)
11ExpandedBlockStart.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    }

40None.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、付费专栏及课程。

余额充值