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

温湿度、烟雾PM2.5、光敏亮度、火焰等传感器数据的采集,上位机实现窗帘的开关。
下载:上位机C#源码
源码用visual studio 编译通过。如下图所示

/*
        * 作用:解析串口接收过来的数据,根据字符标志位进行数据截取到对应的显示地方
        */
       private void analysisData()
       {
           bool getDataFlag = false;

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

                   if (param[1] >= '6')            //当亮度大于600时,关闭灯光
                   {
                       for (int i = 0; i < 10; i++)
                       {
                           UartSend(createCommand(LIGHT, "0"));
                       }
                   }
                   else                            //否则,灯光一直显示亮起
                   {
                       for (int i = 0; i < 10; i++)
                       {
                           UartSend(createCommand(LIGHT, "1"));
                       }
                   }

                   getDataFlag = true;
               }
           }

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

                   if (param[3] == '1')            //当检测到火焰气体 param[3] == '1' 时,发出警报1
                   {
                       for (int i = 0; i < 10; i++)
                       {
                           UartSend(createCommand(FIRE, "1"));
                       }
                   }
                   else                            //此时若没监测火焰气体 param[3] == '0',关闭警报2,也可以在上位机的按钮关掉
                   {
                       for (int i = 0; i < 10; i++)
                       {
                           UartSend(createCommand(FIRE, "0"));
                       }
                   }

                   buffer.RemoveRange(0, dataLen + 2);
                   getDataFlag = true;
               }
           }

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

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

                   if (param[3] == '1')        //当检测到人体 param[3] == '1' 时,发出警报2
                   {
                       for (int i = 0; i < 10; i++)
                       {
                           UartSend(createCommand(HUMAN, "1"));
                       }
                   }
                   else                       //此时若没监测到人体 param[3] == '0',关闭警报2,也可以在上位机的按钮关掉
                   {
                       for (int i = 0; i < 10; i++)
                       {
                           UartSend(createCommand(HUMAN, "0"));
                       }
                   }

                   buffer.RemoveRange(0, dataLen + 2);
                   getDataFlag = true;
               }
           }

           {//PM2.5显示
               string source = System.Text.Encoding.Default.GetString(buffer.ToArray());
               string param;
               int dataLen = getCommand(source, PM, out param);
               if (dataLen > 0)
               {
                   label_pm.Text = "PM2.5\r\n" + param[2] + param[3];
                   buffer.RemoveRange(0, dataLen + 2);
                   getDataFlag = true;
               }