温湿度、烟雾PM2.5、光敏亮度、火焰等传感器数据的采集,上位机实现窗帘的开关。
上位机C#源码.zip
(1.66 MB, 售价: 3 E币)
源码用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;
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|