用C#编写条形码扫描仪程序
本文关键字:扫描仪 程序 条形码 | 更新日期: 2023-09-27 18:22:41
我需要为一家公司开发一个简单的考勤系统。我对用C#开发这个软件很感兴趣,因为我听说.NET框架提供了条形码扫描仪库,这使得这项任务更容易。我得到了AURORA的条形码扫描仪。我已经用我的系统配置了这个扫描仪,当我在它之前刷卡时,它会读取。我不知道如何获取条形码信息!!这对我来说是一项全新的任务,我不知道可以用什么方法来读取条形码。我知道Scaner通常以字符串形式读取数据,将其保存在剪贴板中并粘贴到活动编辑框或任何它活动的内容。例如,如果我打开记事本和扫描卡,在记事本中我会看到数字00004(我认为这是条形码)
我有几个问题:
1.读取出现在editbox上的条形码值的最佳方式是什么(我的应用程序将有一个editbox),我需要控制Scanner Event,使其不应通过iteself将条形码值粘贴到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;
}
通常,MSR(Magnetric Stripe Readers)会将输出转储到STDIN
,这意味着它的作用就像键盘。
您必须在应用程序中捕获键盘事件,以便它读取数据,从这一点开始。
BTW:
在索取样本之前,您的尝试编写一些代码怎么样?