怎样让身份证读卡器(神思二代)保持正常读卡状态?OnTimer()问题
现有程序是这样的:
void CIdCardDlg::OnTimer(UINT nIDEvent)
{
userReadCard() ;//读身份证信息
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
计时器设定为:SetTimer( MAIN_SEEKED_CARD_TIMER, 7000, NULL )
结果是:
读卡器不管有没有放身份证,工作灯一直闪烁,不断在读卡;
我希望实现的效果是:
1、读卡器进入读卡状态
2、放卡时,读卡器读取身份证信息;只要卡不拿走,读卡器就不作出反应;
3、卡拿走时,读卡器进入读卡状态
4、重复2、3步骤
OnTimer()
身份证读卡器
神思二代
OnTimer()
刷卡
------解决方案--------------------根据复位是否成功来判断有没有卡。
------解决方案--------------------
while(true)
{
do
{ //判断卡的状态 没有卡,延时一下,循环。
}while(x)
do
{
//读取卡信息,返回所需要的值
}while(false)
do
{
// 判断卡的状态,有卡 延时一下,在这里循环
}while(X)
}
我觉的单独放一条线程还是比较好的
------解决方案--------------------这样是不行的,
人家硬件设置好了,读卡时间限制的!
多长时间没读到卡会失败的!
每两次读卡时间间隔设置
------解决方案--------------------void CIdCardDlg::OnTimer(UINT nIDEvent)
{
switch (iState)
{
case 1:
{
iState=XX
}
case 2:
{
iState=XX
}
case 3:
{
iState=XX
}
}
}
维护 卡iState 状态 根据不同状态做不同的处理