123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616 |
- // /**
- // ************************************************************************************************
- // * @file air.c
- // * @author 国轩储能
- // * @version V1.0
- // * @date 2018-11-20
- // * @brief 空调通讯
- // * @attention
- // ************************************************************************************************
- // **/
- // #include "air.h"
- // #include "ModbusRtu.h"
- // #include "ff.h"
- // #include "i104_addr.h"
- // #include "os_my_var.h"
- // #include "uart1.h"
- // #include <string.h>
- // union Data_Air_Union_TypeDef Data_Air[2];
- // union Par_Set_Air_Union_TypeDef Par_Set_Air1; // 空调1
- // union Par_Set_Air_Union_TypeDef Par_Set_Air2; // 空调2
- // // 制冷设定温度 制冷设定灵敏度 高温告警点 低温告警点 加热设定温度 加热设定灵敏度 远程开空调
- // const u16 ADDR_CONV_HMI2AIR[ADDR_CONV_COUNT][2] = {{0x1830, 0x8202}, {0x1832, 0x8204}, {0x1834, 0x0E}, {0x1836, 0x10}, {0x1838, 0x820B}, {0x183A, 0x1E}, {0x1840, 0x0202}}; // 空调参数设置,触摸屏、空调485地址转换
- // // 制冷设定温度 制冷设定灵敏度 高温告警点 低温告警点 加热设定温度 加热设定灵敏度 远程开空调
- // const u16 ADDR_CONV_104IEC2AIR1[ADDR_CONV_COUNT][2] = {{REMOTE_REGULATE_ADDR_COOL_TEMP_AIR1, 0x8202}, {REMOTE_REGULATE_ADDR_COOL_SEN_AIR1, 0x8204}, {0, 0x0E}, {0, 0x10}, {REMOTE_REGULATE_ADDR_HOT_TEMP_AIR1, 0x820B}, {REMOTE_REGULATE_ADDR_HOT_SEN_AIR1, 0x1E}, {24618, 0x0202}}; // 空调参数设置,104地址转空调485地址
- // // 制冷设定温度 制冷设定灵敏度 高温告警点 低温告警点 加热设定温度 加热设定灵敏度 远程开空调
- // const u16 ADDR_CONV_104IEC2AIR2[ADDR_CONV_COUNT][2] = {{25093, 0x8202}, {25094, 0x8204}, {0, 0x0E}, {0, 0x10}, {25095, 0x820B}, {25096, 0x1E}, {24620, 0x0202}}; // 空调参数设置,104地址转空调485地址
- // //// 写单寄存器命令格式: 控制器地址 命令类型 寄存器起始地址H 寄存器起始地址L 数据1H 数据1L CRC-L CRC-H
- // // u8 frame_air_set[16] = {0x01, 0x06, 0x00, 0x01, 0x00, 0x00};
- // const Modbus_Frame_TypeDef Air_Frame[AIR_FRAME_COUNT] = {{0x1000, 42, 3}, {0xA004, 1, 3}, {0xA013, 1, 3}, {0x0300, 17, 3}, {0x8202, 4, 3}, {0x000e, 4, 3}, {0x820b, 1, 3}, {0x1E, 1, 3}};
- // void Air1_HandleFrame_1st(const u8 *p, u16 size);
- // void Air1_HandleFrame_2nd(const u8 *p, u16 size);
- // void Air1_HandleFrame_3rd(const u8 *p, u16 size);
- // void Air1_HandleFrame_4th(const u8 *p, u16 size);
- // void Air1_HandleFrame_5th(const u8 *p, u16 size);
- // void Air1_HandleFrame_6th(const u8 *p, u16 size);
- // void air1_handle_frame_7th(const u8 *p, u16 size);
- // void Air1_HandleFrame_8th(const u8 *p, u16 size);
- // void (*Func_AirHandleFrame[AIR_FRAME_COUNT])(const u8 *p, u16 size) = {Air1_HandleFrame_1st, Air1_HandleFrame_2nd, Air1_HandleFrame_3rd, Air1_HandleFrame_4th,
- // Air1_HandleFrame_5th, Air1_HandleFrame_6th, Air1_HandleFrame_7th, Air1_HandleFrame_8th}; //
- // extern os_mbx_declare(uart1_mailbox, 10); // 声明消息邮箱 读取空调数据
- // /****************************************************
- // * 函 数 名:ReadAirData
- // * 函数功能:读取空调数据
- // * 入口参数:register_addr 寄存器地址 count 数量 p 缓冲区指针
- // * 说 明:无
- // *****************************************************/
- // void CopyAirData(u16 register_addr, u16 count, u16 *p)
- // {
- // u16 offset, i;
- // offset = register_addr - MODBUS_ADDR_AIR_READ;
- // for (i = 0; i < count; i++)
- // *p++ = Data_Air[0].data_air_buf_u16[offset + i];
- // }
- // /****************************************************
- // * 函 数 名:CopyAirDataSet
- // * 函数功能:读取空调设置参数
- // * 入口参数:register_addr 寄存器地址 count 浮点数据数量 p 缓冲区指针
- // * 说 明:无
- // *****************************************************/
- // void CopyAirDataSet(u16 register_addr, u16 count, float *pFloat)
- // {
- // u16 offset, i;
- // u8 *pU8;
- // offset = register_addr - MODBUS_ADDR_AIR_WRITE;
- // pU8 = (u8 *)pFloat;
- // for (i = 0; i < count * 4; i++)
- // *pU8++ = Par_Set_Air1.par_buff_u8[4 * offset + i]; // 直接用par_buff_float赋值,硬件故障
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_1st
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_1st(const u8 *p, u16 size)
- // {
- // u8 index = 0, slave_id = 0;
- // u8 temp1, temp2;
- // u16 crc;
- // // OS_ERR err;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // slave_id = 0;
- // }
- // else
- // {
- // slave_id = 1;
- // }
- // p = p + 3;
- // for (index = 0; index < 14; index++) // 设备工作状态、室内风机状态、室外风机状态、压缩机状态 柜内回风温度 水泵状态 柜外温度 冷凝器温度...交流运行电流
- // {
- // temp1 = *p++;
- // temp2 = *p++;
- // Data_Air[slave_id].data_air_buf_u16[index] = (temp1 << 8) + temp2;
- // p = p + 2;
- // }
- // // 设备运行时间、压缩机运行时间、内风机运行时间、压缩机运行次数
- // for (; index < 22; index++)
- // {
- // temp1 = *p++;
- // temp2 = *p++;
- // Data_Air[slave_id].data_air_buf_u16[index++] = (temp1 << 8) + temp2;
- // temp1 = *p++;
- // temp2 = *p++;
- // Data_Air[slave_id].data_air_buf_u16[index] = (temp1 << 8) + temp2;
- // p += 4;
- // }
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_2nd
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_2nd(const u8 *p, u16 size)
- // {
- // u8 temp1, temp2, slave_id = 0;
- // u16 crc;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // slave_id = 0;
- // }
- // else
- // {
- // slave_id = 1;
- // }
- // p = p + 3;
- // temp1 = (*p++);
- // temp2 = (*p++);
- // Data_Air[slave_id].data_air_buf_u16[22] = (temp1 << 8) + temp2;
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_3rd
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_3rd(const u8 *p, u16 size)
- // {
- // u8 temp1, temp2, slave_id = 0;
- // u16 crc;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // slave_id = 0;
- // }
- // else
- // {
- // slave_id = 1;
- // }
- // p = p + 3;
- // temp1 = *p++;
- // temp2 = *p++;
- // Data_Air[slave_id].data_air_buf_u16[23] = (temp1 << 8) + temp2;
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_4th
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_4th(const u8 *p, u16 size)
- // {
- // u8 i, slave_id = 0, temp1 = 0, temp2 = 0;
- // u16 crc;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // slave_id = 0;
- // }
- // else
- // {
- // slave_id = 1;
- // }
- // p = p + 3;
- // for (i = 0; i < 17; i++)
- // {
- // temp1 = (*p++);
- // temp2 = (*p++);
- // Data_Air[slave_id].data_air_buf_u16[24 + i] = (temp1 << 8) + temp2;
- // if (Data_Air[slave_id].data_air_buf_u16[24 + i] == 0x01)
- // {
- // Data_Air[slave_id].Data_Air_Union.serious_alarm = TRUE;
- // }
- // }
- // if (Data_Air[slave_id].Data_Air_Union.serious_alarm == TRUE)
- // {
- // bams_set_air_status(TRUE);
- // }
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_5th
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_5th(const u8 *p, u16 size)
- // {
- // u8 i;
- // u8 temp1, temp2;
- // u16 crc;
- // union Par_Set_Air_Union_TypeDef *param = NULL;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // param = &Par_Set_Air1;
- // }
- // else
- // {
- // param = &Par_Set_Air2;
- // }
- // p = p + 3;
- // for (i = 0; i < 2; i++)
- // {
- // temp1 = *p++;
- // temp2 = *p++;
- // param->par_buff_float[i] = (float)((temp1 << 8) + temp2) / 10.0f;
- // p = p + 2;
- // }
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_6th
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_6th(const u8 *p, u16 size)
- // {
- // u8 i;
- // u8 temp1, temp2;
- // u16 crc;
- // union Par_Set_Air_Union_TypeDef *param = NULL;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // param = &Par_Set_Air1;
- // }
- // else
- // {
- // param = &Par_Set_Air2;
- // }
- // p = p + 3;
- // for (i = 0; i < 2; i++)
- // {
- // temp1 = (*p++);
- // temp2 = (*p++);
- // param->par_buff_float[i + 2] = (float)((temp1 << 8) + temp2) / 10.0f;
- // p = p + 2;
- // }
- // }
- // /****************************************************
- // * 函 数 名:air1_handle_frame_7th
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void air1_handle_frame_7th(const u8 *p, u16 size)
- // {
- // u8 temp1, temp2;
- // u16 crc;
- // union Par_Set_Air_Union_TypeDef *param = NULL;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // param = &Par_Set_Air1;
- // }
- // else
- // {
- // param = &Par_Set_Air2;
- // }
- // p = p + 3;
- // temp1 = (*p++);
- // temp2 = (*p++);
- // param->par_buff_float[4] = ((temp1 << 8) + temp2) / 10.0f;
- // }
- // /****************************************************
- // * 函 数 名:Air1_HandleFrame_7th
- // * 函数功能:处理空调第一帧
- // * 入口参数: p 数据指针, size 数据个数
- // * 说 明:无
- // ****************************************************/
- // void Air1_HandleFrame_8th(const u8 *p, u16 size)
- // {
- // u8 temp1, temp2;
- // u16 crc;
- // union Par_Set_Air_Union_TypeDef *param = NULL;
- // // 空调返回命令格式: 控制器地址 命令类型 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // crc = Count_CRC(p, size - 2);
- // if (crc != ((p[size - 1] << 8) + (p[size - 2])))
- // return;
- // if (*p == 1)
- // {
- // param = &Par_Set_Air1;
- // }
- // else
- // {
- // param = &Par_Set_Air2;
- // }
- // p = p + 3;
- // temp1 = (*p++);
- // temp2 = (*p++);
- // param->par_buff_float[5] = ((temp1 << 8) + temp2) / 10.0f;
- // }
- // /****************************************************
- // * 函 数 名:SendFrame_SetAirParSingle
- // * 函数功能:设置空调运行参数
- // * 入口参数:p 数据指针, register_addr 寄存器地址, count 数量
- // * 说 明:无
- // ****************************************************/
- // void SendFrame_SetAirParSingle(float dat_float, u16 register_addr)
- // {
- // OS_RESULT result;
- // UartFrame_TypeDef *pMsg;
- // // 写单寄存器命令格式: 控制器地址 命令类型 寄存器起始地址H 寄存器起始地址L 数据1H 数据1L CRC-L CRC-H
- // // u8 frame_air_set[16] = {0x01, 0x06, 0x00, 0x01, 0x00, 0x00};
- // u16 data = (u16)(dat_float * 10); // 下发给空调参数需放大10倍
- // // 写多寄存器命令格式: 控制器地址 命令类型 寄存器起始地址H 寄存器起始地址L 寄存器个数H 寄存器个数L 字节数n 数据1H 数据1L 数据2H 数据2L CRC-L CRC-H
- // // 写单寄存器命令格式: 控制器地址 命令类型 寄存器起始地址H 寄存器起始地址L 数据1H 数据1L CRC-L CRC-H
- // os_mut_wait(&mutex_uart1, 0xffff); // 永久等待互斥资源
- // ModbusRtu_SendFrame06(register_addr, data, Uart1DMA_SendData);
- // result = os_mbx_wait(&uart1_mailbox, (void *)&pMsg, TIME_200MS);
- // if (result == OS_R_OK || result == OS_R_MBX) // 成功获得消息
- // {
- // pMsg = pMsg; // 添加该语句,防止if被优化掉
- // }
- // os_mut_release(&mutex_uart1); // 释放互斥资源
- // }
- // /****************************************************
- // * 函 数 名:ReadAirData
- // * 函数功能:读取空调数据数据帧
- // * 入口参数:register_addr 寄存器地址 count 数量 frame_style 报文类型
- // * 说 明:无
- // *****************************************************/
- // void ReadAirData(void)
- // {
- // OS_RESULT result;
- // UartFrame_TypeDef *pMsg;
- // static u8 air1_index = 0; // 1#空调帧序号
- // void (*ModbusSendFrame)(u16 register_addr, u16 count, void (*Func_Send)(const u8 *data, u16 count));
- // const Modbus_Frame_TypeDef *air_frame;
- // air_frame = &Air_Frame[air1_index];
- // ModbusSendFrame = Func_ModbusRtu_SendFrame[air_frame->frame_style]; // 指向具体发送帧函数
- // ModbusSendFrame(air_frame->register_addr, air_frame->register_count, Uart1DMA_SendData); // 发送报文
- // /* 等待uart1收到数据,不阻塞任务 */
- // result = os_mbx_wait(&uart1_mailbox, (void *)&pMsg, TIME_200MS);
- // if (result == OS_R_OK || result == OS_R_MBX) // 成功获得消息
- // {
- // if (pMsg->len > 2)
- // {
- // Func_AirHandleFrame[air1_index](pMsg->buf, pMsg->len); // 解析报文
- // }
- // }
- // air1_index++;
- // if (air1_index >= AIR_FRAME_COUNT)
- // air1_index = 0;
- // }
- // /****************************************************
- // * 函 数 名:Air_Find485Addr
- // * 函数功能:空调参数设置,触摸屏485地址转换到空调485地址
- // * 入口参数:hmi_addr 触摸屏485地址
- // * 返回参数:空调485地址
- // * 说 明:0 没找到对应空调485地址
- // *****************************************************/
- // u16 AddrConv_Hmi2Air(u16 hmi_addr)
- // {
- // u8 i;
- // for (i = 0; i < ADDR_CONV_COUNT; i++)
- // {
- // if (ADDR_CONV_HMI2AIR[i][0] == hmi_addr)
- // {
- // return ADDR_CONV_HMI2AIR[i][1];
- // }
- // }
- // return FALSE;
- // }
- // /****************************************************
- // * 函 数 名:AddrConv_104IEC2Air1
- // * 函数功能:空调1 104地址转换到485地址
- // * 入口参数:i104_addr 104地址
- // * 返回参数:空调485地址
- // * 说 明:0 没找到对应空调485地址
- // *****************************************************/
- // u16 AddrConv_104IEC2Air1(u16 i104_addr)
- // {
- // u8 i;
- // for (i = 0; i < ADDR_CONV_COUNT; i++)
- // {
- // if (ADDR_CONV_104IEC2AIR1[i][0] == i104_addr)
- // {
- // return ADDR_CONV_104IEC2AIR1[i][1];
- // }
- // }
- // return FALSE;
- // }
- // /****************************************************
- // * 函 数 名:AddrConv_104IEC2Air2
- // * 函数功能:空调2 104地址转换到485地址
- // * 入口参数:i104_addr 104地址
- // * 返回参数:空调485地址
- // * 说 明:0 没找到对应空调485地址
- // *****************************************************/
- // u16 AddrConv_104IEC2Air2(u16 i104_addr)
- // {
- // u8 i;
- // for (i = 0; i < ADDR_CONV_COUNT; i++)
- // {
- // if (ADDR_CONV_104IEC2AIR2[i][0] == i104_addr)
- // {
- // return ADDR_CONV_104IEC2AIR2[i][1];
- // }
- // }
- // return FALSE;
- // }
- // /****************************************************
- // * 函 数 名:HMI_10Frame_ParSetAir
- // * 函数功能:HMI 10帧空调参数设置
- // * 入口参数:register_addr 寄存器地址 p 缓冲区指针
- // * 说 明:一次只能设置一个参数
- // *****************************************************/
- // void HMI_10Frame_ParSetAir(u16 register_addr, const float *pFloat)
- // {
- // u16 offset, addr_air;
- // offset = (register_addr - MODBUS_ADDR_AIR_WRITE) / 2; // 0x1830 0x1832 0x1834 0x1836
- // memcpy((u8 *)&Par_Set_Air1.par_buff_float[offset], (u8 *)pFloat, 4);
- // addr_air = AddrConv_Hmi2Air(register_addr);
- // if (addr_air != DEF_FALSE)
- // SendFrame_SetAirParSingle(Par_Set_Air1.par_buff_float[offset], addr_air);
- // }
- // /****************************************************
- // * 函 数 名:I104_ParSetAir1
- // * 函数功能:104设置空调1参数
- // * 入口参数:i104_addr: 104地址 data :参数
- // * 说 明:无
- // *****************************************************/
- // void I104_ParSetAir1(u16 i104_addr, float data)
- // {
- // u16 addr_air;
- // addr_air = AddrConv_104IEC2Air1(i104_addr);
- // if (addr_air != DEF_FALSE)
- // SendFrame_SetAirParSingle(data, addr_air);
- // }
- // /****************************************************
- // * 函 数 名:SendFrame_SwitchAir
- // * 函数功能:发送数据帧,开关空调
- // * 入口参数:addr_device:空调设备地址 addr_air: 寄存器地址 data: 开关指令
- // * 说 明:无
- // *****************************************************/
- // void SendFrame_SwitchAir(u8 addr_device, u16 addr_air, u16 data)
- // {
- // OS_RESULT result;
- // UartFrame_TypeDef *pMsg;
- // //// 写单寄存器命令格式: 控制器地址 命令类型 寄存器起始地址H 寄存器起始地址L 数据1H 数据1L CRC-L CRC-H
- // os_mut_wait(&mutex_uart1, 0xffff); // 永久等待互斥资源
- // ModbusRtu_SendFrame06(addr_air, data, Uart1DMA_SendData);
- // result = os_mbx_wait(&uart1_mailbox, (void *)&pMsg, TIME_200MS);
- // if (result == OS_R_OK || result == OS_R_MBX) // 成功获得消息
- // {
- // pMsg = pMsg; // 添加该语句,防止if被优化掉
- // }
- // os_mut_release(&mutex_uart1); // 释放互斥资源
- // }
- // /****************************************************
- // * 函 数 名:HMI_10Frame_ParSetAir
- // * 函数功能:HMI开关空调
- // * 入口参数:register_addr 寄存器地址 data 开关指令
- // * 说 明:无
- // *****************************************************/
- // void HMI_10Frame_SwitchAir(u16 addr_hmi, u16 data)
- // {
- // u16 addr_air;
- // addr_air = AddrConv_Hmi2Air(addr_hmi);
- // if (addr_air != DEF_FALSE)
- // {
- // SendFrame_SwitchAir(1, addr_air, data);
- // }
- // }
- // /****************************************************
- // * 函 数 名:I104_SwitchAir1
- // * 函数功能:104开关空调1
- // * 入口参数:addr_104: 104地址 data: 开关指令
- // * 说 明:无
- // *****************************************************/
- // void I104_SwitchAir1(u16 addr_104, u8 data)
- // {
- // u16 addr_air;
- // addr_air = AddrConv_104IEC2Air1(addr_104);
- // if (addr_air != DEF_FALSE)
- // {
- // SendFrame_SwitchAir(1, addr_air, data);
- // }
- // }
- // /****************************************************
- // * 函 数 名:Uart_air_test
- // * 函数功能:Uart1通信测试
- // * 入口参数:addr_104: 104地址 data: 开关指令
- // * 说 明:无
- // *****************************************************/
- // void Uart_air_test(void)
- // {
- // OS_RESULT result = OS_R_OK;
- // UartFrame_TypeDef *pMsg;
- // u8 uart1_test_buf[3] = {0};
- // result = os_mbx_wait(&uart1_mailbox, (void *)&pMsg, TIME_1000MS);
- // if (result == OS_R_OK || result == OS_R_MBX) // 成功获得消息
- // {
- // if ((pMsg->buf[0] == 0xAA) && (pMsg->buf[1] == 0xBB))
- // {
- // uart1_test_buf[0] = 0xBB;
- // uart1_test_buf[1] = 0xAA;
- // Uart1DMA_SendData(uart1_test_buf, 2);
- // }
- // else if ((pMsg->buf[0] == 0xAB) && (pMsg->buf[1] == 0xAB))
- // {
- // uart1_test_buf[0] = 0xBA;
- // uart1_test_buf[1] = 0xBA;
- // Uart1DMA_SendData(uart1_test_buf, 2);
- // bams_set_uart_flag(FALSE);
- // }
- // else if ((pMsg->buf[0] == 0x01) && (pMsg->buf[1] == 0xAA) && (pMsg->buf[2] == 0xBB))
- // {
- // uart1_test_buf[0] = 0x01;
- // uart1_test_buf[1] = 0xBB;
- // uart1_test_buf[2] = 0xAA;
- // Uart1DMA_SendData(uart1_test_buf, 3);
- // }
- // }
- // }
|