如何在Winform的页面中获取刷卡机中的数据并弹出窗口
各位童鞋,请教一个问题
现在有个需求,想在winform页面中,只要客户刷卡了,就弹出一个窗口,在窗口中显示卡里的内容,请问怎么获取这个
事件?还是要开个新线程一直监听?
[解决办法]
恩 我这是一个ID卡的读卡器的读卡登陆的代码 你可以参考一下.
//你的有个serialPort控件. /// <summary> /// serialPort的DataReceived事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { byte[] buffer = new byte[serialPort1.BytesToRead]; serialPort1.Read(buffer, 0, buffer.Length); string strID = ""; for (int i = 0; i < buffer.Length; i++) { strID = strID + String.Format("{0:X2}", buffer[i]); } this.Invoke(interfaceUpdateHandle, strID); } catch (Exception ex) { MessageBox.Show(ex.Message, "读卡错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }//弄个委托 delegate void HandleInterfaceUpdateDelegate(String text); HandleInterfaceUpdateDelegate interfaceUpdateHandle; public CPLoginForm() { InitializeComponent(); interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(QueryIDCard);//读卡 CloseSerialPort();//关闭serialPort OpenSerialPort();//开启serialPort } /// <summary> /// 检索Id卡 /// </summary> /// <param name="strPass"></param> private void QueryIDCard(string strPass) { DataTable dt_id = GetID(strPass);//用读卡器传来的数据验证,这句话是连数据库的,你不用在意. if (dt_id.Rows.Count <= 0) MessageBox.Show("无效的ID卡!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); else { //验证通过,你可以做你喜欢的~ } }//关闭SerialPort private void CloseSerialPort() { if (this.serialPort1.IsOpen) { Application.DoEvents(); serialPort1.Close(); } }//打开串口private void OpenSerialPort() { try { if (serialPort1.IsOpen) { CloseSerialPort(); } else { serialPort1.Open(); } } catch (Exception ex) { if (idts) { MessageBox.Show("请更改配置文件中的串口设置,错误信息如下:\r\n" + ex.Message, "无法打开串口设备", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }//以上为自己写的代码,功能倒是实现了,但是有点丑,请各位多指正.