温湿度传感器项目
这个项目挺适合初学者的,搭建了一套硬件环境,并且也针对这套硬件做了一个仓储温湿度采集系统,很多学员都完成了,并且都有一个直观的感受就是————麻雀虽小,五脏俱全。
虽然是一个比较小的项目,但是涉及到很多知识点,Modbus采集、Modbus一主多从、Modbus串口断线重连、实时曲线、自定义控件、SQLite数据存储、数据查询、历史曲线、动态查询、报警设置、报警检测、参数配置等。


开发
1、首先设计UI界面如下图,这里主要是采用自定义组合控件的方式来实现。

2、首先确定温湿度传感器的寄存器地址,如下所示

3、开发之前需要提前将各个传感器的站地址设置好,并且保证不能重复。
4、通信部分主要应用的是Modbus一主多从,通过分析,对于每个站点的结果封装一个实体类,如下所示:

5、然后我们可以再封装一个单个设备数据读取的通用方法,如下所示:

6、然后开启多线程进行轮询,并对结果进行错误分析处理,如下所示:
/// <summary>
/// 多线程数据通信
/// </summary>
private void GetMonitorDB()
{
while (!cts.IsCancellationRequested)
{
if (isConnected)
{
int error = 0;
//读取第一个从站
if (!GetSlaveData(config.SlaveId1, config.TempHigh1, config.TempLow1, config.HumHigh1, config.HumLow1))
{
error++;
}
//读取第二个从站
if (!GetSlaveData(config.SlaveId2, config.TempHigh2, config.TempLow2, config.HumHigh2, config.HumLow2))
{
error++;
}
//读取第三个从站
if (!GetSlaveData(config.SlaveId3, config.TempHigh3, config.TempLow3, config.HumHigh3, config.HumLow3))
{
error++;
}
//读取第四个从站
if (!GetSlaveData(config.SlaveId4, config.TempHigh4, config.TempLow4, config.HumHigh4, config.HumLow4))
{
error++;
}
//重连处理
}
}
}
大家对这部分内容有兴趣,咱们很快将通过训练营讲解,先提前透漏一下安排

