110,530
社区成员
发帖
与我相关
我的任务
分享
public class LoadLibraryDll
{
/// <summary>
/// 载入DLL,读卡,返回卡信息
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
//以C元素指针,从托管到非托管进行封装处理
[DllImport("OUR_IDR.dll", EntryPoint = "idr_read")]
public static extern byte idr_read([MarshalAs(UnmanagedType.LPArray)] byte[] serial);
[DllImport("OUR_IDR.dll")]
public static extern byte pcdgetdevicenumber([MarshalAs(UnmanagedType.LPArray)] byte[] devicenumbe);
}
public class ReturnCardRead
{
//创建数据缓存区间
byte[] cardNo = new byte[10];
//返回状态消息
string statusMsg = null;
/// <summary>
/// 读取卡号
/// </summary>
/// <returns></returns>
public String IdrRead()
{
try
{
//调用非托管DLL方法,并返回处理结果
byte readCardInfo = LoadLibraryDll.idr_read(cardNo);
//数据分割
string strValue = null;
//读取缓存控件大小
for (int i = 0; i < cardNo.Length; i++)
{
//每个空间的数据转换字符串
strValue += cardNo[i].ToString();
if (strValue.Length == 1)
strValue = "0" + strValue;
strValue += strValue;
}
//截取
strValue = strValue.Substring(2, 8);
//转化成非0开头的数字
int intTemp = Convert.ToInt32(strValue, 16);
strValue = intTemp.ToString();
//#define ERR_REQUEST 8//寻不到卡
//#define ERR_NONEDLL 21//没有动态库
//#define ERR_DRIVERORDLL 22//动态库或驱动程序异常
//#define ERR_DRIVERNULL 23//驱动程序错误或尚未安装
//#define ERR_TIMEOUT 24//操作超时,一般是动态库没有反映
//#define ERR_TXSIZE 25//发送字数不够
//#define ERR_TXCRC 26//发送的CRC错
//#define ERR_RXSIZE 27//接收的字数不够
//#define ERR_RXCRC 28//接收的CRC错