using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace RF.Util
{
class Rf
{
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_link_com(int comid);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_unlink_com();
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_card();
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_load_key(int sect, char[] pass);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_rd_keya_card(int id18, int id0, int block, int offset, byte[] content);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_beep(int keep);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_rd_card(int id18, int id0, int block, int offset, ref string content);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_rd_cardc(int id18, int id0, int block, int offset, ref string content);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_wr_card(int id18, int id0, int block, int offset, ref string content);
[DllImport("Rfdll32.dll")]
public static unsafe extern int rf_wr_cardc(int id18, int id0, int block, int offset, ref string content);
//public unsafe string returncode()
//{
// string a = rf_link_com(1) + "";
// byte[] content = new byte[17];
// rf_rd_keya_card(18, 0, 2, content);
// return a;
//}
public unsafe bool init()
{
Config config = Config.GetInstance();
// a = rf_link_com(1);
int comPort = rf_link_com(config.ComID);
int keyAload = rf_load_key(0, "FFFFFFFFFFFF".ToCharArray());
//rf_beep(1);
return true;
}
public unsafe void Beep() {
rf_beep(1);
}
public unsafe string readNum()
{
string CardValue = "";
string CardBh = "";
byte[] codeOrig = new byte[32];
int codeN = 0;
bool isTeacher = false;
byte[] testCode = new byte[4];
byte[] Nullable = { 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0 };
byte[] Nullable2 = { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 };
codeN = rf_rd_keya_card(18, 0, 1, 16, codeOrig);
for (int i = 0; i < 4; i++)
{
testCode[i] = codeOrig[i];
}
if (codeN == 0)
{
if (codeOrig.Equals(Nullable) || codeOrig.Equals(Nullable2)) // 1块前几位如果是连续多个"0"或"F",就表示没有数据,继续读下一块
{
codeN = rf_rd_keya_card(18, 0, 2, 16, codeOrig);
isTeacher = true;
} // 职工卡
else
{
isTeacher = false; // 学生卡
}
CardBh = CardToBuaa(codeOrig, isTeacher, 1);
// 把从卡中读出的ID信息转换成校内的编号
CardValue = CardToBuaa(codeOrig, isTeacher, 2);
}
else
{
}
return CardValue;
}
private string CardToBuaa(byte[] chars, bool isTeacher, int flag)
{
//byte[] target = {0x33,0x30,0x33,0x34,0x30,0x33,0x38,0x33,0x36,0x30,0,0,0,0,0,0};
char[] a = System.Text.Encoding.ASCII.GetChars(chars, 0, 18);
//int[] b=new int[16];
string med = new string(a);
//3034038360
string h = med.Substring(0, 2);
string l = med.Substring(2, 2);
string c = med.Substring(4, 2);
int len = int.Parse(c);
string e = "";
if (len > 10)
{
e = med.Substring(6, 12);
}
else {
e = med.Substring(6, int.Parse(c));
}
byte a1 = byte.Parse(h, System.Globalization.NumberStyles.AllowHexSpecifier);
byte a2 = byte.Parse(l, System.Globalization.NumberStyles.AllowHexSpecifier);
byte[] head ={ a1, a2 };
char[] headc = System.Text.Encoding.ASCII.GetChars(head, 0, head.Length);
string cardNum = new string(headc) + e;
string result = "";
// bool isTeacher = true;
string masterType = "";
if (flag == 1)
{
result = cardNum;
}
else
{
if (isTeacher)
{
result = cardNum;
}
else
{
string studentTypeStr = cardNum.Substring(0, 2);
if (studentTypeStr.Equals("01"))
{
result = "BY" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
if (studentTypeStr.Equals("11"))
{
masterType = cardNum.Substring(8, 2);
if (masterType.Equals("00"))
{
result = "SY" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
if (masterType.Equals("01"))
{
result = "MB" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
result = "不识别" + studentTypeStr + masterType;
}
}
}
else
{
/////////////////////
if (studentTypeStr.Equals("12"))
{
masterType = cardNum.Substring(8, 2);
if (masterType.Equals("00"))
{
result = "GS" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
if (masterType.Equals("01"))
{
result = "EM" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
result = "不识别" + studentTypeStr + masterType;
}
}
}
////////////////
else
{
/////////////////////
if (studentTypeStr.Equals("13"))
{
masterType = cardNum.Substring(8, 2);
if (masterType.Equals("00"))
{
result = "DY" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
if (masterType.Equals("01"))
{
result = "JX" + cardNum.Substring(4, 4) + cardNum.Substring(11, 3);
}
else
{
result = "不识别" + studentTypeStr + masterType;
}
}
}
else
{
if (studentTypeStr.Equals("22"))
{
result = "3" + cardNum.Substring(5, 3) + cardNum.Substring(10, 4);
}
else
{
if (studentTypeStr.Equals("24"))
{
result = "4" + cardNum.Substring(5, 3) + cardNum.Substring(10, 4);
}
else
{
if (studentTypeStr.Equals("55"))
{
result = "5" + cardNum.Substring(5, 3) + cardNum.Substring(10, 4);
}
else
{
result = "不识别" + studentTypeStr;
}
}
}
}
////////////////
}
}
}
}
}
return result;
}
}
}
相关推荐
北京航空航天大学作为中国知名的高等学府,其复变函数课程对于培养学生的数学思维与解决实际问题的能力具有重要意义。 从北航提供的复变函数试题库中可以看出,这些试题覆盖了复变函数论的多个核心知识点,其中包含...
北京航空航天大学复变函数与积分变换2015-2016_1_期末试卷A.doc
北京航空航天大学991考研真题.zip
北京航空航天大学的《复变函数与积分变换》是数学学科中的一门专业课程,主要研究复数域上的函数以及它们的积分变换。从提供的部分复习资料中,我们可以提炼出以下几个重要的知识点: 1. 复变函数的基础概念:复变...
4. **圆周积分**:第四题中,如果c为正向圆周2=z,根据Cauchy积分定理,对于整函数(即在整个复平面上解析的函数),其沿单位圆的积分等于0。 5. **零点与极点的组合**:第五题考察的是函数零点与极点的关系。当...
针对北京航空航天大学提供的这份期末考试试卷,可以进一步了解这些知识点在具体题目中的应用和解决策略。在准备相关考试时,理解这些知识点的概念,掌握它们的计算方法,并能够灵活运用到具体问题中,是取得好成绩的...
本知识点整理基于北京航空航天大学2011-2012学年第一学期期末考试《工科数学分析(Ⅰ)》(A卷)的内容,这些题目反映了学生在学年结束时对所学知识的掌握情况,以及教学目标的实现程度。 从试卷中抽取的题目来看,...
总的来说,北京航空航天大学的《复变函数与积分变换》课程内容丰富,涵盖了复数、解析函数、级数、积分变换等多个方面。期末考试试卷通过不同题型和难度的题目全面考查了学生对这些知识点的掌握情况,同时也在一定...
2011年北京航空航天大学的期末考试试卷主要考察了学生对这些概念的理解和应用能力。 1. 复变函数:复变函数是形如f(z)的函数,其中z是复数。题目中出现了多项式、指数、三角函数等类型的复变函数,如5075100zzz...
北京航空航天大学作为中国顶尖的工科院校,其在复变函数与积分变换的教学上具有较高的水平,这套习题集就是对这一课程知识的深入探讨和实践训练。 复变函数是研究复数作为自变量的函数,它涉及到复数的解析性、奇异...
北京航空航天大学作为国内顶尖的工科院校,其硕士研究生入学考试的自动控制原理真题无疑具有极高的学术价值和参考意义。这份2008年的真题及解析,为准备考研的学生提供了宝贵的复习资料。 自动控制原理主要包含以下...
北京航空航天大学复变函数试题A.doc北京航空航天大学复变函数试题A.doc北京航空航天大学复变函数试题A.doc
标题“2020年北京航空航天大学《现代控制理论》期末考试试卷A.pdf”和描述“2020年北京航空航天大学《现代控制理论》期末考试试卷A”所指的知识点涉及现代控制理论的基础概念、方法和应用。以下详细说明试卷中的知识...
这份“北京航空航天大学2003-2004学年第一学期自动控制原理本科试卷答案”提供了对这门课程深入理解和掌握的宝贵资料。 自动控制原理主要研究的对象是动态系统,包括连续时间系统和离散时间系统,其目标是设计控制...
#### 北京航空航天大学数值分析历年部分期末试题概览 北京航空航天大学作为国内顶尖的工科院校之一,在数值分析这一领域有着深厚的学术底蕴与教学经验。该资料整理了自2001年至2009年间的部分期末考试题目,并附带...
《北京航空航天大学961考研真题(2015-2019年)》是一份涵盖了五年的考研试题集,专为备考北京航空航天大学相关专业的学生提供宝贵的复习资源。这份压缩包文件包含了从2015年至2019年连续五年的961科目考试真题,是...
北京航空航天大学(Beihang University)简称北航,是工业和信息化部直属的全国重点大学,位列世界一流大学建设高校、211工程、985工程重点建设高校,入选珠峰计划、2011计划、111计划、卓越工程师教育培养计划、...
北京航空航天大学的复变函数与积分变换复习资料可能包括以下几个部分: 1. 复数基础:介绍复数的概念、运算规则、复平面表示、极坐标表示以及复数的几何意义。 2. 复变函数:讲解复变函数的基本概念,如解析函数、...
《北京航空航天大学数字与图像处理课件》是宇航学院提供的宝贵学习资源,涵盖了数字图像处理领域的核心概念和方法。这个课程旨在深入理解和应用图像处理技术,为学生提供坚实的理论基础和实践经验。以下是对各章节...
北航《数学分析》大一下的期末试卷是针对北京航空航天大学大一下学期学生的一份重要考试材料,包含了大量与数学分析相关的知识点。试卷通常包括了积分、微分、级数、向量分析以及多元函数微积分等多个部分的练习题目...