在条码扫描应用的开发过程中,一个重要的步骤是获取扫描枪所扫描的条码,并将条码存储在数据库中。

条码有一定的限制条件:

1、条码类型为一维条码。

2、条码长度为8位。

3、条码首位为字母,后7位为数字。

只有符合条件的条码,例如:A1234567,才能获得通过。

了解到扫描枪同键盘相似,能够触发OnKeyPress、OnKeyDown、OnKeyUp事件,一般的扫描枪,在扫描完条码后会默认自动加个“回车”。比如扫描“A1234567”,实际是返回“A1234567回车”。明白了这一点,编码就很简单了。

c#:

using System;using System.Windows.Forms;namespace WindowsFormsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){this.ute1.Focus();}private void ute1_KeyPress(object sender, KeyPressEventArgs e){// 判断是否为回车键,是回车键才能执行if (e.KeyChar == 13){// 获取文本框中的最后8为字符string barcode = ute1.Text.Substring(ute1.Text.Length - 8, 8).ToUpper();// 检查8位字符是否符合要求if (!BarcodeUtility.CheckBarcode(barcode)){// 符合要求的8位条码ul.Text = barcode;// 执行数据库保存程序// ......}else{ul.Text = "条码扫描错误";}// 将文本框1清除ute1.Clear();ute1.Focus();}}}}

VB.NET:

Imports WindowsApplication1.Class1Public Class BarcodeChcekPrivate Sub BarcodeChcek_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadMe.TextBox1.Focus()End SubPrivate Sub TextBox1_KeyDown(ByVal sender As System.Object, _ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown'判断是否为回车键,是回车键才能执行If e.KeyCode = 13 Then'获取文本框中的最后8为字符Dim barcode As Stringbarcode = Microsoft.VisualBasic.Right(Me.TextBox1.Text, 8)'检查8位字符是否符合要求If mCodeCheck(barcode) = True ThenMe.Label1.Text = "条码扫描错误"Else'符合要求的8位条码Me.Label1.Text = barcodeEnd If'将文本框1清除Me.TextBox1.Clear()Me.TextBox1.Focus()End IfEnd SubEnd Class