private void button1_Click(object sender, System.EventArgs e)//轻松读卡
  {
   byte status;//存放返回值
   byte myareano;//区号
   byte authmode;//密码类型,用A密码或B密码
   byte myctrlword;//控制字
   byte[] mypicckey = new byte[6];//密码
   byte[] mypiccserial = new byte[4];//卡序列号
   byte[] mypiccdata = new byte[48]; //卡数据缓冲
   //控制字指定,控制字的含义请查看本公司网站提供的动态库说明
   myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;

//指定区号
   myareano = 8;//指定为第8区
   //批定密码模式
   authmode = 1;//大于0表示用A密码认证,推荐用A密码认证

//指定密码
   mypicckey[0] = 0xff;
   mypicckey[1] = 0xff;
   mypicckey[2] = 0xff;
   mypicckey[3] = 0xff;
   mypicckey[4] = 0xff;
   mypicckey[5] = 0xff;

status = piccreadex(myctrlword, mypiccserial, myareano, authmode, mypicckey, mypiccdata);
   //在下面设定断点,然后查看mypiccserial、mypiccdata,
   //调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
   //开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
   //处理返回函数
   switch (status)
   {
    case 0:
     MessageBox.Show("操作成功,数据已返回在mypiccdata数组中");
     break;
     //......
    case 8:
     MessageBox.Show("请将卡放在感应区");
     break;

}

//返回解释
   /*
   REQUEST 8//寻卡错误
   READSERIAL 9//读序列吗错误
   SELECTCARD 10//选卡错误
   LOADKEY 11//装载密码错误
   AUTHKEY 12//密码认证错误
   READ 13//读卡错误
   WRITE 14//写卡错误

NONEDLL 21//没有动态库
   DRIVERORDLL 22//动态库或驱动程序异常
   DRIVERNULL 23//驱动程序错误或尚未安装
   TIMEOUT 24//操作超时,一般是动态库没有反映
   TXSIZE 25//发送字数不够
   TXCRC 26//发送的CRC错
   RXSIZE 27//接收的字数不够
   RXCRC 28//接收的CRC错

*/
  }

private void button3_Click(object sender, System.EventArgs e)//让设备发出声音
  {
   pcdbeep(50);
  }

private void button2_Click(object sender, System.EventArgs e)//轻松写卡
  {
   byte i;
   byte status;//存放返回值
   byte myareano;//区号
   byte authmode;//密码类型,用A密码或B密码
   byte myctrlword;//控制字
   byte[] mypicckey = new byte[6];//密码
   byte[] mypiccserial = new byte[4];//卡序列号
   byte[] mypiccdata = new byte[48]; //卡数据缓冲
   //控制字指定,控制字的含义请查看本公司网站提供的动态库说明

myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;

//指定区号
   myareano = 8;//指定为第8区
   //批定密码模式
   authmode = 1;//大于0表示用A密码认证,推荐用A密码认证

//指定密码
   mypicckey[0] = 0xff;
   mypicckey[1] = 0xff;
   mypicckey[2] = 0xff;
   mypicckey[3] = 0xff;
   mypicckey[4] = 0xff;
   mypicckey[5] = 0xff;

//指定卡数据
   for (i = 0; i < 48; i++)
   {
    mypiccdata[i] = i;
   }

status = piccwriteex(myctrlword, mypiccserial, myareano, authmode, mypicckey, mypiccdata);
   //在下面设定断点,然后查看mypiccserial、mypiccdata,
   //调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
   //开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
   //处理返回函数
   switch (status)
   {
    case 0:
     MessageBox.Show("操作成功,mypiccdata数组中的数据已写入卡中");
     break;
     //......
    case 8:
     MessageBox.Show("请将卡放在感应区");
     break;

}

//返回解释
   /*
   REQUEST 8//寻卡错误
   READSERIAL 9//读序列吗错误
   SELECTCARD 10//选卡错误
   LOADKEY 11//装载密码错误
   AUTHKEY 12//密码认证错误
   READ 13//读卡错误
   WRITE 14//写卡错误

NONEDLL 21//没有动态库
   DRIVERORDLL 22//动态库或驱动程序异常
   DRIVERNULL 23//驱动程序错误或尚未安装
   TIMEOUT 24//操作超时,一般是动态库没有反映
   TXSIZE 25//发送字数不够
   TXCRC 26//发送的CRC错
   RXSIZE 27//接收的字数不够
   RXCRC 28//接收的CRC错

*/
  }

private void button4_Click(object sender, System.EventArgs e)//修改单区密码
  {
   byte i;
   byte status;//存放返回值
   byte myareano;//区号
   byte authmode;//密码类型,用A密码或B密码
   byte myctrlword;//控制字
   byte[] piccoldkey = new byte[6];//旧密码
   byte[] mypiccserial = new byte[4];//卡序列号
   byte[] piccnewkey = new byte[6]; //新密码.

//控制字指定,控制字的含义请查看本公司网站提供的动态库说明
   myctrlword = 0;

//指定区号
   myareano = 8;//指定为第8区
   //批定密码模式
   authmode = 1;//大于0表示用A密码认证,推荐用A密码认证

//指定旧密码
   piccoldkey[0] = 0xff;
   piccoldkey[1] = 0xff;
   piccoldkey[2] = 0xff;
   piccoldkey[3] = 0xff;
   piccoldkey[4] = 0xff;
   piccoldkey[5] = 0xff;

//指定新密码,注意:指定新密码时一定要记住,否则有可能找不回密码,导致该卡报废。
   piccnewkey[0] = 0xff;
   piccnewkey[1] = 0xff;
   piccnewkey[2] = 0xff;
   piccnewkey[3] = 0xff;
   piccnewkey[4] = 0xff;
   piccnewkey[5] = 0xff;

status = piccchangesinglekey(myctrlword, mypiccserial, myareano, authmode, piccoldkey, piccnewkey);
   //在下面设定断点,然后查看mypiccserial、mypiccdata,
   //调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
   //开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
   //处理返回函数
   switch (status)
   {
    case 0:
     MessageBox.Show("操作成功,密码已被修改!");
     break;
     //......
    case 8:
     MessageBox.Show("请将卡放在感应区");
     break;

}

//返回解释
   /*
   REQUEST 8//寻卡错误
   READSERIAL 9//读序列吗错误
   SELECTCARD 10//选卡错误
   LOADKEY 11//装载密码错误
   AUTHKEY 12//密码认证错误
   READ 13//读卡错误
   WRITE 14//写卡错误

NONEDLL 21//没有动态库
   DRIVERORDLL 22//动态库或驱动程序异常
   DRIVERNULL 23//驱动程序错误或尚未安装
   TIMEOUT 24//操作超时,一般是动态库没有反映
   TXSIZE 25//发送字数不够
   TXCRC 26//发送的CRC错
   RXSIZE 27//接收的字数不够
   RXCRC 28//接收的CRC错

*/
  }

private void button5_Click(object sender, System.EventArgs e)//读取设备编号,可做为软件加密狗用,也可以根据此编号在公司网站上查询保修期限
  {
   byte[] devno = new byte[4];
   if (pcdgetdevicenumber(devno) == 0)
   {
    MessageBox.Show(System.Convert.ToString(devno[0]) + "-" + System.Convert.ToString(devno[1]) + "-" +  System.Convert.ToString(devno[2]) + "-" +  System.Convert.ToString(devno[3]));
    //ShowMessage(IntToStr(devno[0]) + "-" + IntToStr(devno[1]) + "-" + IntToStr(devno[2]) + "-" + IntToStr(devno[3]));
   }
  }

private void button6_Click(object sender, System.EventArgs e)
  {
   string strls;
   strls = textBox1.Text;
   lcddispfull(strls);
  }
 }
}

转载于:https://blog.51cto.com/reader/595014

串口ic读卡器源码-c#代码(2)续上相关推荐

  1. 27.串口通信实验源码讲解

    串口通信实验源码讲解 笔记基于正点原子官方视频 视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.100 ...

  2. android uart 助手,android串口通讯助手源码(ComAssistant)

    [实例简介]Android串口通信 android串口通讯助手源码,可以获取设备中可用串口.破特率,发送hex数据.文本txt数据等功能 [实例截图] [核心代码] ComAssistant └── ...

  3. 读Zepto源码之代码结构

    虽然最近工作中没有怎么用 zepto ,但是据说 zepto 的源码比较简单,而且网上的资料也比较多,所以我就挑了 zepto 下手,希望能为以后阅读其他框架的源码打下基础吧. 源码版本 本文阅读的源 ...

  4. MD500E源码和代码解析文档 代码包含了同步机FOC控制算法、电阻、电感、磁链、反电动势

    MD500E源码和代码解析文档 代码包含了同步机FOC控制算法.电阻.电感.磁链.反电动势.死区补偿.过调制限制.弱磁等算法,支持无感和有感,亲自带电机运行过. ID:6715672157800168 ...

  5. PX4 Autopilot源码分析 - 代码下载

    PX4 Autopilot源码分析 - 代码下载 源码地址 下载 硬件平台 编译 安装工具链 配置 运行 px4-Autopilot是目前最流程的无人驾驶类开源项目,社区在持续活跃状态,国内很多无人机 ...

  6. php 如何宏定义,[PHP] PHP源码常用代码中的宏定义

    PHP源码常用代码宏定义: #define 宏名 字符串 #表示这是一条预处理命令,所有的预处理命令都以#开头.define是预处理命令.宏名是标识符的一种,命名规则和标识符相同.字符串可以是常数.表 ...

  7. 三菱PLC工控板 FX1N源码+电路图代码源程序。

    三菱PLC工控板 FX1N源码+电路图代码源程序.

  8. 最新在线HTML代码编辑器源码+支持代码高亮

    正文: 在线HTML编辑器HTML源码高性能代码编辑框,最高支持400万行代码编辑,支持代码高亮,支持代码行数显示,支持代码智能查错,支持代码自动补全,支持字号调节,支持主题切换,支持实时存储到浏览器 ...

  9. 上百套高端大气网站后台html源码模板-代码库

    最近在做公司官网,一直在考虑是选用网上现成的建站模板网站(例如织梦dedecms,帝国,wordpress, PageAdmin等),还是手把手敲代码构建呢.但是考虑到后期版权的问题,决定还是自己用 ...

最新文章

  1. php进程通讯 windows,windows-server-2008 – PHP进程一次运行一个,总是占用一个核心的100%...
  2. Linux常用命令汇总(持续更新中)
  3. Expect 在网络管理中发挥着重要作用
  4. php通知websocket,php实现websocket实时消息推送
  5. 我张哥做的这ARM开发板,真酸爽!
  6. 找连续数(HDU-5247)
  7. java 注解学习_JAVA注解学习
  8. python求最大值代码的方式_python使用分治法实现求解最大值的方法
  9. Autodesk Eagle入门之-开启旅程
  10. 关于PHP自定义采集图片脚本
  11. php bug修复,PHPWind BUG修复
  12. Oracle数据库优化的方法
  13. 多线程编程模式之Thread-Specific Storage模式
  14. 自定义chrome新标签页
  15. 阿里云域名注册流程(全流程详细教程)
  16. 禁止Win系统自动唤醒
  17. bat文件(实现批量处理)
  18. ocx 加载 页面卡死
  19. 生产时间戳错误的分析过程及解决办法
  20. 外骨骼机器人(一):Lokomat核心技术简介

热门文章

  1. 有三AI一周年了,说说我们的初衷,生态和愿景
  2. 【mxnet速成】mxnet图像分类从模型自定义到测试
  3. 全球及中国4-氨基-3-硝基苯酚行业前景趋势与投资规模格局报告2022版
  4. ASP中怎么实现SQL数据库备份、恢复!
  5. 天然富硒科技成果转化-李喜贵:成立联合体谋定农业大健康
  6. 冒泡排序和其两种优化
  7. 【sql】牛客网练习题 (共 61 题)
  8. PHP 防XSS跨站攻击
  9. [转载]Java-集合框架完全解析
  10. 单行文字不断向上滚动特效