最专业的工业工程技术网站-京华孤客的IE博客

原创与转载工业工程文章、实战经验,介绍最新工业工程软件,最新最好的工业工程资料下载。请记住我们的域名:www.ie-blog.com
An Industrial Engineering Blog

« [转载]扬子空调推进“精益生产管理模式”的实施[新闻]达索系统荣膺上海汽车最佳服务质量供应商奖 持续助力自主品牌腾飞 »

MES开发中一个检查条码正确性的方法

在MES系统中,条码的使用概率几乎是100%。MES通过在生产过程中接收产品条码,来达到记录和防错的目的。当扫描枪扫描到一个条码,传入MES软件中的时候,MES软件就要去判断这个条码是否符合规则。如何判断呢?这里提供一个方法。

首先,条码的编码规则无非就是0-9和A-Z的混排,当中包含固定字符和流水号,我们可以把所有条码表示成"#$*",#代表字符,$代表数字,*代表任何字符。这样几乎所有的条码都可以使用一个函数去识别了。例如:有一个条码"ABC1234CHINA0001",其中,ABC是字母,1234是数字,CHINA是固定字符,0001是流水号,那我们可以这样表示:###$$$$CHINA$$$$,如果有超出数字和字母之外的字符,可以用*号表示。基于上述基础,我们可以编制函数,检查条码。函数的原理是,传入条码和条码的表达式,首先检查条码的长度和表达式的长度是否一样,如果不符合,就报错,如果长度符合,那么就开始逐个检查每个字符,有任何一个不符合就报错。函数如下:

Public Function VerifyBarcodeFormat(VerifyStr As String, FormatStr As String) As Boolean
   Dim CharStrA, CharStrB As String
   Dim CharFlag As Boolean
   Dim i, StrLen, StrLen2, AscVal As Integer
   
   VerifyStr = UCase(VerifyStr)
   StrLen = Len(VerifyStr)
   StrLen2 = Len(FormatStr)
  
   If StrLen = StrLen2 Then
      CharFlag = True
      For i = 1 To StrLen
         CharStrA = Mid(VerifyStr, i, 1)
         CharStrB = Mid(FormatStr, i, 1)
         If CharStrB = "$" Then
            AscVal = Asc(CharStrA)
            If AscVal <= 64 Or AscVal >= 91 Then
               CharFlag = False
               i = StrLen
               VerifySnFormat = False
            End If
         Else
            If CharStrB = "#" Then
               CharFlag = IsNumeric(CharStrA)
               If CharFlag = False Then
                  i = StrLen
                  VerifySnFormat = False
               End If
            Else
               If CharStrB = "*" Then
                 
               Else
                  If CharStrA <> CharStrB Then
                     CharFlag = False
                     i = StrLen
                     VerifySnFormat = False
                  End If
               End If
            End If
         End If
      Next i
  
      If CharFlag = True Then
         VerifySnFormat = True
      Else
         VerifySnFormat = False
         MsgBox "Incorrect Barcode Format, Should Be " & FormatStr, vbInformation, "Tips"
      End If
   Else
      VerifySnFormat = False
      MsgBox "Incorrect Character quantity, Should Be " & StrLen2, vbInformation, "Tips"
   End If
End Function

例如,上述的例子,只需要使用函数VerifyBarcodeFormat("ABC1234CHINA0001","###$$$$CHINA$$$$")验证即可。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 81206 Code detection by Codefense

Copyright(c)2008-2009 ie-blog Email:jhgk7#163.com.粤ICP备08116733号.