溫濕度傳感器項目
這個項目挺適合初學(xué)者的,搭建了一套硬件環(huán)境,并且也針對這套硬件做了一個倉儲溫濕度采集系統(tǒng),很多學(xué)員都完成了,并且都有一個直觀的感受就是————麻雀雖小,五臟俱全。
雖然是一個比較小的項目,但是涉及到很多知識點,Modbus采集、Modbus一主多從、Modbus串口斷線重連、實時曲線、自定義控件、SQLite數(shù)據(jù)存儲、數(shù)據(jù)查詢、歷史曲線、動態(tài)查詢、報警設(shè)置、報警檢測、參數(shù)配置等。


開發(fā)
1、首先設(shè)計UI界面如下圖,這里主要是采用自定義組合控件的方式來實現(xiàn)。

2、首先確定溫濕度傳感器的寄存器地址,如下所示

3、開發(fā)之前需要提前將各個傳感器的站地址設(shè)置好,并且保證不能重復(fù)。
4、通信部分主要應(yīng)用的是Modbus一主多從,通過分析,對于每個站點的結(jié)果封裝一個實體類,如下所示:

5、然后我們可以再封裝一個單個設(shè)備數(shù)據(jù)讀取的通用方法,如下所示:

6、然后開啟多線程進(jìn)行輪詢,并對結(jié)果進(jìn)行錯誤分析處理,如下所示:
???????///?<summary>
????????///?多線程數(shù)據(jù)通信
????????///?</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++;
????????????????????}
????????????????????//重連處理???????????????????
????????????????}
????????????}
????????}
大家對這部分內(nèi)容有興趣,咱們很快將通過訓(xùn)練營講解,先提前透漏一下安排

