我正在开发一个应用程序,它从条形码扫描仪收集文本并插入数据库,然后几乎立即捕获图像。
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是造成这场冲突的原因,任何人都可以对此有更多了解,以及如何解决这个问题。