找回密码
 注册

QQ登录

只需一步,快速开始

搜索

ZigBee智能家居的C#上位机源码 采集温度湿度PM风扇窗帘

[复制链接]
Jonsa 发表于 2022-6-1 17:28:16 | 显示全部楼层 |阅读模式
温湿度、烟雾PM2.5、光敏亮度、火焰等传感器数据的采集,上位机实现窗帘的开关。
上位机C#源码.zip (1.66 MB, 售价: 3 E币)
源码用visual studio 编译通过。如下图所示
1.jpg

部分源码:完整源码见附件
  1. /*
  2.          * 作用:解析串口接收过来的数据,根据字符标志位进行数据截取到对应的显示地方
  3.          */
  4.         private void analysisData()
  5.         {
  6.             bool getDataFlag = false;

  7.             {//光敏亮度显示
  8.                 string source = System.Text.Encoding.Default.GetString(buffer.ToArray());
  9.                 string param;
  10.                 int dataLen = getCommand(source, LIGHT, out param);
  11.                 if (dataLen > 0)
  12.                 {
  13.                     label_light.Text = "LIGHT\r\n" + param[1] + param[2] + param[3];
  14.                     buffer.RemoveRange(0, dataLen + 2);

  15.                     if (param[1] >= '6')            //当亮度大于600时,关闭灯光
  16.                     {
  17.                         for (int i = 0; i < 10; i++)
  18.                         {
  19.                             UartSend(createCommand(LIGHT, "0"));
  20.                         }
  21.                     }
  22.                     else                            //否则,灯光一直显示亮起
  23.                     {
  24.                         for (int i = 0; i < 10; i++)
  25.                         {
  26.                             UartSend(createCommand(LIGHT, "1"));
  27.                         }
  28.                     }

  29.                     getDataFlag = true;
  30.                 }
  31.             }

  32.             {//火焰显示
  33.                 string source = System.Text.Encoding.Default.GetString(buffer.ToArray());
  34.                 string param;
  35.                 int dataLen = getCommand(source, FIRE, out param);
  36.                 if (dataLen > 0)
  37.                 {
  38.                     label_fire.Text = "FIRE\r\n" + param[2] + param[3];

  39.                     if (param[3] == '1')            //当检测到火焰气体 param[3] == '1' 时,发出警报1
  40.                     {
  41.                         for (int i = 0; i < 10; i++)
  42.                         {
  43.                             UartSend(createCommand(FIRE, "1"));
  44.                         }
  45.                     }
  46.                     else                            //此时若没监测火焰气体 param[3] == '0',关闭警报2,也可以在上位机的按钮关掉
  47.                     {
  48.                         for (int i = 0; i < 10; i++)
  49.                         {
  50.                             UartSend(createCommand(FIRE, "0"));
  51.                         }
  52.                     }

  53.                     buffer.RemoveRange(0, dataLen + 2);
  54.                     getDataFlag = true;
  55.                 }
  56.             }

  57.             {//烟雾显示
  58.                 string source = System.Text.Encoding.Default.GetString(buffer.ToArray());
  59.                 string param;
  60.                 int dataLen = getCommand(source, SMOKE, out param);
  61.                 if (dataLen > 0)
  62.                 {
  63.                     label_smoke.Text = "SMOKE\r\n" + param[2] + param[3];
  64.                     buffer.RemoveRange(0, dataLen + 2);
  65.                     getDataFlag = true;
  66.                 }
  67.             }

  68.             {//人体显示
  69.                 string source = System.Text.Encoding.Default.GetString(buffer.ToArray());
  70.                 string param;
  71.                 int dataLen = getCommand(source, HUMAN, out param);
  72.                 if (dataLen > 0)
  73.                 {
  74.                     label_human.Text = "HUMAN\r\n" + param[2] + param[3];

  75.                     if (param[3] == '1')        //当检测到人体 param[3] == '1' 时,发出警报2
  76.                     {
  77.                         for (int i = 0; i < 10; i++)
  78.                         {
  79.                             UartSend(createCommand(HUMAN, "1"));
  80.                         }
  81.                     }
  82.                     else                       //此时若没监测到人体 param[3] == '0',关闭警报2,也可以在上位机的按钮关掉
  83.                     {
  84.                         for (int i = 0; i < 10; i++)
  85.                         {
  86.                             UartSend(createCommand(HUMAN, "0"));
  87.                         }
  88.                     }

  89.                     buffer.RemoveRange(0, dataLen + 2);
  90.                     getDataFlag = true;
  91.                 }
  92.             }

  93.             {//PM2.5显示
  94.                 string source = System.Text.Encoding.Default.GetString(buffer.ToArray());
  95.                 string param;
  96.                 int dataLen = getCommand(source, PM, out param);
  97.                 if (dataLen > 0)
  98.                 {
  99.                     label_pm.Text = "PM2.5\r\n" + param[2] + param[3];
  100.                     buffer.RemoveRange(0, dataLen + 2);
  101.                     getDataFlag = true;
  102.                 }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-12-27 12:00

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表