首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

200分问 C#调用读卡器解决办法

2012-06-03 
200分问 C#调用读卡器Function Integer DC_Mif_Read(Integer bAddr ,Ref String bData ) Library Fox_DC.

200分问 C#调用读卡器
Function Integer DC_Mif_Read(Integer bAddr ,Ref String bData ) Library "Fox_DC.dll"


Function Integer DC_Mif_Write(Integer bAddr , Ref String bData ) Library "Fox_DC.dll"

这两个函数是PB中的声明

说明如下:

DC_Mif_Write
DC_Mif_Write 函数向卡片内的指定块地址写入一字符串。

WORD DC_Mif_Write
  (
  BYTE _bAdr,
  BYTE *_bData
  );
 
参数
_bAdr 

要写入的块地址。对于Mifare S50卡,其范围为(1 - 63),对于Mifare L10卡,其范围为(2 - 11), Mifare 1102 其范围是(2 – 15);Token其范围是(2 – 15)。 

_bData 

无符号字符型指针,其内容为要写入到卡片内的ASC码形式的字符串。Mifare S50应确保已分配给_bData指针至少32个字节的空间,其余8字节就好。 

返回值
如果函数调用成功,返回值为0。

如果函数调用失败,返回值不为0。如需得到错误描述,请调用DC_GetLastError。

DC_Mif_Read
DC_Mif_Read 函数从卡片内的指定块地址读取一字符串。

WORD DC_Mif_Read
  (
  BYTE _bAdr, 
  BYTE *_bData
  ) 
参数
_bAdr

要读取的块地址。对于Mifare S50卡,其范围为(0 - 63);对于Mifare L10卡,其范围为(0 - 11),其中有连续两个块读的内容是一样的;Mifare 1102 其范围是(0 – 15);Token其范围是(0 – 15)。 

_bData 

无符号字符型指针,指向从卡片存储区内读到的字符串的ASC码并返回给应用程序。读Mifare S50的卡应确保已分配给_bData指针至少32个字节的空间,Mifare L10 至少16字节空间,其余8字节就可。 

 

返回值
如果函数调用成功,返回值为0。

如果函数调用失败,返回值不为0。如需得到错误描述,请调用DC_GetLastError。 


 

 

请问在C#中如何调用?????



[解决办法]
不懂

 帮顶!
[解决办法]
高深,顶贴
[解决办法]
关注.
[解决办法]

C# code
[DllImport("FOX_DC.dll", EntryPoint = "DC_Mif_Read", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]         public static extern int DC_Mif_Read(int bAddr,string bData); [DllImport("FOX_DC.dll", EntryPoint = "DC_Mif_Write", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]         public static extern int DC_Mif_Write(int bAddr,string bData);
[解决办法]
没用过,帮顶
[解决办法]
期待高手出现,帮顶
[解决办法]
C# code
[DllImport("FOX_DC.dll", EntryPoint = "DC_Mif_Read", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]         public static extern int DC_Mif_Read(int bAddr,ref string bData);
[解决办法]
学习中,免得沉下去,顶起来
[解决办法]
以前做M1读卡的时候主要取决然于DLL文件,,如果说DLL中的此方法的话会好一些,具体要看DLL文件中的了,因为毕竟你是通过调用DLL文件中的方法去启动卡的
[解决办法]
是通过DLL文件去启动读卡器的
[解决办法]
绑定 我过段时间也会用到这玩意 期待高手
[解决办法]
郁闷 哪个图不能贴,申请了好久了 郁闷,管理员在干什么。火大的很
[DllImport("FOX_DC.dll", EntryPoint = "DC_Mif_Read", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 


public static extern int DC_Mif_Read(int bAddr,ref string bData); 


[解决办法]
楼主,我不知道你这读卡器是读数的,我只说一下以前我的读卡方式,是通过事件来返回的,即发送个命令如果命令正确会触发事件,然后通过事件来得到返回值的,具体要看你的DLL以及卡的方式,你老是纠缠在DLL方法上,我认为不可取,
[解决办法]

C# code
 public static extern int DC_Mif_Write(UInt16 bAddr,ref  StringBuilder bData);
[解决办法]
第二个参数用byte[]试试。
[解决办法]
学习中
[解决办法]
发一个参数对照表。。
HANDLE void* System.IntPtr 
 
BYTE unsigned char System.Byte 
 
SHORT short System.Int16 

WORD unsigned short System.UInt16 
 
INT int System.Int32 

UINT unsigned int System.UInt32 

LONG long System.Int32 

BOOL long System.Int32 

DWORD unsigned long System.UInt32 
 
ULONG unsigned long System.UInt32 

CHAR char System.Char
 
LPSTR char* System.String 或 System.Text.StringBuilder
 
LPCSTR Const char* System.String 或 System.Text.StringBuilder

LPWSTR wchar_t* System.String 或 System.Text.StringBuilder

LPCWSTR Const wchar_t* System.String 或 System.Text.StringBuilder
 
FLOAT Float System.Single 
 
DOUBLE Double System.Double
[解决办法]
所以你
 public static extern int DC_Mif_Write(UInt16 bAddr,ref byte[] bData);
[解决办法]
~这问题很难么~
[解决办法]
高深的问题
[解决办法]
把试出的答案贴出来
[解决办法]
不懂 

帮顶!

[解决办法]
探讨
所以你
public static extern int DC_Mif_Write(UInt16 bAddr,ref  byte[] bData);

[解决办法]
学习了..............
[解决办法]
前面应该一样,调试看看数据
StringBuilder 修改string看看
[解决办法]
默默帮顶~
[解决办法]
不懂~太高深了
[解决办法]
顶个,调试看看,到底是哪里。。
[解决办法]
不懂,又学习了...
呵呵
[解决办法]
我想问一下。

C#调用读卡器?

有这样一个现有的程序吗?读卡器?

是否就是我们生活中的,一些饭堂饭卡,或是地铁,或是公交的月卡,之类的。是这些读卡器吗?

你现在是属于做好了的硬件?

然后再用C#去写驱动吗?

还是怎么样的。。。我很想很想了解。。。

希望楼主可以回答我这个问题。

谢谢。
[解决办法]

[解决办法]
以前总是C#搞C++,
LZ这次是C#搞PB
------解决方案--------------------



我也期待这样的帖子 能有个完美的结果
我也想做个这样的程序 我觉得很复杂很复杂
[解决办法]
帮顶
[解决办法]
关注下,不知道将来能否用到!

热点排行