2

我被要求开发一个 C# Winforms 应用程序,它可以读取条形码并根据具有相关条形码的产品处理数据。

我们使用的条形码扫描仪是 Symbol LS2208 usb 扫描仪,当它来的时候,盒子里没有说明或 cd。我们将其插入,它向我们发出哔哔声,并且能够将条形码值扫描到记事本中作为测试。

在我的应用程序中,我如何确保扫描仪将数据填充到相关的文本框中(我一直在设置焦点,在按钮点击等所有其他操作之后)以及我如何知道何时扫描了整个条形码?目前我有一个表单计时器,每 50 毫秒计时一次并检查文本框值的长度。如果它不再变大,我假设整个条形码都已写入。

只是感觉有点“笨拙”,想知道是否有另一种方法可以做到这一点?

4

5 回答 5

1

大多数条形码扫描仪在实际条形码数据之前和之后发送几个控制字符,通常是 ^B 和 ^C。

通过监听 keypress 事件来查看它实际发送的键,并观察它发送的控制字符。然后您可以确定条形码数据的开始和结束时间。

于 2012-11-12T12:12:01.457 回答
1

适用于扫描仪的摩托罗拉驱动程序和 SDK

在我看来,摩托罗拉实际上有一个用于这种事情的 SDK,带有驱动程序特定的 LS2208。

大量文档:

摩托罗拉 LS2208 文档

说真的,谷歌呻吟!

于 2012-11-12T12:14:49.753 回答
1

在 WinForms 中区分条码扫描器和键盘

看看这个线程。那里有你需要的一切。

如果您将使用此特定扫描仪,您可以将其设置为在输入结束时发送特定信号。要设置扫描枪,您需要阅读设备的文档,可能在制造商的网站上提供。

如果您将使用相同的扫描枪,另一种解决方案。

如果您的客户将使用许多不同的扫描仪,那么设置每个人并跟踪他们的输入会有点困难。在这种情况下,您必须计算按键之间的时间(Windows 无法区分条形码扫描仪和普通键盘)。但是您仍然必须知道扫描仪发送的输入的后缀。

于 2012-11-12T12:17:31.473 回答
0

符号或摩托罗拉 LS2208 是一款非常标准的条码扫描仪。 RHLTechnologies.com 上的 LS2208

但是,您正在做的问题不是扫描仪,它可能是您从与正在使用的条形码相关的基础接近整个应用程序的方式。如果需要从单个代码中收集多层信息也许使用二维条码可能会更好,也许是数据矩阵或类似的东西。

此外,解析将被简化,您可以使用符号/motorola adf 预先存在的库在应用程序之外通过编程条形码对扫描仪进行编程,或者您可以使用 Motorola Solutions 的扫描实用程序 123SCAN2。这意味着您的应用程序更加灵活,不受特定扫描仪的束缚,并且可以更灵活地使用所需的硬件,而不是依赖特定品牌或扫描仪。

问候,

于 2013-09-03T13:36:25.930 回答
0

您需要一个在扫描条形码后用于执行某种操作的解决方案。您想在条形码阅读器扫描条形码后做一些事情,对吗?那么这将帮助你更多。为用于扫描条形码的文本框编写 keyPress 事件。现在,如果您在那里编写任何代码,每次您从键盘按下任何键或每次条形码扫描仪读取字符时都会执行该代码。如果要在扫描条形码后执行某些代码,则需要在该 keyPress 事件中添加条件。条形码扫描仪具有与每次条形码扫描相关的返回字符 (\n)。所以你需要在 keyPress 事件中添加这个条件。以下是供您参考的代码。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Return)
        {
            MessageBox.Show( textBox1.Text + " scanned...");
            //write your code here
        }

    }
}
于 2014-02-03T05:34:19.827 回答