我正在为C#compact framework 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;
}
}
}
答案 0 :(得分:1)
好的,我现在重申你在一个单独的类中使用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资源工具包。