我需要为公司开发一个简单的考勤系统。 我有兴趣用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;
}
好吧,通常MSR(磁条读取器)会将输出转储到STDIN
-这意味着它的作用就像键盘一样。
首先,您必须在应用程序中捕获键盘事件,以使其读取数据。
顺便说一句:
在索要样品之前尝试编写一些代码怎么样?