




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using ISO15693DLL;using System.Threading;namespace ISO15693_Reader public partial class Main : Form /串口操作类的实例化 ISO15693Reader Reader = new ISO15693Reader(); /IsCommand用来标记当前五个实验中,使用的是那种命令,下面有对应的注释 private Int32 IsCommand = 0; public Main() InitializeComponent(); private void Main_Load(object sender, EventArgs e) /窗体加载时调用 RefreshPort(); cmb_Baud.SelectedIndex = 0; cmb_Reset.SelectedIndex = 0; group_Operate.Enabled = false; group_Paramter.Enabled = false; btn_Close.Enabled = false; txt_BlockCount.ReadOnly = true; / / 声明一个委托,用于显示窗体上的List_Info控件的信息 / / private delegate void AddList(string msg); / / 显示List_Info控件信息的方法 / / private void ShowList(string msg) /使用委托显示信息,可避免跨线程调用的问题 if (list_Info.InvokeRequired) AddList d = new AddList(ShowList); list_Info.Invoke(d, msg); else list_Info.Items.Insert(0, DateTime.Now.ToLongTimeString() + : + msg); /打开串口 private void btn_Open_Click(object sender, EventArgs e) if (cmb_Port.SelectedIndex 0) ShowList(打开失败,请选择串口!); return; Byte value = Reader.OpenSerialPort(cmb_Port.Text, Convert.ToInt32(cmb_Baud.Text); if (value = 0x00) group_Paramter.Enabled = true; group_Operate.Enabled = true; btn_Open.Enabled = false; btn_Close.Enabled = true; ShowList(string.Format(Port:0,OpenSucceed!,Baud:1, cmb_Port.Text, cmb_Baud.Text); else ShowList(string.Format(Port0,OpenFail!, cmb_Port.Text); /刷新串口 private void btn_Refresh_Click(object sender, EventArgs e) RefreshPort(); / / 刷新串口的方法 / private void RefreshPort() cmb_Port.Items.Clear(); cmb_Port.Text = ; string Ports = System.IO.Ports.SerialPort.GetPortNames(); foreach (var item in Ports) cmb_Port.Items.Add(item); if (Ports.Length = 0) cmb_Port.SelectedIndex = 0; /关闭串口 private void btn_Close_Click(object sender, EventArgs e) Byte value = Reader.CloseSerialPort(); if (value = 0x00) ShowList(string.Format(Port0,CloseSucceed!, cmb_Port.Text); else ShowList(string.Format(Port0,CloseFail!, cmb_Port.Text); /寻到的卡片数目 private Int32 TagCount = 0; /寻到的卡片号 private String TagNumber = null; /声明一个卡片集合用于存放不同卡号的卡片数据 private List _listTag = new List(); /执行方法,所有指令都通过这个按钮来控制 private void btn_Run_Click(object sender, EventArgs e) Byte value; Byte BlockData = null; /判断是否打开串口 if (Reader.IsOpen) /调用一个Switch来对每一种选中命令执行相对应的方法 switch (IsCommand) /寻单卡 case 0: if (rb_ask.Checked) value = Reader.Inventory(ModulateMethod.ASK, InventoryModel.Single, ref TagCount, ref TagNumber); if (value = 0x00) ShowList(String.Format(Modulate.ASK,TagCount:0,TagNumber:1, TagCount, TagNumber0); if (!_listTag.Contains(TagNumber0) _listTag.Add(TagNumber0); cmb_tags.Items.Add(TagNumber0); cmb_tags.SelectedIndex = 0; else ShowList(Inventory Lose!No TagNumber); else if (rb_fsk.Checked) value = Reader.Inventory(ModulateMethod.FSK, InventoryModel.Single, ref TagCount, ref TagNumber); if (value = 0x00) if (!_listTag.Contains(TagNumber0) _listTag.Add(TagNumber0); cmb_tags.Items.Add(TagNumber0); cmb_tags.SelectedIndex = 0; ShowList(String.Format(Modulate.FSK,TagCount:0,TagNumber:1, TagCount, TagNumber0); else ShowList(Inventory Lose!No TagNumber); else break; /读取指定的数据块中的数据 case 1: if (cmb_tags.Text != ) value = Reader.ReadSingleBlock(cmb_tags.Text, BlockLength.ShortBlock4Byte, Convert.ToByte(txt_StartAdress.Text.Trim(), 16), ref BlockData); if (value = 0x00) StringBuilder sb = new StringBuilder(); for (int i = 0; i BlockData.Length; i+) sb.Append(BlockDatai.ToString(X2); txt_Resulte.Text = sb.ToString(); txt_WriteData.Text = txt_Resulte.Text; ShowList(string.Format(Reader:0,Adress:1,ReaderData:2, cmb_tags.Text, txt_StartAdress.Text.Trim(), ByteArrayToString(BlockData); else ShowList(请先寻到一张或多张卡片!); break; /写入数据到卡片中指定的数据块 case 2: / Byte BlockLength = Byte.Parse(txt); if (cmb_tags.Text != ) Byte DataForWrite = new ByteConvert.ToInt32(txt_BlockSize.Text.Trim(); String strForWrite = txt_WriteData.Text.Trim(); try for (Byte i = 0; i DataForWrite.Length; i+) DataForWritei = Convert.ToByte(strForWrite.Substring(i * 2, 2), 16); catch (System.ArgumentOutOfRangeException ex) ShowList(String.Format(错误:写入的数据长度不够0Byte!, Convert.ToInt32(txt_BlockSize.Text.Trim(); /txt_WriteData_2.SelectAll(); /txt_WriteData_2.Focus(); return; catch (System.Exception ex) ShowList(String.Format(错误:请填写0Byte的16进制数据!, Convert.ToInt32(txt_BlockSize.Text.Trim(); txt_WriteData.SelectAll(); txt_WriteData.Focus(); return; value = Reader.WriteSingleBlock(cmb_tags.Text, BlockLength.ShortBlock4Byte, Convert.ToByte(txt_StartAdress.Text.Trim(), 16), DataForWrite); if (value = 0x00) ShowList(string.Format(Succeed!,Adress:0,WriteData:1, txt_StartAdress.Text, txt_WriteData.Text); else ShowList(string.Format(Lose!Adress:0,WriteData:1, txt_StartAdress.Text, txt_WriteData.Text); else ShowList(请先寻到一张或多张卡片!); break; /使卡片静默 case 3: if (cmb_tags.Text != ) value = Reader.StayQuiet(cmb_tags.Text); if (value = 0x00) ShowList(string.Format(命令执行成功,卡片0静默成功!, cmb_tags.Text); else ShowList(string.Format(命令执行失败,卡片0静默失败!, cmb_tags.Text); break; /重置卡片状态 case 4: if (cmb_Reset.SelectedIndex != 0) /ResetMode resetMode; switch (cmb_Reset.SelectedIndex) case 1: / resetMode=ResetMode.RstAllQuiet; value = Reader.ResetToReady(ResetMode.RstAllQuiet); break; case 2: /resetMode=ResetMode.RstAllSelected; value = Reader.ResetToReady(ResetMode.RstAllSelected); break; case 3: / resetMode=ResetMode.RstSpecificQuiet; value = Reader.ResetToReady(ResetMode.RstSpecificQuiet, cmb_tags.Text); break; case 4: / resetMode=ResetMode.RstSpecificSelected; value = Reader.ResetToReady(ResetMode.RstSpecificSelected, cmb_tags.Text); break; default: /resetMode=ResetMode.RstSpecificQuiet; value = Reader.ResetToReady(ResetMode.RstAllQuiet); break; if (value = 0x00) switch (cmb_Reset.SelectedIndex) case 1: ShowList(重置所有静默卡片命令执行成功!); break; case 2: ShowList(重置所有选中卡片命令执行成功!); break; case 3: ShowList(string.Format(重置静默卡片0执行成功!, cmb_tags.Text); break; case 4: ShowList(string.Format(重置选中卡片0执行成功!, cmb_tags.Text); break; default: /resetMode = ResetMode.RstSpecificQuiet; break; else switch (cmb_Reset.SelectedIndex) case 1: ShowList(重置所有静默卡片命令执行失败!); break; case 2: ShowList(重置所有选中卡片命令执行失败!); break; case 3: ShowList(string.Format(重置静默卡片0执行失败!, cmb_tags.Text); break; case 4: ShowList(string.Format(重置选中卡片0执行失败!, cmb_tags.Text); break; default: /resetMode = ResetMode.RstSpecificQuiet; break; else ShowList(请选择一种静默方式才可执行!); break; /读取多个数据块 case 5: if (cmb_tags.Text != ) string str = ; Byte BlockDataMore = null; int count = 0; if (int.TryParse(txt_BlockCount.Text.Trim(), out count) int Address = 0; if (int.TryParse(txt_StartAdress.Text.Trim(), out Address) value = Reader.ReadMultiBlock(cmb_tags.Text, BlockLength.ShortBlock4Byte, (byte)Address, (byte)count, ref BlockDataMore); if (value = 0x00) StringBuilder sb = new StringBuilder(); for (int i = 0; i BlockDataMore.Length; i+) sb.Append(BlockDataMorei.ToString(X2); for (int i = 0; i count; i+) str += sb.ToString().Substring(i * 4, 8)+ ; txt_Resulte.Text = str; txt_WriteData.Text = sb.ToString(); ShowList(string.Format(Reader0,Aderess:1,ReaderCount:3,Data:2, cmb_tags.Text, txt_StartAdress.Text.Trim(), ByteArrayToString(BlockDataMore), count); else MessageBox.Show(请填写正确的读取数据的大小); break; default: break; else ShowList(串口未打开,请打开串口!); private void rb_Inventory_CheckedChanged(object sender, EventArgs e) /寻单卡 if (rb_Inventory.Checked) btn_AutoRun.Enabled = true; IsCommand = 0; else btn_AutoRun.Enabled = false; private void rb_ReadSingle_CheckedChanged(object sender, EventArgs e) /读取指定的数据块中的数据 if (rb_ReadSingle.Checked) IsCommand = 1; txt_BlockCount.ReadOnly = true; private void rb_WriteSingle_CheckedChanged(object sender, EventArgs e) /写入数据到卡片中指定的数据块 if (rb_WriteSingle.Checked) IsCommand = 2; private void rb_StayQuiet_CheckedChanged(object sender, EventArgs e) /使卡片静默 if (rb_StayQuiet.Checked) IsCommand = 3; private void rb_ResetReady_CheckedChanged(object sender, EventArgs e) /重置卡片状态 if (rb_ResetReady.Checked) IsCommand = 4; private void rb_ReadMultiple_Checked
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四川省康定市中考数学考前冲刺练习含完整答案详解(历年真题)
- 2024-2025学年施工员通关题库附答案详解(A卷)
- 2025年职称计算机试卷及参考答案详解【新】
- 2025年云南楚雄州事业单位招聘1790人笔试高频难、易错点备考题库及参考答案详解1套
- 2025年煤矿企业主要负责人安全考试练习题(附答案)
- 2025年赣南卫生健康职业学院单招《英语》考试黑钻押题附答案详解(综合题)
- 资料员之资料员基础知识考试彩蛋押题【基础题】附答案详解
- 2023年江西省樟树市中考物理综合提升测试卷(B卷)附答案详解
- 2023年度粮油食品检验人员考前冲刺测试卷附参考答案详解【夺分金卷】
- 海南安全员及答案题库
- 返还房产协议书范本
- 幼儿园小班科学公开课《美丽的菊花》课件
- DBJ50-T-200-2024 建筑桩基础技术标准
- 线下股份协议书范本
- 1.团体标准《腹部减脂塑形手法操作技术规程》(征求意见稿)
- 手术室医院感染管理制度
- 食品安全月调度会议
- 七年级上册道德与法治情境题集合
- 《材料电学性能》课件
- 【7年级-上】2024新版教材
- 《上海产业结构》课件
评论
0/150
提交评论