相机进纸干扰条形码数据

时间:2015-09-21 20:17:39

标签: c# webcam barcode-scanner keylogger

我正在开发一个应用程序,它从条形码扫描仪收集文本并插入数据库,然后几乎立即捕获图像。

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    // check timing (keystrokes within 100 ms)
    TimeSpan elapsed = (DateTime.Now - _lastKeystroke);
    if (elapsed.TotalMilliseconds > 100)
        _barcode.Clear();

    // record keystroke & timestamp
    _barcode.Add(e.KeyChar);
    _lastKeystroke = DateTime.Now;

    // process barcode
    if (e.KeyChar == 13 && _barcode.Count > 0)
    {
        string barcode_value = new String(_barcode.ToArray());
        using (MySqlConnection conn = getConnection()) {
            MySqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "INSERT INTO log (card_number) VALUE (?barcode_value)";
            cmd.Parameters.AddWithValue("?barcode_value", barcode_value);
            cmd.ExecuteNonQuery();
            lastId = cmd.LastInsertedId;
            _barcode.Clear();

            Image img = imgVideo.Image;
            Helper.AutoSave(img, dirPath + lastId.ToString() + ".jpg");
        }
    }
}

请注意,我没有使用API​​,而是检查按键(使用第一个和最后一个字符之间的时间以及输入的最后一个字符)来确定我是否从条形码扫描仪获取数据。对于我正在使用 WebCam Library的相机部分,它被初始化并启动(在表单加载时),因此:

private void Form1_Load(object sender, EventArgs e)
{
    webcam = new WebCam();
    webcam.InitializeWebCam(ref imgVideo);
    webcam.Start();
}

应用程序的问题是,由于某种原因调用webcam.Start()会导致扫描的数据(来自条形码)被截断。在某些情况下,最后三个字符被捕获在其他一些字符上根本没有捕获字符;拍摄的图像,好吧。如果我删除了与相机有关的所有内容,条形码扫描部件将按预期工作。

更新:我被告知IRQ是造成这场冲突的原因,任何人都可以对此有更多了解,以及如何解决这个问题。

0 个答案:

没有答案