目录

  • 1 课程简介
    • 1.1 课程总体介绍
  • 2 项目一 虚拟仿真平台使用及vs开发环境熟悉
    • 2.1 任务1 体验物联网虚拟仿真实训平台
    • 2.2 任务2 Vs开发平台的使用以及C#开发应用系统
    • 2.3 任务3 简单门禁系统硬件搭建与测试
    • 2.4 任务4 门禁系统演示测试
    • 2.5 项目小结及任务评价
    • 2.6 操作演示视频
  • 3 项目二 校园一卡通物联网系统
    • 3.1 任务1 一卡通系统需求分析
    • 3.2 任务2 一卡通系统功能设计
    • 3.3 任务3 一卡通系统UI设计
    • 3.4 任务4 一卡通系统硬件选型及系统搭建
    • 3.5 任务5 射频卡接口设计
    • 3.6 任务6 一卡通数据库设计
    • 3.7 任务7 一卡通系统编码实现
    • 3.8 任务8 一卡通系统测试
    • 3.9 项目小结及任务评价
    • 3.10 操作演示视频
  • 4 项目三 智慧农业系统
    • 4.1 任务1 智慧农业系统需求分析
    • 4.2 任务2 智慧农业系统功能设计
    • 4.3 任务3 智慧农业UI设计
    • 4.4 任务4 智慧农业硬件选型及系统设计
    • 4.5 任务5 物联网硬件接口开发与设计
    • 4.6 任务6 智慧农业数据库设计
    • 4.7 任务7 智慧农业编码实现
    • 4.8 任务8 智慧农业系统测试
    • 4.9 项目小结及任务评价
    • 4.10 操作演示视频
  • 5 项目四 智慧仓储系统
    • 5.1 任务1 智慧仓储系统需求分析
    • 5.2 任务2 智慧仓储系统功能设计
    • 5.3 任务3 智慧系统UI设计
    • 5.4 任务4 智慧仓储系统硬件系统设计及搭建
    • 5.5 任务5 智慧仓储系统数据库设计
    • 5.6 任务6 智能仓储系统编码实现
    • 5.7 任务7 智能仓储系统测试
    • 5.8 项目小结及任务评价
    • 5.9 操作演示视频
  • 6 项目五 创新项目实现
    • 6.1 任务1 确定项目需求
    • 6.2 任务2 项目功能设计
    • 6.3 任务3 物联网硬件系统搭建
    • 6.4 任务4 项目编码实现
    • 6.5 项目汇报及答辩
任务4 项目编码实现


开发涉及的技术点列表

本卷中,完成以上任务所涉及的技术点如下:

1、超高频接口的使用;

2、数据库接口的使用;

3、线程的使用。

附:请先将以下几个类文件加入到项目中

 

然后在项目中引用命名空间Tools”和“System.Threading”:

using System.Threading;

using Tools;

发卡管理的功能说明

1、实例化类

private VehicleInfo vehicleInfo = new VehicleInfo();

private AccessRecords accessRecords = new AccessRecords();

2、声明线程

private Thread thread_UHF;

3、窗体启动事件FrmCardManage_Load

(a)、设置不捕获对错误线程的调用

Control.CheckForIllegalCrossThreadCalls = false;

(b)、实例化线程

thread_UHF = new Thread(new ThreadStart(ReadCard));

4、“登记”按钮事件btnRegister_Click

(a)、调用CheckText方法检测窗体中是否有ComboBox控件、TextBox控件的Text属性为空

if (CheckText())

(b)、如果窗体中ComboBox控件、TextBox控件的Text属性都不为空,则对vehicleInfo的属性赋值

vehicleInfo.OwnerCardID = thisNaNbCardID.Text.Trim();

vehicleInfo.OwnerName = this.txtOwnerName.Text.Trim();

vehicleInfo.OwnerSex = thisNaNbOwnerSex.Text.Trim();

vehicleInfo.OwnerPhone = this.txtOwnerPhone.Text.Trim();

vehicleInfo.IdentityCardID = this.txtIdentityCardID.Text.Trim();

vehicleInfo.LicenseNumber = this.txtLicenseNumber.Text.Trim();

vehicleInfo.VehicleModels = this.txtVehicleModels.Text.Trim();

vehicleInfo.VehicleColor = this.txtVehicleColor.Text.Trim();

vehicleInfo.VehicleType = thisNaNbVehicleType.Text.Trim();

(c)、调用vehicleInfoGetDataTable方法查询寻到的卡是否已经登记过了

if (vehicleInfo.GetDataTable(string.Format("select * from VehicleInfo where OwnerCardID='{0}'", cmbCardID.Text.Trim())).Rows.Count > 0)

如果条件判断结果为true,则此卡已登记过了,反之,则没有。

(d)、调用vehicleInfoInsert方法登记信息

if (vehicleInfo.Insert() > 0)

如果条件判断结果为true,则登记成功,反之,则登记失败。

5、“注销”按钮事件btnLogout_Click

(a)、分别对vehicleInfoaccessRecordsOwnerCardID属性赋值

vehicleInfo.OwnerCardID = thisNaNbCardID.Text.Trim();

accessRecords.OwnerCardID = thisNaNbCardID.Text.Trim();

(b)调用vehicleInfoGetDataTable方法查询寻到的卡是否已经登记过了

if (vehicleInfo.GetDataTable(string.Format("select * from VehicleInfo where OwnerCardID='{0}'", cmbCardID.Text.Trim())).Rows.Count > 0)

如果条件判断结果为true,则此卡已登记过了,反之,则没有。

(c)、如果此卡已登记,则调用vehicleInfoaccessRecordsDelete方法

accessRecords.Delete();

vehicleInfo.Delete();

6、窗体关闭事件FrmCardManage_FormClosing

(a)、停止线程

thread_UHF.Abort();

7校验文本方法CheckText

校验窗体中是否有ComboBox控件、TextBox控件的Text属性为空,如果有控件的Text属性为空,则返回false,反之,则返回true

8、读卡方法ReadCard

(a)、调用寻卡方法

ClassAll.reader.InventorySingle

(b)、调用ByteArrayToString方法将标签号转换成十六进制的字符串

string strTag = ByteArrayToString(Tag);

9添加卡号到cmbCardID方法AddTag

10实现字节数组转换为十六进制的字符串方法ByteArrayToString

 

监控统计的功能说明

1、声明线程

private Thread thread_UHF;

2、窗体启动事件FrmMonitoringStatistics_Load

(a)、设置不捕获对错误线程的调用

Control.CheckForIllegalCrossThreadCalls = false;

3、“开始监控”按钮事件btnStartMonitoring_Click

(a)、实例化线程

thread_UHF = new Thread(new ThreadStart(ReadCard));

4、“停止监控”按钮事件btnStopMonitoring_Click

(a)、停止线程

thread_UHF.Abort();

5、窗体关闭事件FrmMonitoringStatistics_FormClosing

(a)、停止线程

thread_UHF.Abort();

6、读卡方法ReadCard

(a)、调用寻卡方法

ClassAll.reader.InventorySingle

(b)、调用ByteArrayToString方法将标签号转换成十六进制的字符串

string strTag = ByteArrayToString(Tag);

(c)实例化类

VehicleInfo vehicleInfo = new VehicleInfo(strTag);

(d)获取vehicleInfo的属性值

txtOwnerName.Text = vehicleInfo.OwnerName;

txtOwnerSex.Text = vehicleInfo.OwnerSex;

txtOwnerPhone.Text = vehicleInfo.OwnerPhone;

txtIdentityCardID.Text = vehicleInfo.IdentityCardID;

txtLicenseNumber.Text = vehicleInfo.LicenseNumber;

txtVehicleModels.Text = vehicleInfo.VehicleModels;

txtVehicleColor.Text = vehicleInfo.VehicleColor;

txtVehicleType.Text = vehicleInfo.VehicleType;

(e)实例化类

AccessRecords accessRecords = new AccessRecords();

(f)accessRecords的属性赋值

accessRecords.OwnerCardID = strTag;

accessRecords.Date = DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day;

(g)、调用accessRecordsGetDataTable方法查询寻到的卡的通行记录

dt = accessRecords.GetDataTable(string.Format("select * from AccessRecords where OwnerCardID = '{0}' and Date = '{1}'", strTag, accessRecords.Date));

7添加卡号到cmbCardID方法AddTag

8实现字节数组转换为十六进制的字符串方法ByteArrayToString

 

信息查询的功能说明

1实例化类

private VehicleInfo vehicleInfo = new VehicleInfo();

2、“查询”按钮事件btnQuery_Click

(a)调用vehicleInfoGetDataTable方法查询信息

dgvVehicleInfo.DataSource = vehicleInfo.GetDataTable(sqlQuery);