//财源广进微信会员卡管理系统internal partial class V6 : IReader{/// <summary>/// 自动获取端口号/// </summary>/// <returns></returns>public int GetPort(){for (int i = 0; i < 10; i++){int s = ic_init(i, 9600);if (s > 0){ic_exit(s); ic_exit(0);return i;}}return -1;}/// <summary>/// 连接设备/// </summary>/// <typeparam name="T"></typeparam>/// <param name="success"></param>/// <param name="dev"></param>/// <returns></returns>public T Connect<T>(Device dev, Func<int, T> success) where T : Result, new(){if (dev.Port < 0)return new T { ErrMsg = $"读卡器连接失败,端口{dev.Port}错误" };int icdev = ic_init(dev.Port, dev.Rate);if (icdev == -149)return new T { ErrMsg = $"读卡器连接失败,端口{dev.Port + 1}占用" };if (icdev < 0)return new T { ErrMsg = "读卡器连接失败,检查是否设置或者连接好" };//蜂鸣提示//dv_beep(icdev, 10);short status = 0;get_status(icdev, ref status);T res;if (status == 0){res = new T { ErrMsg = "请注意:未插入卡片" };}else{//验证密码是否正确var pwd = Encoding.Default.GetBytes(dev.newpwd);var i = csc_4442(icdev, 3, ref pwd[0]);if (i != 0){res = new T { ErrMsg = "请注意:密码验证失败" };}else{//res = readData(icdev) as T;res = success.Invoke(icdev);}}//关闭设备ic_exit(icdev);ic_exit(0);return res;}/// <summary>/// 读卡/// </summary>/// <param name="dev"></param>/// <returns></returns>public Card Read(Device dev){return Connect(dev, icdev => IC_readData(icdev));}/// <summary>/// 写卡/// </summary>/// <param name="dev"></param>/// <param name="data"></param>/// <param name="WriteType"></param>/// <returns></returns>public Result Write(Device dev, Card data, WriteType WriteType){return Connect(dev, icdev =>{//写卡操作if (WriteType == WriteType.验证写卡){var card = IC_readData(icdev);if (card.IsSuccess == false){return card;}else if (card.CardId != data.CardId || card.CardNumber != data.CardNumber){return new Card { ErrMsg = "卡号与芯片不匹配" };}else{//正式写入卡内数据return new Result { ErrMsg = "写入芯片数据", IsSuccess = IC_writeData(icdev, data) };}}else if (WriteType == WriteType.新卡写卡){return new Result { ErrMsg = "写入芯片数据", IsSuccess = IC_writeData(icdev, data) };}return new Result { ErrMsg = "暂未支持此功能" };});}/// <summary>/// 根据对象写入芯片数据/// </summary>/// <param name="icdev"></param>/// <param name="data"></param>/// <returns></returns>private bool IC_writeData(int icdev, Card data){byte[] buffer = new byte[223];int START = 32;Encoding.Default.GetBytes(data.CardId).CopyTo(buffer, 位置- START);var i = swr_4442(icdev, 32, buffer.Length, ref buffer[0]);return (i == 0);}/// <summary>/// 获取字符串/// </summary>/// <param name="buffer"></param>/// <param name="start">开始</param>/// <param name="len">长度</param>/// <returns></returns>private string GetStrByBuffer(byte[] buffer, int start, int len){byte[] data = new byte[len];Buffer.BlockCopy(buffer, start - 32, data, 0, len);bool zero = false;for (int i = 0; i < data.Length; i++){if (data[i] == '\0') zero = true;if (zero) data[i] = (byte)'\0';}var result = Encoding.Default.GetString(data.ToArray()).Trim();result = result.Replace("\0", "");return result;}/// <summary>/// 读取芯片数据/// </summary>/// <param name="icdev"></param>/// <returns></returns>private Card IC_readData(int icdev){Card res = new Card();//一次读取所有数据var buffer = new byte[223];srd_4442(icdev, 32, buffer.Length, ref buffer[0]);var s1 = GetStrByBuffer(buffer, XX, 20);var s2 = GetStrByBuffer(buffer, XX, 20);if (s1.Length == 0 || s2.Length == 0){res = new Card { ErrMsg = "芯片读取失败,建议重新读卡" };}else{res = new Card{CardId = GetStrByBuffer(buffer, 位置, 10),Balance = double.Parse(s1),Point = double.Parse(s2),IsSuccess = true,};//writeData(icdev, res, buffer);}return res;}}
public class Device{public int Rate { get; set; } = 9600;public int Port { get; set; }public string Model { get; set; }public string newpwd { get; set; };public string oldpwd { get; set; };}
    internal class Result{public bool IsSuccess { get; set; }public string ErrMsg { get; set; }}

IC芯片卡读写类(泛型模式)相关推荐

  1. c语言读写nfc,Android NFC M1卡读写芯片卡读写(CPU卡读写)(RFID读写)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/sgn5200/article/deta ...

  2. 公交IC卡读写器设计指南

    采用PHILIPS公司的Mifaue卡作IC卡,设计以射频技术为核心,以单片机为控制器的IC卡读写器在公交自动收费系统中的应用.制作的IC卡读写器可以实现制卡.售卡.自动收费等功能,具有安全.实用.方 ...

  3. 下一代IC芯片卡将加密提升安全性能

    目前,各银行正在逐步推广IC芯片卡,具有NFC功能的手机在4厘米距离内可以读出卡号及最近10次交易记录,这让不少市民担心银行IC卡的安全问题和隐私问题.此事经成都商报报道后,中国银联技术专家首次对芯片 ...

  4. ic卡读写器有哪些分类?如何使用ic卡读写器?

    ic卡读写器是读写器中的一种,通过ic卡读写器可对ic卡的信息进行读取.为增进大家对ic卡读写器的认识,本文将对ic卡读写器的分类.ic卡读写器的使用方法等内容予以介绍.如果你对ic卡读写器具有兴趣, ...

  5. IC卡读写器VB源代码

    IC卡读写器VB使用界面 详细代码 '广州荣士电子有限公司,联系电话020-82318861,82322852,定制13826029618 网址http://www.icmcu.com '读卡函数声明 ...

  6. Windows操作系统下用vmware虚拟ubuntu系统测试USB IC卡读写器的说明

    读写器介绍:RFID读写器NFC发卡器WEB可编程NDEF文本/网址/智能海报/电话/启动-淘宝网 (taobao.com) 一.打开windows计算机管理 / 服务 / VMware USB Ar ...

  7. IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

    银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称:广州荣士电子有限公司 认证产品:IC-14W网络IC卡读写器 测试日期:2022-11-04 麒 ...

  8. VC中海量文件读写类设计与应用(转)

    VC中海量文件读写类设计与应用   沈瑞冰 摘要 本文阐述了海量文件读写的一般方法,并分析了该方法中存在的内存耗尽问题和解决办法,并就此设计了一个海量文件读写类,封装了海量文件读写操作,最后给出了一个 ...

  9. docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...

    一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...

  10. java做的web系统 m1 读卡器 结合_IE浏览器接入IC卡读写器实现M1卡的读写功能

    基于ActiveX技术的ocx控件是实现网页上读写 IC卡的一个比较不错的方法,因为ocx是com组件,通过其发布的接口,IE可以实现所有的功能.ActiveX不仅能适应大部分编程语言,做到与编程语言 ...

最新文章

  1. 如何查看一个linux用户的口令保留策略
  2. 什么是 SAP vocabulary-based annotations
  3. [转]前端构建工具gulpjs的使用介绍及技巧
  4. java定时任务详解
  5. mysql 索引的统计
  6. 新建word 无法切换输入法_WORD系列-1认识与保存
  7. 2021永州高中高考成绩查询入口,邵阳高考成绩查询入口2021
  8. 注意Stream.Seek,如果想要重复使用Stream,注意用Seek复位
  9. 【数学建模】2018 A题 高温作业专用服装设计(8.22-8.24训练)
  10. 大芒果服务器外网登录时一直显示正在登录,mangos-mangos
  11. c语言数据类型转换规律,c语言,数据类型转换
  12. 夜神模拟器安装激活面具magisk教程
  13. POJ 3290 WFF 'N PROOF 英文少
  14. 松下gh6参数 松下gh6评测
  15. 计算机考试excel统计图怎么做,excel表格取数据做统计图-Excel如何制作统计数据...
  16. mcu 与电量计 BQ40Z80 通信,读取电芯电量
  17. tiny6410刷机教程
  18. JAVA和MySQL实现公交管理_java+ssh+mysql城市公交管理系统(源码+论文+开题+任务书+中期检查+ppt)...
  19. 2022年的第一篇程序人生。。。
  20. 生成pdf带跳转的书签

热门文章

  1. win10计算机的数字小键盘,让Win10登录时默认开启数字小键盘
  2. python自动生成sql建表语句
  3. Android之模拟网络请求返回http 502、400、401、402错误码
  4. cmd下重启iis命令
  5. 福昕pdf转word免费版下载(附教程)
  6. 【数据分析自学】二、Excel基础知识
  7. Qt 3D 学习路径规划
  8. 华为交换机Console密码重置
  9. 无线网络技术导论知识点
  10. 有赞云支付php接口,Erphpdown wordpress插件集成有赞云支付的接口申请方法