我正在c#紧凑框架2.0 (windows mobile 6.1)中开发带有2D阅读器的Intermec手持设备CK30。
每次我使用条形码我的键盘停止工作。知道为什么吗?
下面是代码。第一部分是配置条形码读取器的类。第二部分是使用条形码读取器填充文本框的表单。使用条形码阅读器读取内容后,键盘停止工作…
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Intermec.DataCollection;
namespace BarCodeReaderTest
{
class LeitorCodigoDeBarras
{
public BarcodeReader LerCodigoDeBarras()
{
try
{
BarcodeReader meuLeitor = new BarcodeReader("default", 4096);
meuLeitor.ScannerEnable = true;
meuLeitor.ThreadedRead(true);
return meuLeitor;
}
catch (BarcodeReaderException bx)
{
MessageBox.Show("Não foi possível inicializar o leitor de código de barras. Contate seu supervisor. n" + bx.Message);
return null;
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Intermec.DataCollection;
namespace BarCodeReaderTest
{
public partial class Form1 : Form
{
public BarcodeReader leitor;
public Form1()
{
InitializeComponent();
LeitorCodigoDeBarras classeLeitor = new LeitorCodigoDeBarras();
leitor = classeLeitor.LerCodigoDeBarras();
leitor.BarcodeRead += new BarcodeReadEventHandler(this.eventoLeitorCodigoDeBarras);
}
void eventoLeitorCodigoDeBarras(object sender, BarcodeReadEventArgs e)
{
tbCodLido.Text = e.strDataBuffer;
}
}
}
好了,我现在意识到您是在一个单独的类中使用BarcodeReader。
请尝试以下标准示例(表单中一个列表框和一个按钮):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Intermec.DataCollection;
namespace BarcodeReader
{
public partial class Form1 : Form
{
private Intermec.DataCollection.BarcodeReader bcr;
public Form1()
{
InitializeComponent();
bcr = new Intermec.DataCollection.BarcodeReader();
bcr.BarcodeRead += new BarcodeReadEventHandler(bcr_BarcodeRead);
bcr.ThreadedRead(true);
}
void bcr_BarcodeRead(object sender, BarcodeReadEventArgs bre)
{
this.listBox1.Items.Add(bre.strDataBuffer);
}
}
private void btnExit_Click(object sender, EventArgs e)
{
if (bcr !=null)
{
bcr.Dispose();
}
Application.Exit();
}
}
如果它可以工作(另请参见Intermec Datacollection资源工具包附带的示例),我们可以检查为什么您的构造不起作用。我假设您已经安装了最新的DataCollection Resource Kit。