资源简介
完成了对明华URF-R330读卡器 M1卡的读写,官方提供的Demo并没有C#版本的,我四处收集资料改写代码写出这个C#版的Demo,希望对您有所帮助.
因为时间问题所以并没有优化代码,不过注释绝对够全的.
代码片段和文件信息
using System;
using System.Text;
using M1Card.Common;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace M1Card
{
/*关于M1卡
* M1卡有15个扇区可读写
* 每个扇区的0-2块可读写第3块存放控制位所以不可写
* 每次写一个扇区里的块都要先验证该扇区的密码
* 写入一次为一块
* 不知为何写满一个块时读取的时候末尾会多两三个乱码猜测是把控制位给读出来了时间问题未深究
* 总共有5760位可读写即720字节
*/
public partial class MainWindow : Form
{
#region 变量
///
/// 设备ID
///
private int _icdev = -1;
///
/// 当前IC卡号
///
private int _cardId = 0;
#endregion
public MainWindow()
{
InitializeComponent();
}
#region 设备操作
///
/// 写入指定的字符串到M1卡
///
/// 要写入的字符串
private void Write(string str)
{
try
{
#region 过滤字符串
//如果字符串有非法字符
foreach (var c in str)
{
if (c > 127) throw new ArgumentException(“字符串内含有ASCII已外的字符“);
}
//不可大于720个字符
if (str.Length > 720) throw new ArgumentException(“字符串的长度已超过卡的最大容量720字节“);
#endregion
int result; //设备API函数返回的结果
#region 初始化设备
//连接设备并设置波特率
_icdev = URF.rf_init(0 9600);
if (_icdev < 0) throw new URFException(_icdev);
//寻卡
result = URF.rf_card((Int16)_icdev 1 ref _cardId);
if (result != 0) throw new URFException(result);
//加载密码
result = URF.rf_load_key_hex(_icdev 0 0 “FFFFFFFFFFFF“);
if (result != 0) throw new URFException(result);
#endregion
#region 写入卡内
int writedBlock = 0; //标示变量标识已写入的块数
string[] data; //要写入卡内的字符串数据
var block = str.Length / 16; //字符串所占的块
var mod = str.Length % 16;
if (mod != 0) block++; //如果有字符占不满一个块就多加一个
var sector = block / 3; //字符串所占的扇区
if (block % 3 != 0) sector++; //如果块占不满一个扇区多加一个扇区
data = new string[block];
#region 拆分字符串为16字节一块
for (int index = 0; index < block; index++)
{
string tempData;
if (index == block - 1 && mod != 0)
{
tempData = str;
str = null;
}
else
{
tempData = str.Substring(0 16);
str = str.Remove(index 16);
}
data[index] = tempD
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 167 2013-07-02 22:51 M1Card\App.config
文件 167 2013-07-02 22:51 M1Card\bin\64\WindowsFormsApplication1.exe.config
文件 22472 2013-07-02 23:02 M1Card\bin\64\WindowsFormsApplication1.vshost.exe
文件 167 2013-07-02 22:51 M1Card\bin\64\WindowsFormsApplication1.vshost.exe.config
文件 114688 2013-07-02 20:28 M1Card\bin\Debug\mwrf32.dll
文件 14336 2013-07-16 23:12 M1Card\bin\Debug\WindowsFormsApplication1.exe
文件 167 2013-07-02 22:51 M1Card\bin\Debug\WindowsFormsApplication1.exe.config
文件 30208 2013-07-16 23:12 M1Card\bin\Debug\WindowsFormsApplication1.pdb
文件 22984 2013-07-16 23:12 M1Card\bin\Debug\WindowsFormsApplication1.vshost.exe
文件 167 2013-07-02 22:51 M1Card\bin\Debug\WindowsFormsApplication1.vshost.exe.config
文件 114688 2013-07-02 20:28 M1Card\bin\Release\mwrf32.dll
文件 11776 2013-07-14 19:53 M1Card\bin\Release\WindowsFormsApplication1.exe
文件 167 2013-07-02 22:51 M1Card\bin\Release\WindowsFormsApplication1.exe.config
文件 30208 2013-07-14 19:53 M1Card\bin\Release\WindowsFormsApplication1.pdb
文件 22472 2013-07-14 19:55 M1Card\bin\Release\WindowsFormsApplication1.vshost.exe
文件 167 2013-07-02 22:51 M1Card\bin\Release\WindowsFormsApplication1.vshost.exe.config
文件 490 2012-06-06 02:06 M1Card\bin\Release\WindowsFormsApplication1.vshost.exe.manifest
文件 2580 2013-07-16 23:09 M1Card\Common\ErrorManager.cs
文件 3970 2013-07-16 23:09 M1Card\Common\URF.cs
文件 5904 2013-07-16 23:09 M1Card\M1Card.csproj
文件 522 2013-07-02 23:35 M1Card\M1Card.csproj.user
文件 9046 2013-07-16 23:12 M1Card\MainWindow.cs
文件 4842 2013-07-16 23:07 M1Card\MainWindow.Designer.cs
文件 5817 2013-07-16 13:59 M1Card\MainWindow.resx
文件 7000 2013-07-02 23:02 M1Card\obj\64\DesignTimeResolveAssemblyReferencesInput.cache
文件 4608 2013-07-02 23:02 M1Card\obj\64\TempPE\Properties.Resources.Designer.cs.dll
文件 120 2013-07-02 23:02 M1Card\obj\64\WindowsFormsApplication1.csproj.FileListAbsolute.txt
文件 1903 2013-07-02 23:29 M1Card\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 6825 2013-07-16 23:08 M1Card\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 591 2013-07-16 23:12 M1Card\obj\Debug\M1Card.csproj.FileListAbsolute.txt
............此处省略52个文件信息
- 上一篇:C#透明窗体画图电子尺
- 下一篇:C#WEB上传控件多附件上传
相关资源
- C#WEB上传控件多附件上传
- C#透明窗体画图电子尺
- C#HttpWebRequest大文件断点续传类
- C# Socket编程入门
- 实现科学计算的计算器c#
- Asp.NetC#创建Excel,动态给下拉框赋值
- VBnet 分线程窗体,主线程卡死任然报
- 自己编写的一个asp.net的文件管理系统
- C# FTP操作帮助类 FTPHelper.cs
- C#利用VFW实现摄像头程序
- Wince6.0+C#串口调试助手源码
- C# 基本图形示波器窗口设计源码
- C# 串口调试助手源码(自动搜索PC可用
- C#实现MVC设计模式源码
- C#多线程大文件
- C# 学生成绩管理系统+实验报告
- C#l连接SQL Sever数据库的简单
- c#坦克大战c#坦克大战c#坦克大战c#坦克
- C#串口读取数字温湿度传感器数据
- ArcGIS Engine+C#开发教程含代码
- 利用C#更专业的实现运行时调整控件大
- c# DATAGRID使用方法
- C#图像的加噪去噪
- C#会员积分管理系统
- 倒计时器源代码C#
- c# 计算器源码
- WPF拖拽控件(可点击)
- C# 编写通用FTP服务器程序 源码
- c#自定义组件及添加工具箱图标的方法
- C#编写登录窗体,连接SQL,有登录、注
评论
共有 条评论