串口ic读卡器源码-c#代码(2)续上
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)续上相关推荐
- 27.串口通信实验源码讲解
串口通信实验源码讲解 笔记基于正点原子官方视频 视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.100 ...
- android uart 助手,android串口通讯助手源码(ComAssistant)
[实例简介]Android串口通信 android串口通讯助手源码,可以获取设备中可用串口.破特率,发送hex数据.文本txt数据等功能 [实例截图] [核心代码] ComAssistant └── ...
- 读Zepto源码之代码结构
虽然最近工作中没有怎么用 zepto ,但是据说 zepto 的源码比较简单,而且网上的资料也比较多,所以我就挑了 zepto 下手,希望能为以后阅读其他框架的源码打下基础吧. 源码版本 本文阅读的源 ...
- MD500E源码和代码解析文档 代码包含了同步机FOC控制算法、电阻、电感、磁链、反电动势
MD500E源码和代码解析文档 代码包含了同步机FOC控制算法.电阻.电感.磁链.反电动势.死区补偿.过调制限制.弱磁等算法,支持无感和有感,亲自带电机运行过. ID:6715672157800168 ...
- PX4 Autopilot源码分析 - 代码下载
PX4 Autopilot源码分析 - 代码下载 源码地址 下载 硬件平台 编译 安装工具链 配置 运行 px4-Autopilot是目前最流程的无人驾驶类开源项目,社区在持续活跃状态,国内很多无人机 ...
- php 如何宏定义,[PHP] PHP源码常用代码中的宏定义
PHP源码常用代码宏定义: #define 宏名 字符串 #表示这是一条预处理命令,所有的预处理命令都以#开头.define是预处理命令.宏名是标识符的一种,命名规则和标识符相同.字符串可以是常数.表 ...
- 三菱PLC工控板 FX1N源码+电路图代码源程序。
三菱PLC工控板 FX1N源码+电路图代码源程序.
- 最新在线HTML代码编辑器源码+支持代码高亮
正文: 在线HTML编辑器HTML源码高性能代码编辑框,最高支持400万行代码编辑,支持代码高亮,支持代码行数显示,支持代码智能查错,支持代码自动补全,支持字号调节,支持主题切换,支持实时存储到浏览器 ...
- 上百套高端大气网站后台html源码模板-代码库
最近在做公司官网,一直在考虑是选用网上现成的建站模板网站(例如织梦dedecms,帝国,wordpress, PageAdmin等),还是手把手敲代码构建呢.但是考虑到后期版权的问题,决定还是自己用 ...
最新文章
- php进程通讯 windows,windows-server-2008 – PHP进程一次运行一个,总是占用一个核心的100%...
- Linux常用命令汇总(持续更新中)
- Expect 在网络管理中发挥着重要作用
- php通知websocket,php实现websocket实时消息推送
- 我张哥做的这ARM开发板,真酸爽!
- 找连续数(HDU-5247)
- java 注解学习_JAVA注解学习
- python求最大值代码的方式_python使用分治法实现求解最大值的方法
- Autodesk Eagle入门之-开启旅程
- 关于PHP自定义采集图片脚本
- php bug修复,PHPWind BUG修复
- Oracle数据库优化的方法
- 多线程编程模式之Thread-Specific Storage模式
- 自定义chrome新标签页
- 阿里云域名注册流程(全流程详细教程)
- 禁止Win系统自动唤醒
- bat文件(实现批量处理)
- ocx 加载 页面卡死
- 生产时间戳错误的分析过程及解决办法
- 外骨骼机器人(一):Lokomat核心技术简介