c#+ic卡应用

上传人:xzh****18 文档编号:35439492 上传时间:2018-03-15 格式:DOC 页数:9 大小:114.50KB
返回 下载 相关 举报
c#+ic卡应用_第1页
第1页 / 共9页
c#+ic卡应用_第2页
第2页 / 共9页
c#+ic卡应用_第3页
第3页 / 共9页
c#+ic卡应用_第4页
第4页 / 共9页
c#+ic卡应用_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《c#+ic卡应用》由会员分享,可在线阅读,更多相关《c#+ic卡应用(9页珍藏版)》请在金锄头文库上搜索。

1、c# IC 卡应用 2008 年 02 月 26 日 星期二 21:47 IC(Integrated Circuit)卡,也被称作智能 卡(Smart Card),具有写入数据和存储数据的功 能,IC 卡内存储器的内容可以根据需要有条件地供 外部读取,完成信息处理和判定。由于其内部具有 集成电路,不但可以存储大量信息,具有极强的保 密性能,并且还具有抗干扰、无磨损、寿命长等特 性。因此在各个领域中得到广泛应用。下面通过两 个实例介绍 IC 卡的简单应用。实例 422 向 IC 卡中写入数据实例说明实例说明IC 卡是携带应用信息和数据的媒体,空白 IC 卡是不能立即使用的,必须对 IC 卡应用系

2、统进行初始化,写入系统 IC 卡和个人密码,个人专用信息和应用数 据。下面介绍如何向 IC 卡中写入数据。运行本例,在“数据”文本框中输入要 存入 IC 卡中的数据,单击“写数据”按钮,即可将输入的数据写入 IC 卡中。 如图 13.6 所示。技术要点技术要点本例使用的是深圳明华生产的明华 IC 卡读写器,用户在使用时将驱动程序 安装完毕后,即可正常使用本系统。 本例通过调用 Mwic_32.dll 链接库,进行 IC 卡的读写工作。下面介绍与 IC 卡写操作相关的几个函数。 (1)auto_init 函数 该函数用于初始化 IC 卡读卡器。语法如下: public static extern

3、 int auto_init(int port, int baud); 参数说明如下。 l port:标识端口号,Com1 对应的端口号为 0;Com2 对应的端口号为 1, 依此类推。 l baud:标识波特率。 l 返回值:如果初始化成功,返回值是 IC 卡设备句柄;如果初始化失败, 返回值小于零。 (2)setsc_md 函数 该函数用于设置设备密码模式。语法如下: public static extern int setsc_md(int icdev, int mode); 参数说明如下。 l icdev:标识设备句柄,通常是 auto_init 函数的返回值。 l mode:标识设备

4、密码模式,如果为 0,设备密码有效,设备在加电时必须 验证设备密码才能对设备进行操作。如果为 1,设备密码无效。 l 返回值:如果函数执行成功返回值为零,否则小于零。(3)get_status 函数 该函数用于获取设备的当前状态。语法如下: public static extern Int16 get_status(int icdev, Int16* state); 参数说明如下。 l icdev:标识设备句柄,通常是 auto_init 函数的返回值。 l state:用于接收函数返回的结果。如果为 0 表示读卡器中无卡,为 1 表 示读卡器中有卡。 l 返回值:如果函数执行成功返回值为零,

5、否则小于零。 (4)csc_4442 函数 该函数用于核对 IC 卡密码。语法如下: public static extern Int16 Csc_4442(int icdev, int len, MarshalAs(UnmanagedType.LPArray) byte p_string); 参数说明如下。 l icdev:标识设备句柄,通常是 auto_init 函数的返回值。 l len:标识密码长度,其值为 3。 l p_string:标识设置的密码。 l 返回值:如果函数执行成功返回值为零,否则小于零。 (5)swr_4442 函数 该函数用于向 IC 卡中写入数据。语法如下: pu

6、blic static extern int swr_4442(int icdev, int offset, int len, char* w_string); 参数说明如下。 l icdev:标识设备句柄,通常是 auto_init 函数的返回值。 l offset:标识地址的偏移量,范围是 0255。 l len:标识字符串长度。 l w_string:标识写入的数据。 (6)ic_exit 函数 该函数用于关闭设备端口。语法如下: public static extern int ic_exit(int icdev); 参数说明如下。 l icdev:标识设备句柄,通常是 auto_in

7、it 函数的返回值。 (7)dv_beep 函数 该函数使读卡器嗡鸣。语法如下: public static extern int dv_beep(int icdev, int time); 参数说明如下。 l icdev:标识设备句柄,通常是 auto_init 函数的返回值。 l time:标识嗡鸣持续的时间,单位是 10 毫秒。实现过程实现过程(1)新建一个项目,命名为 Ex13_05,默认窗体为 Form1。 (2)在 Form1 窗体中,主要添加两个 Button 控件,用于执行向卡中写入数 据和退出程序的操作,添加一个 TextBox 控件,将 TextBox 中数据写入 IC 卡

8、中。(3)主要程序代码。将程序所使用的操作 IC 卡的函数,封装在类 IC 中。代码如下: StructLayout(LayoutKind.Sequential) public unsafe class IC /对设备进行初始化DllImport(“Mwic_32.dll“, EntryPoint = “auto_init“, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)public static extern i

9、nt auto_init(int port, int baud);/设备密码格式DllImport(“Mwic_32.dll“, EntryPoint = “setsc_md“, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)public static extern int setsc_md(int icdev, int mode);/获取设备当前状态DllImport(“Mwic_32.dll“, EntryPoi

10、nt = “get_status“, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)public static extern Int16 get_status(int icdev, Int16* state);/关闭设备通讯接口DllImport(“Mwic_32.dll“, EntryPoint = “ic_exit“, SetLastError = true, CharSet = CharSet.Ansi, Ex

11、actSpelling = true, CallingConvention = CallingConvention.StdCall)public static extern int ic_exit(int icdev);/使设备发出蜂鸣声DllImport(“Mwic_32.dll“, EntryPoint = “dv_beep“, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)public static exter

12、n int dv_beep(int icdev, int time);/向 IC 卡中写数据DllImport(“Mwic_32.dll“, EntryPoint = “swr_4442“, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)public static extern int swr_4442(int icdev, int offset, int len, char* w_string);/核对卡密码 Dl

13、lImport(“Mwic_32.dll“, EntryPoint = “csc_4442“, SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)public static extern Int16 Csc_4442(int icdev, int len, MarshalAs(UnmanagedType.LPArray) byte p_string); 下面代码主要用于将 TextBox 中数据写入到 IC 卡中。代码如下

14、:private void button1_Click(object sender, EventArgs e)/初始化int icdev = IC.auto_init(0, 9600);if (icdev 0)textBox2.Text = ds.Tables0.Rows00.ToString();textBox3.Text = ds.Tables0.Rows01.ToString();textBox4.Text = ds.Tables0.Rows02.ToString();textBox5.Text = ds.Tables0.Rows03.ToString();elselabel6.Text = “不存在该用户!“;举一反三举一反三根据本实例,读者可以开发以下程序。 代金卡系统。 工资发放系统。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 多媒体应用

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号