rfid源代码 gunmanager.docx
《rfid源代码 gunmanager.docx》由会员分享,可在线阅读,更多相关《rfid源代码 gunmanager.docx(21页珍藏版)》请在冰豆网上搜索。
![rfid源代码 gunmanager.docx](https://file1.bdocx.com/fileroot1/2022-11/26/b7b45706-cf8b-440d-b969-64ef0dd2376b/b7b45706-cf8b-440d-b969-64ef0dd2376b1.gif)
rfid源代码gunmanager
物联网RFID原理与技术
课程设计报告
姓名:
滕玲
班级:
物联1301
学号:
131408119
日期:
2016.1.8
目录
第一部分:
一、实验目的
二、实验内容
三、基本原理
四、实验步骤
五、实验步骤教程
六、实验总结
七、附录
第二部分:
一、实验概述
二、实验目的
三、实验场景及所需仪器
四、实验系统简介
4.1系统组成
4.2各组成功能
五、系统功能
六、枪支管理系统的实现
6.1连接读写器
6.2连接读写器设备
6.3枪支登记
6.4枪支监控
6.5枪支盘点
七、心得体会
八、附录
实验代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.OleDb;
usingSystem.Threading;
usingSystem.Collections;
usingMicrosoft.DirectX;
usingMicrosoft.DirectX.DirectSound;
usingTagReaderLibrary;
namespaceGunManager
{
publicpartialclassForm1:
Form
{
BooleanIsLogined=false;
BooleanIsConnected=false;
BooleanIsChecked=false;
BooleanIsMonitor=false;
BooleanNeedAlam=false;
//BooleanNeedLoad=true;
ListAllDocuments,Names;
Threadthrd_Monitor=null;
EventWaitHandleewh;
delegatevoidShowInfoDelegate(Stringstr);
ShowInfoDelegateShowInfoDel;
Microsoft.DirectX.DirectSound.Devicemydevice;
Microsoft.DirectX.DirectSound.SecondaryBufferScdBuffer;
Microsoft.DirectX.DirectSound.BufferDescriptiondesc;
ISO15693Readerreader=newISO15693Reader();
publicForm1()
{
InitializeComponent();
}
privatevoidShowInfo(Stringstr)
{
lsb_Monitor.Items.Add(str);
lsb_Monitor.SelectedIndex=lsb_Monitor.Items.Count-1;
lsb_Monitor.ClearSelected();
}
//publicstaticIntPtrVarPtr(ObjectMyObject)//获得对象的指针
//{
//GCHandleMyGCHandle=GCHandle.Alloc(MyObject,GCHandleType.Pinned);
//IntPtrptr=MyGCHandle.AddrOfPinnedObject();
//MyGCHandle.Free();
//returnptr;
//}
privatevoidbtn_Login_Click(objectsender,EventArgse)
{
if(IsLogined)
{
lbl_Login.Text="您已经登录!
";
return;
}
if(txt_UserName.Text.Trim()=="")
{
lbl_Login.Text="请填写用户名!
";
return;
}
if(txt_PassWord.Text.Trim()=="")
{
lbl_Login.Text="请填写密码!
";
return;
}
OleDbConnectionconn=newOleDbConnection();
conn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\database.mdb;PersistSecurityInfo=True";
conn.Open();
Stringsql=String.Format("SELECTPassWordFROMtab_UserWHEREUserName='{0}'",txt_UserName.Text.Trim());
OleDbCommandcmd=newOleDbCommand(sql,conn);
OleDbDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
if(((String)dr["PassWord"]).Trim()==txt_PassWord.Text.Trim())
{
IsLogined=true;
lbl_Login.Text=String.Format("登录成功,尊敬的用户:
{0},欢迎您!
",txt_UserName.Text.Trim());
}
else
{
lbl_Login.Text="您的密码错误,请重新填写!
";
txt_PassWord.Text="";
txt_PassWord.Focus();
}
}
else
{
lbl_Login.Text="您的用户名不存在,请重新填写!
";
txt_UserName.Text="";
txt_UserName.Focus();
}
conn.Close();
conn=null;
cmd=null;
dr=null;
}
privatevoidbtn_Logout_Click(objectsender,EventArgse)
{
if(!
IsLogined)
{
lbl_Login.Text="尚未登录,不能注销!
";
return;
}
IsLogined=false;
lbl_Login.Text="已注销,继续使用需重新登录!
";
}
privatevoidbtn_Reset_Click(objectsender,EventArgse)
{
txt_UserName.Text="";
txt_PassWord.Text="";
}
privatevoidbtn_Open_Click(objectsender,EventArgse)
{
if(IsConnected)
{
lbl_Connect.Text="串口已经打开,不能重复打开串口!
";
return;
}
if(cmb_SerialPort.SelectedIndex<0)
{
lbl_Connect.Text="请选择与设备连接的串口地址!
";
return;
}
if(cmb_Baudrate.SelectedIndex<0)
{
lbl_Connect.Text="请选择与设备连接使用的波特率!
";
return;
}
Int32value=reader.OpenSerialPort(cmb_SerialPort.SelectedItem.ToString(),Int32.Parse(cmb_Baudrate.SelectedItem.ToString()));
if(value==0)
{
lbl_Connect.Text=String.Format("串口{0}打开成功!
",cmb_SerialPort.Text.Trim());
cmb_SerialPort.Enabled=false;
IsConnected=true;
}
else
{
lbl_Connect.Text=String.Format("串口{0}打开失败!
",cmb_SerialPort.Text.Trim());
IsConnected=false;
}
}
privatevoidbtn_Close_Click(objectsender,EventArgse)
{
if(!
IsConnected)
{
lbl_Connect.Text="串口尚未打开,无需关闭";
return;
}
else
{
Int32value=reader.CloseSerialPort();//CloseCom();
if(value==0)
{
IsConnected=false;
lbl_Connect.Text=String.Format("串口{0}已成功关闭!
",cmb_SerialPort.Text.Trim());
cmb_SerialPort.Enabled=true;
}
else
{
lbl_Connect.Text=String.Format("串口{0}关闭失败!
",cmb_SerialPort.Text.Trim());
}
}
}
privatevoidbtn_Read_Click(objectsender,EventArgse)
{
if(!
IsLogined)
{
lbl_Add.Text="请先登录系统!
";
return;
}
if(!
IsConnected)
{
lbl_Add.Text="请先打开串口,连接设备!
";
return;
}
inttagcount=0;
String[]tagnumber=newString[0];
Int32value=reader.Inventory(ISO15693Reader.ModulateMethod.ASK,ISO15693Reader.InventoryModel.Single,reftagcount,reftagnumber);//.GetOne(refdata);
//Inventory(data,0x27,reftagCount);
if((value!
=0)&&(tagnumber.Length>0))
{
lbl_Add.Text="读取失败,没有得到任何有效数据。
";
txt_Snr.Text="";
return;
}
txt_Snr.Text=tagnumber[0];//String.Format("{0:
X2}{1:
X2}{2:
X2}{3:
X2}{4:
X2}{5:
X2}{6:
X2}{7:
X2}",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7]);
lbl_Add.Text="读取成功!
";
}
privatevoidbtn_Add_Click(objectsender,EventArgse)
{
if(!
IsLogined)
{
lbl_Add.Text="请先登录系统!
";
return;
}
if(!
IsConnected)
{
lbl_Add.Text="请先打开串口,连接设备!
";
return;
}
if(txt_Snr.Text.Trim()=="")
{
lbl_Add.Text="请先读取与该枪支对应的标签!
";
btn_Add.Focus();
return;
}
if(txt_Name.Text.Trim()=="")
{
lbl_Add.Text="请填写枪支编号!
";
txt_Name.Focus();
return;
}
OleDbConnectionconn=newOleDbConnection();
conn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\database.mdb;PersistSecurityInfo=True";
conn.Open();
Stringsql=String.Format("SELECT*FROMtab_DocWHERETagId='{0}'",txt_Snr.Text.Trim());
OleDbCommandcmd=newOleDbCommand(sql,conn);
OleDbDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
lbl_Add.Text=String.Format("枪支[{0}]已经使用了该标签,请更换标签后重试!
",dr["DocName"]);
conn.Close();
conn=null;
cmd=null;
dr=null;
return;
}
sql=String.Format("INSERTINTOtab_Doc(TagId,DocName)VALUES('{0}','{1}')",txt_Snr.Text.Trim(),txt_Name.Text.Trim());
cmd=newOleDbCommand(sql,conn);
if(cmd.ExecuteNonQuery()==1)
{
lbl_Add.Text="添加成功!
";
txt_Snr.Text="";
txt_Name.Text="";
}
else
{
lbl_Add.Text="添加失败";
}
conn.Close();
conn=null;
cmd=null;
dr=null;
this.tab_DocTableAdapter.Fill(this.databaseDataSet.tab_Doc);
}
privatevoidbtn_Cancel_Click(objectsender,EventArgse)
{
txt_Snr.Text="";
txt_Name.Text="";
txt_Other.Text="";
btn_Read.Focus();
}
privatevoidbtn_Delete_Click(objectsender,EventArgse)
{
}
privatevoidbtn_Save_Click(objectsender,EventArgse)
{
tabDocBindingSource.EndEdit();
this.tab_DocTableAdapter.Update(this.databaseDataSet.tab_Doc);
}
privatevoidbtn_CancelModify_Click(objectsender,EventArgse)
{
tabDocBindingSource.CancelEdit();
this.tab_DocTableAdapter.Fill(this.databaseDataSet.tab_Doc);
}
privatevoidbtn_Refresh_Click(objectsender,EventArgse)
{
this.tab_DocTableAdapter.Fill(this.databaseDataSet.tab_Doc);
}
privatevoidbtn_Check_Click(objectsender,EventArgse)
{
IsChecked=false;
lock(this)
{
if(!
IsLogined)
{
lsb_Check.Items.Add("请先登录系统!
");
return;
}
if(!
IsConnected)
{
lsb_Check.Items.Add("请先打开串口,连接设备!
");
return;
}
if(IsMonitor)
{
lsb_Check.Items.Add("正在监控中,请先结束监控后再盘点!
");
return;
}
Int32TagCount=0;
String[]Snrs=newString[0];
Int32value=reader.Inventory(ISO15693Reader.ModulateMethod.ASK,ISO15693Reader.InventoryModel.Multiple,refTagCount,refSnrs);//.GetOne(refdata);
//Bytevalue=reader.GetAllTagsNum(outTagCount,outSnrs);
if(value==0x11)
{
lsb_Check.Items.Add("在天线厂区内没有检测到任何枪支。
");
return;
}
if(value>0)
{
lsb_Check.Items.Add(String.Format("盘点错误,错误代码为{0}!
",value));
return;
}
if(TagCount==0)
{
lsb_Check.Items.Add(String.Format("盘点结束,没有得到任何枪支信息!
",value));
return;
}
AllDocuments=newList();
AllDocuments.AddRange(Snrs);
lsb_Check.Items.Add(String.Format("检测到{0}个标签,具体信息如下:
",AllDocuments.Count));
Names=newList();
OleDbConnectionconn=newOleDbConnection();
conn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\database.mdb;PersistSecurityInfo=True";
conn.Open();
OleDbCommandcmd=newOleDbCommand();
cmd.Connection=conn;
OleDbDataReaderdr;
foreach(StringobjinAllDocuments)
{
cmd.CommandText=String.Format("SELECT*FROMtab_DocWHERETagId='{0}'",obj);;
dr=cmd.ExecuteReader();
if(dr.Read())
{
lsb_Check.Items.Add(String.Format("{0:
10}|{1}",obj,dr["DocName"]));
Names.Add(dr["DocName"].ToString());
}
else
{lsb_Check.Items.Add(String.Format("{0:
10}|空标签",obj));
Names.Add("空标签");
}
dr.Close();
}
IsChecked=true;
}
}
privatevoidbtn_Clear1_Click(objectsender,EventArgse)
{
lsb_Check.Items.Clear();
}
privatevoidbtn_Monitor_Click(objectsender,EventArgse)
{
if(IsMonitor)return;
if(!
IsLogined)
{
lsb_Monitor.Items.Add("请先登录系统!
");
return;
}
if(!
IsConnected)
{
lsb_Monitor.Items.Add("请先打开串口,连接设备!
");
return;
}
if(!
IsChecked)
{
lsb_Monitor.Items.Add("请先进行枪支盘点,以确认所有监控对象!
");
return;
}
IsMonitor=true;
if(thrd_Monitor==null)
{
thrd_Monitor=newThread(newThreadStart(ThreadMonitor));
thrd_Monitor.Start();
}
lsb_Monitor.Items.Add("您启动了枪支监控......");
}
privatevoidbtn_Stop_Click(objectsender,EventArgse)
{
if(!
IsMonitor)
{
lsb_Monitor.Items.Add("尚未启动监控!
");
return;
}
IsMonitor=false;
ewh.Reset();
Threadthread=newThread(newThreadStart(ThreadReport));
thread.Start();
}
privatevoidbtn_Clear2_Click(objectsender,EventArgse)
{
lsb_Moni