rfid源代码 gunmanagerWord文档格式.docx
《rfid源代码 gunmanagerWord文档格式.docx》由会员分享,可在线阅读,更多相关《rfid源代码 gunmanagerWord文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
六、枪支管理系统的实现
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;
List<
String>
AllDocuments,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()=="
)
请填写用户名!
if(txt_PassWord.Text.Trim()=="
请填写密码!
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},欢迎您!
else
您的密码错误,请重新填写!
txt_PassWord.Text="
txt_PassWord.Focus();
您的用户名不存在,请重新填写!
txt_UserName.Text="
txt_UserName.Focus();
conn.Close();
conn=null;
cmd=null;
dr=null;
privatevoidbtn_Logout_Click(objectsender,EventArgse)
if(!
IsLogined)
尚未登录,不能注销!
IsLogined=false;
已注销,继续使用需重新登录!
privatevoidbtn_Reset_Click(objectsender,EventArgse)
privatevoidbtn_Open_Click(objectsender,EventArgse)
if(IsConnected)
lbl_Connect.Text="
串口已经打开,不能重复打开串口!
if(cmb_SerialPort.SelectedIndex<
0)
请选择与设备连接的串口地址!
if(cmb_Baudrate.SelectedIndex<
请选择与设备连接使用的波特率!
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;
串口{0}打开失败!
IsConnected=false;
privatevoidbtn_Close_Click(objectsender,EventArgse)
IsConnected)
串口尚未打开,无需关闭"
Int32value=reader.CloseSerialPort();
//CloseCom();
串口{0}已成功关闭!
cmb_SerialPort.Enabled=true;
串口{0}关闭失败!
privatevoidbtn_Read_Click(objectsender,EventArgse)
lbl_Add.Text="
请先登录系统!
请先打开串口,连接设备!
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))
读取失败,没有得到任何有效数据。
txt_Snr.Text="
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]);
读取成功!
privatevoidbtn_Add_Click(objectsender,EventArgse)
if(txt_Snr.Text.Trim()=="
请先读取与该枪支对应的标签!
btn_Add.Focus();
if(txt_Name.Text.Trim()=="
请填写枪支编号!
txt_Name.Focus();
SELECT*FROMtab_DocWHERETagId='
txt_Snr.Text.Trim());
lbl_Add.Text=String.Format("
枪支[{0}]已经使用了该标签,请更换标签后重试!
dr["
DocName"
]);
sql=String.Format("
INSERTINTOtab_Doc(TagId,DocName)VALUES('
'
{1}'
)"
txt_Snr.Text.Trim(),txt_Name.Text.Trim());
cmd=newOleDbCommand(sql,conn);
if(cmd.ExecuteNonQuery()==1)
添加成功!
txt_Name.Text="
添加失败"
this.tab_DocTableAdapter.Fill(this.databaseDataSet.tab_Doc);
privatevoidbtn_Cancel_Click(objectsender,EventArgse)
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();
privatevoidbtn_Refresh_Click(objectsender,EventArgse)
privatevoidbtn_Check_Click(objectsender,EventArgse)
IsChecked=false;
lock(this)
lsb_Check.Items.Add("
);
if(IsMonitor)
正在监控中,请先结束监控后再盘点!
Int32TagCount=0;
String[]Snrs=newString[0];
Int32value=reader.Inventory(ISO15693Reader.ModulateMethod.ASK,ISO15693Reader.InventoryModel.Multiple,refTagCount,refSnrs);
//Bytevalue=reader.GetAllTagsNum(outTagCount,outSnrs);
if(value==0x11)
在天线厂区内没有检测到任何枪支。
if(value>
lsb_Check.Items.Add(String.Format("
盘点错误,错误代码为{0}!
value));
if(TagCount==0)
盘点结束,没有得到任何枪支信息!
AllDocuments=newList<
string>
();
AllDocuments.AddRange(Snrs);
检测到{0}个标签,具体信息如下:
AllDocuments.Count));
Names=newList<
OleDbCommandcmd=newOleDbCommand();
cmd.Connection=conn;
OleDbDataReaderdr;
foreach(StringobjinAllDocuments)
cmd.CommandText=String.Format("
obj);
;
dr=cmd.ExecuteReader();
10}|{1}"
obj,dr["
]));
Names.Add(dr["
].ToString());
{lsb_Check.Items.Add(String.Format("
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;
lsb_Monitor.Items.Add("
IsChecked)
请先进行枪支盘点,以确认所有监控对象!
IsMonitor=true;
if(thrd_Monitor==null)
thrd_Monitor=newThread(newThreadStart(ThreadMonitor));
thrd_Monitor.Start();
您启动了枪支监控......"
privatevoidbtn_Stop_Click(objectsender,EventArgse)
IsMonitor)
尚未启动监控!
IsMonitor=false;
ewh.Reset();
Threadthread=newThread(newThreadStart(ThreadReport));
thread.Start();
privatevoidbtn_Clear2_Click(objectsender,EventArgse)
lsb_Moni