C#中的条形码扫描器编程

问题描述 投票:0回答:1

我需要为公司开发一个简单的考勤系统。 我有兴趣用C#开发此软件,因为听说.NET框架提供了条形码扫描程序库,这使此任务更加容易。 我得到了AURORA的条形码扫描仪。 我已经使用系统配置了此扫描仪,并且在我刷卡之前会读取它。 我不知道如何捕获条形码信息! 对我来说,这是一项全新的任务,我不知道可以用来读取条形码的方法。 我知道Scaner通常以字符串形式读取数据,将其保存在剪贴板中,并将其粘贴到活动的Editbox或任何活动的文件中。 例如,如果我打开记事本和扫描卡,在记事本中会看到数字00004(我认为是条形码)...
我有几个问题:
1.读取出现在editbox上的条形码值的最佳方法是什么(我的应用程序将有一个editbox),我需要控制Scanner Event,以便它不应自行将条形码值粘贴到editbox中,而不是使用它值...
2.当有人刷卡时,将触发事件的代码是什么?
请提供一些有效的示例代码(C#)。我们将非常感谢您的帮助。

public partial class Form1 : Form
{
    SerialPort _serialPort;

    // delegate is used to write to a UI control from a non-UI thread
    private delegate void SetTextDeleg(string text);

    private void Form1_Load(object sender, EventArgs e)
    {
        // all of the options for a serial device
        // can be sent through the constructor of the SerialPort class
        // PortName = "COM1", Baud Rate = 19200, Parity = None, 
        // Data Bits = 8, Stop Bits = One, Handshake = None
        _serialPort = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
        _serialPort.Handshake = Handshake.None;
        _serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;
        _serialPort.Open();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        // Makes sure serial port is open before trying to write
        try
        {
            if (!_serialPort.IsOpen)
                _serialPort.Open();

            _serialPort.Write("SI\r\n");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
        }
    }

    void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        Thread.Sleep(500);
        string data = _serialPort.ReadLine();
        this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
    }

    private void si_DataReceived(string data)
    {
        textBox1.Text = data.Trim();
    }

    private TextBox textBox1;
    private Label label1;
    private RichTextBox richTextBox1;
    private Button button1;
}
c# barcode-scanner
1个回答
3
投票

好吧,通常MSR(磁条读取器)会将输出转储到STDIN -这意味着它的作用就像键盘一样。

首先,您必须在应用程序中捕获键盘事件,以使其读取数据。

顺便说一句:

在索要样品之前尝试编写一些代码怎么样?

© www.soinside.com 2019 - 2024. All rights reserved.