两个问题:
    一:如何检测 插在某个COM端口上的 读卡器(IC读卡器)上是否有卡存在?
    二:当检测到卡时,我如何能够自动读出卡的信息?    曾经读过几个IC卡读卡程序,有的人是在程序中注册了一个热键(如F6),当有卡放在读卡器上时,操作员就会按下F6,然后系统收到F6消息后,就会做出相应的处理(即开始读卡);
    但我认为这种方式不是很完善,操作起来比较麻烦,现在我想实现下面的目标:
    当有卡放在读卡器上时,程序能够自动检测出来,并将其信息读取出来,存放到一个变量中,以备在后续程序中对卡的信息进行处理.
    请高手给予指点,望正在研究IC卡的兄弟姐妹们共同探讨,分数不高(因为没有那么多分),但学习知识的心情很迫切,望大家踊跃发言,等待中......

解决方案 »

  1.   

    问题一补充:
       计算机上可能有多个COM端口,并且都能成功打开,怎么判断当前的设备(读卡器)正在使用哪个COM端口?
      

  2.   

    不要什么都想着自动进行,实际上很多的软件还是需要人工干预的.使用哪个端口需要人工配置,如果想自动监测加个定时器timer定时判断就可以了.不过要消耗一些资源.........
      

  3.   

    卡片插入读卡器时,如果应用软件不做动作,那么读卡器只会取得复位信息,个别读卡器会做pps动作。
      

  4.   

    我之前用过的读卡器是这样的,在读到卡的时候,会有个引脚拉低10ms,这个时间可以作为cpu的中断。而在读到卡后10ms(就是预留的中断响应时间),会有个TTL电平的TXD将卡号发送出来,这个可以通过232转换到PC机,在PC机上显示出来。
      

  5.   

    读卡器都是这样,那个插卡的卡槽有常开或常闭的,当状态从无卡->有卡时,卡槽的状态会改变。一般都将这个状态变化连在读卡器cpu的外部中断管脚上,然后cpu就执行如下动作,reset管脚拉低,延时,reset管脚拉高,收ttl电平的复位信息,并判断正误。俺对com口的读卡器不懂,因为com口读卡器没有统一的标准,都是各厂商独自制作的。一般检查卡这种事情,俺在应用层调用复位函数,如果能够收到复位信息,就表明有卡,否则表明无卡。具体的复位函数,则对应不同的读卡器执行不同的代码。
      

  6.   

    我在研究如何用过滤驱动修改设备传回来的数据....不知道哪位成功过...可否说说如何修改IRP_MJ_READ回调函数里的Irp->AssociatedIrp.SystemBuffer...目前我能做到的就是从设备上传回多少数据我就可以改多少数据...但如果设备只传回4个字节的数据而我又想改16个字节就会蓝屏.....郁闷