在线时间68 小时
UID3090366
注册时间2015-5-24
NXP金币66
TA的每日心情 | 开心 2018-1-30 19:52 |
---|
签到天数: 19 天 连续签到: 1 天 [LV.4]偶尔看看III
金牌会员
 
- 积分
- 1509
- 最后登录
- 2018-5-28
|

楼主 |
发表于 2016-9-4 17:09:27
|
显示全部楼层
九、HCHO程序
- /*
- * hcho.c
- *
- * Created on: Sep 3, 2016
- * Author: Administrator
- */
- #include "hcho.h"
- uint8_t hcho_CMD[] = {0x42, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x90};
- uint8_t hcho_Return_Data[10];
- volatile uint8_t hcho_flag = 0;
- uint8_t hcho_Return[4] = {'0', '.', '0', '0'};
- void hcho_Read(void)
- {
- HCHO_UART_TComData ch = 0;
- static uint8_t state = 0;
- static uint8_t receive_num = 0;
- uint8_t i;
- uint16_t crc;
- HCHO_UART_RecvChar(&ch);
- switch (state)
- {
- case 0:
- if (ch == 0x42)
- {
- state = 1;
- hcho_Return_Data[0] = ch;
- }
- break;
- case 1:
- if (ch == 0x4d)
- {
- state = 2;
- hcho_Return_Data[1] = ch;
- }
- else
- {
- state = 0;
- }
- break;
- case 2:
- state = 3;
- hcho_Return_Data[2] = ch;
- receive_num = 0;
- break;
- case 3:
- hcho_Return_Data[3 + receive_num] = ch;
- receive_num++;
- if (receive_num == hcho_Return_Data[2])
- {
- state = 0;
- for (i = 0, crc = 0; i < hcho_Return_Data[2]; i++)
- {
- crc += hcho_Return_Data[i];
- }
- if (crc == (((uint16_t)hcho_Return_Data[receive_num] << 8) + hcho_Return_Data[receive_num + 1]))
- {
- hcho_flag = 1;
- }
- }
- break;
- }
- }
- void hcho_Read_Data(void)
- {
- word vpc_Size = 0;
- word hcho_Send_Size = 0;
- uint16_t hcho_temp = 0;
- HCHO_UART_SendBlock((HCHO_UART_TComData *)hcho_CMD, 7, &hcho_Send_Size);
- Delay(1000);
- if (hcho_flag == 1)
- {
- hcho_flag = 0;
- if (hcho_Return_Data[3] == 0x14 && hcho_Return_Data[4] == 0x05)
- {
- hcho_temp = ((uint16_t)hcho_Return_Data[6] << 8) + hcho_Return_Data[7];
- switch (hcho_Return_Data[5])
- {
- case 0x01:
- break;
- case 0x02:
- break;
- case 0x03:
- hcho_Return[0] = ((hcho_temp % 1000) / 100) + '0';
- hcho_Return[1] = '.';
- hcho_Return[2] = ((hcho_temp % 100) / 10) + '0';
- hcho_Return[3] = (hcho_temp % 10) + '0';
- break;
- case 0x04:
- break;
- }
- VPC_UART_SendBlock((VPC_UART_TComData *)"HCH0 = ", 7, &vpc_Size);
- VPC_UART_SendBlock((VPC_UART_TComData *)hcho_Return, 4, &vpc_Size);
- VPC_UART_SendBlock((VPC_UART_TComData *)" Mg / m3\r\n", 10, &vpc_Size);
- }
- }
- }
复制代码
- /*
- * hcho.h
- *
- * Created on: Sep 3, 2016
- * Author: Administrator
- */
- #ifndef HCHO_H_
- #define HCHO_H_
- #include "stdint.h"
- #include "HCHO_UART.h"
- #include "VPC_UART.h"
- #include "Delay.h"
- extern uint8_t hcho_CMD[];
- extern uint8_t hcho_Return_Data[];
- extern volatile uint8_t hcho_flag;
- void hcho_Read(void);
- void hcho_Read_Data(void);
- #endif /* HCHO_H_ */
复制代码
|
|