mirror of
https://git.aixiao.me/aixiao/Danger-alarm.git
synced 2025-07-29 19:13:39 +08:00
Add FreeRTOS
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#include "ZC13.hpp"
|
||||
#include "common.h"
|
||||
#include "common.hpp"
|
||||
|
||||
int ZC13_INIT()
|
||||
{
|
||||
@@ -100,72 +100,15 @@ int ZC13(const char *model)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
int ZC13(const char *model)
|
||||
void CH4(void *pvParameters)
|
||||
{
|
||||
char CH4_DATA[9] = { 0 };
|
||||
int CH4_DATA_index = 0;
|
||||
|
||||
// 发送指令
|
||||
char CH4_CMD[9] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 };
|
||||
for (int i = 0; i < 9; i++) {
|
||||
uart_tx_program_putc(ZC13_PIO, ZC13_PIO_SM_TX, CH4_CMD[i]);
|
||||
sleep_ms(1);
|
||||
ZC13_INIT();
|
||||
_printTaskStackHighWaterMark("ZC13");
|
||||
while(1)
|
||||
{
|
||||
|
||||
ZC13("ZC05");
|
||||
_printTaskStackHighWaterMark("ZC13");
|
||||
vTaskDelay(pdMS_TO_TICKS(3000)); // 非阻塞延时
|
||||
}
|
||||
sleep_ms(200);
|
||||
|
||||
// 接收数据,直到收到换行符或达到缓冲区大小限制
|
||||
char c = '\0';
|
||||
int timeout_ms = 100; // 设置超时时间为100ms
|
||||
int received_count = 0;
|
||||
|
||||
while (received_count < 9 && timeout_ms > 0) {
|
||||
if (uart_rx_program_available(ZC13_PIO, ZC13_PIO_SM_RX)) {
|
||||
c = uart_rx_program_getc(ZC13_PIO, ZC13_PIO_SM_RX);
|
||||
CH4_DATA[CH4_DATA_index++] = c;
|
||||
received_count++;
|
||||
timeout_ms = 100; // 重置超时时间
|
||||
} else {
|
||||
sleep_ms(1);
|
||||
timeout_ms--; // 减少超时时间
|
||||
}
|
||||
}
|
||||
|
||||
// 处理接收到的数据
|
||||
for (int i = 0; i < 9; i++) {
|
||||
printf("0x%X ", CH4_DATA[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
uint8_t highByte = CH4_DATA[2]; // 假设这是气体浓度高位字节
|
||||
uint8_t lowByte = CH4_DATA[3]; // 假设这是气体浓度高位字节
|
||||
|
||||
// 判断最高位是否为 1
|
||||
if (highByte & 0x80) {
|
||||
// 最高位是 1,表示传感器故障
|
||||
printf("CH4 sensor malfunction!\n");
|
||||
} else {
|
||||
if (CH4_DATA[1] == 0X86) {
|
||||
if ( 0 == strcasecmp(model, "ZC05")) {
|
||||
// 计算气体浓度值
|
||||
uint16_t gasConcentration = (highByte & 0x3F) * 256 + lowByte;
|
||||
// 输出气体浓度值
|
||||
printf("CH4 Concentration: %uppm\n", gasConcentration);
|
||||
|
||||
return gasConcentration;
|
||||
}
|
||||
|
||||
if ( 0 == strcasecmp(model, "ZC13")) {
|
||||
// 计算气体浓度值
|
||||
uint16_t gasConcentration = (highByte & 0x1F) * 256 + lowByte;
|
||||
// 输出气体浓度值
|
||||
printf("CH4 Concentration: %uppm\n", gasConcentration);
|
||||
|
||||
return gasConcentration;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
}
|
||||
Reference in New Issue
Block a user