为了方便使用,将读卡器相关的操作,都放在了一个服务上,统一接口。代码:E:\VSTS\MedicalHealth\Card\Card.sln这个解决方案。接口定义在Core.dll,实现在Core.Library.dll
    客户端代码调用,像调用普通服务一样:
    ICardService service = UseCaseItem.Current.GetLocalItem();
    ICardInfo cardInfo = service.Read(CardPrivoderKind.IdCard, CardReadOption.WithReadPhoto);

    测试。现在可以测试的有
    1、身份证读卡器.精伦电子.型号iDR210
    2、身份证读卡器.新中新.型号A16系列
    3、市民卡读卡器.广州市市民卡.V20统一接口
    4、身份证读卡器.神思.型号SS628(100)
    5、身份证读卡器.华视. 型号CVR_100U
    6、中控智慧读卡器. ID100
    7、德卡.T10
    8、医疗保障卡.广东省江门市跨省异步医保统一接口. 医保和社保是同一张卡,不同的厂商,SSCardDriver.dll不同,要进行注册。
    9、身份证读卡器.德生.型号TSW_F4_MDS
    10、身份证.华大.型号HD100
    11、身份证读卡器.首云.型号SW100
    1、安装相关设备驱动,身份证要安装”二代证读验机具USB驱动”,市民卡可以不用安装驱动,从下面路径拷
    \tanjinlong-p310\项目文档\门诊升级\卡服务相关\驱动程序

    2、将CardServiceTray.exe,CardServiceTray.exe.config放到运行路径下, CardDll文件放到运行路径下,所有设备用到的dll都放在了该目录下。
    由于不同的设备提供商,有相同的dll文件名,所以将不同设备提供商的dll放到了不同的目录下,运行时动态加载。
    目录层次类似于 卡类型\厂商名\型号
    精伦电子型号为iDR210的身份证读卡器,用到的dll放在下面的路径下
    例 如:CardDll\IDCard\Routon\IDR210

    相关组件,先从这里拷
    \tanjinlong-p310\VSTS\MedicalHealth\bin\Debug

    3、设置客户端参数,有些驱动支持32位和64位,客户端可以选一种,现在找到的DLL都是32位,“是否使用64位”,这个参数不用选,默认32位,选择读卡器标识参数就行了。
    读卡器服务 - 图1

    4、注册表中将CardServiceIsEnable设为true,则在启动jssvc服务时,自动启动卡服务,不然就要手工启动CardServiceTray.exe托盘服务,CardServiceTray.exe(用于宿住 32位服务),CardServiceTrayX64.exe(用于宿住 64位服务),现在只有32位的,只要启动 CardServiceTray.exe
    读卡器服务 - 图2

    5、32位的注册表, Wow6432Node下面的JetSun\3.0\IsServer设置是否正确,客户端,设置成false,服务器设置成true

    备注:
    1、身份证读卡器.神思.型号SS628(100)要将授权文件放到C盘根目录下。
    2、身份证读卡器.华视. 型号CVR_100U要安装”华视读卡器多浏览器插件.exe” OCX控件
    3、德卡读卡器组件要拷到运行BIN下面
    4、身份证读卡器.德生.型号TSW_F4_MDS,要将授权文件放到C盘根目录下。