国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標題: ZigBee智能家居的C#上位機源碼 采集溫度濕度PM風扇窗簾 [打印本頁]

作者: Jonsa    時間: 2022-6-1 17:28
標題: ZigBee智能家居的C#上位機源碼 采集溫度濕度PM風扇窗簾
溫濕度、煙霧PM2.5、光敏亮度、火焰等傳感器數據的采集,上位機實現窗簾的開關。
上位機C#源碼.zip (1.66 MB, 售價: 3 E幣)
源碼用visual studio 編譯通過。如下圖所示


部分源碼:完整源碼見附件
  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.                 }
復制代碼





歡迎光臨 ELEOK (http://m.afoofa.cn/) Powered by Discuz! X5.0