国产免费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幣)
2022-6-1 17:26 上傳
點擊文件名下載附件
售價: 3 E幣
[記錄]
[
購買
]
源碼用visual studio 編譯通過。如下圖所示
1.jpg
(113.36 KB)
下載附件
2022-6-1 16:01 上傳
部分源碼
:完整源碼見附件
/*
* 作用:解析串口接收過來的數據,根據字符標志位進行數據截取到對應的顯示地方
*/
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;
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0