C# IC卡验证密码总是返回4(未验证密码)
string key = "ffffffffffff"; byte [] b= Encoding.ASCII.GetBytes(key); st = rf_load_key(idev, 4, 5, b); MessageBox.Show("装载密码:" + st); st = rf_authentication(idev,4,5); MessageBox.Show("验证密码:" + st);有没有c#的demo 参考下 ,或者发到979891946@qq.com,谢谢了 --------------------编程问答-------------------- 找了C#的demo
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int icdev;
int st;
byte[] snr = new byte[5];
private void button1_Click(object sender, EventArgs e)
{
icdev = Program.rf_init(0, 9600);
if (icdev > 0)
{
listBox1.Items.Add("Com Connect success!");
byte[] status = new byte[30];
st = Program.rf_get_status(icdev, status);
//lbHardVer.Text=System.Text.Encoding.ASCII.GetString(status);
listBox1.Items.Add(System.Text.Encoding.Default.GetString(status));
Program.rf_beep(icdev, 25);
}
else
listBox1.Items.Add("Com Connect failed!");
byte[] key = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
int mode = 0;
int sector = 0;
for (int i = 0; i < 16; i++)
{
st = Program.rf_load_key(icdev, mode, sector, key);
if (st != 0)
{
string s1 = Convert.ToString(sector);
listBox1.Items.Add(s1 + " sector rf_load_key error!");
}
//else
//{
// listBox1.Items.Add("rf_load_key seccess!");
//}
sector++;
}
}
private void button1_Click_1(object sender, EventArgs e)
{
int sector = 3;
st = Program.rf_card(icdev, 0, snr); //寻卡
if (st != 0)
{
listBox1.Items.Add("rf_card error");
}
else
{
byte[] snr1 = new byte[8];
listBox1.Items.Add("rf_card right!");
Program.hex_a(snr, snr1, 4);
listBox1.Items.Add(System.Text.Encoding.Default.GetString(snr1));
}
st = Program.rf_authentication(icdev, 0, sector); //验证密码
if (st != 0)
{
listBox1.Items.Add("rf_authentication error!");
}
else
{
listBox1.Items.Add("rf_authentication right!");
}
byte[] data = new byte[16];
string databuff = "深圳明华澳汉科技";
data = Encoding.Default.GetBytes(databuff);
st = Program.rf_write(icdev, sector * 4 + 1, data); //写数据
if (st != 0)
{
listBox1.Items.Add("rf_write error!");
listBox1.Items.Add(st.ToString());
}
else
{
listBox1.Items.Add("rf_write right!");
}
byte[] databuffer = new byte[32];
st = Program.rf_read(icdev, sector * 4 + 1, databuffer); //读数据
if (st != 0)
{
listBox1.Items.Add("rf_read error!");
listBox1.Items.Add(st.ToString());
}
else
{
listBox1.Items.Add("rf_read right!");
listBox1.Items.Add(System.Text.Encoding.Default.GetString(databuffer));
}
byte[] keya = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
byte[] keyb = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
st = Program.rf_changeb3(icdev, sector, keya, 0, 0, 0, 1, 0, keyb); //改密码
if (st != 0)
{
listBox1.Items.Add("rf_changeb3 error!");
listBox1.Items.Add(st.ToString());
}
else
{
listBox1.Items.Add("rf_changeb3 right!");
}
Program.rf_halt(icdev);
Program.rf_beep(icdev, 50);
}
private void button2_Click(object sender, EventArgs e)
{
st = Program.rf_exit(icdev);
if (st == 0)
{
listBox1.Items.Add("断开连接!");
}
}
private void button3_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
private void button4_Click(object sender, EventArgs e)
{
st = Program.rf_ctl_mode(icdev, 0);
if (st != 0)
{
MessageBox.Show("设置控制模式失败!");
}
else
{
MessageBox.Show("控制模式: 计算机控制!");
}
st = Program.rf_CtlBackLight(icdev, 1);
if (st != 0)
{
MessageBox.Show("打开LCD背光失败!");
}
else
{
MessageBox.Show("打开LCD背光!");
}
st = Program.rf_LcdClrScrn(icdev, 2);
if (st != 0)
{
MessageBox.Show("LCD清屏失败!");
}
else
{
MessageBox.Show("LCD清屏!");
}
//st = Program.rf_DispMainMenu(icdev);
//if (st != 0)
//{
// MessageBox.Show("显示欢迎光临失败!");
//}
//else
//{
// MessageBox.Show("欢迎光临!");
//}
st = Program.rf_DispLcd(icdev, 0, 0x01);
if (st != 0)
{
MessageBox.Show("显示操作失败!");
}
else
{
MessageBox.Show("请刷卡!");
}
byte[] data = new byte[15];
string databuff = "明华澳汉科技";
data = Encoding.Default.GetBytes(databuff);
st = Program.rf_DispInfo(icdev, 1, 0, data);
if (st != 0)
{
MessageBox.Show("显示失败!");
}
else
{
MessageBox.Show("明华澳汉科技!");
}
}
private void button5_Click(object sender, EventArgs e)
{
st = Program.rf_ctl_mode(icdev, 0);
if (st != 0)
{
MessageBox.Show("设置控制模式失败!");
}
else
{
MessageBox.Show("控制模式: 计算机控制!");
}
byte[] disp_str = new byte[] { 0x00, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88 };
//byte[] disp_str = new byte[10];
//string databuff = "12345678";
//disp_str = Encoding.Default.GetBytes(databuff);
st = Program.rf_disp8(icdev, 8, disp_str);
}
private void button6_Click(object sender, EventArgs e)
{
st = Program.rf_card(icdev, 0, snr); //寻卡
if (st != 0)
{
listBox1.Items.Add("rf_card error");
}
else
{
byte[] snr1 = new byte[8];
listBox1.Items.Add("rf_card right!");
Program.hex_a(snr, snr1, 4);
listBox1.Items.Add(System.Text.Encoding.Default.GetString(snr1));
}
byte[] resetData = new byte[256];
byte[] rData = new byte[500];
byte[] sendCmd = new byte[] { 0, 0, 0, 5,0,0x84,0,0,8}; //第四个字节为发送的命令长度
st = Program.rf_pro_rst(icdev, resetData);
if (st != 0)
{
listBox1.Items.Add("复位失败!");
}
else
{
Program.hex_a(resetData, rData, resetData[0]); //将复位信息转换为ASC字符串存放在rData中
listBox1.Items.Add(System.Text.Encoding.Default.GetString(rData));
}
Array.Clear(resetData, 0, 256);
st = Program.rf_pro_trn(icdev, sendCmd, resetData);
if (st != 0)
{
listBox1.Items.Add("取随机数失败!");
}
else
{
Array.Clear(rData, 0, 500);
Program.hex_a(resetData, rData, resetData[3] + 4);
listBox1.Items.Add(System.Text.Encoding.Default.GetString(rData));
}
}
}
}
--------------------编程问答-------------------- 您好!现在您这个只能读8位的id,怎么读14位或者说别的位数啊。 --------------------编程问答-------------------- 那你把byte[] snr=new byte[16];
这样的长度改大一点试试吧,这个问题我也不太清楚
补充:.NET技术 , C#