fix:修复调光时间BUG
解决调光时间一样的情况下,调光亮与调光灭的实际调光时间不一致问题
This commit is contained in:
601
UART_Set.c
Normal file
601
UART_Set.c
Normal file
@@ -0,0 +1,601 @@
|
||||
#include "UART_Set.h"
|
||||
#include "UART.h"
|
||||
#include "pwm_control.h"
|
||||
#include "string.h"
|
||||
#include "config.h"
|
||||
#include "timer.h"
|
||||
#include "STC8xxxx.h"
|
||||
#include "PWM15bit.h"
|
||||
|
||||
G_Usart g_Usart;
|
||||
G_answer g_answer;
|
||||
S_recv s_recv;
|
||||
|
||||
u8 debug = 0x00;
|
||||
|
||||
|
||||
/*
|
||||
<EFBFBD>жϽ<EFBFBD><EFBFBD>յ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>Ϸ<EFBFBD>
|
||||
*/
|
||||
void Usart_judge_Data(void)
|
||||
{
|
||||
u8 len = 0;
|
||||
u8 i, sum;
|
||||
sum = 0;
|
||||
g_Usart.ok_flag = 0;
|
||||
|
||||
if((recv_start_flag==1)&&(systick_1ms-recv_time>8))
|
||||
{
|
||||
recv_start_flag=0;
|
||||
#if DEBUG_
|
||||
{
|
||||
for(i=0;i<COM1.RX_Cnt;i++)
|
||||
{
|
||||
g_Usart.recv_buffer[i]=RX1_Buffer[i];
|
||||
}
|
||||
COM1.RX_Cnt = 0;
|
||||
memset(RX1_Buffer,0,sizeof(RX1_Buffer));
|
||||
}
|
||||
#else
|
||||
{
|
||||
len = COM3.RX_Cnt;
|
||||
for(i=0;i<COM3.RX_Cnt;i++)
|
||||
{
|
||||
g_Usart.recv_buffer[i]=RX3_Buffer[i];
|
||||
}
|
||||
COM3.RX_Cnt = 0;
|
||||
memset(RX3_Buffer,0,sizeof(RX3_Buffer));
|
||||
// if(debug) Printbuffer1(g_Usart.recv_buffer,11);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 0; i < g_Usart.recv_buffer[UART_FMT_LEN]; i++)
|
||||
{
|
||||
sum += g_Usart.recv_buffer[i];
|
||||
}
|
||||
if (sum == 0xff)
|
||||
{
|
||||
if(len == g_Usart.recv_buffer[UART_FMT_LEN])
|
||||
{
|
||||
if ((g_Usart.recv_buffer[UART_FMT_ADDR_RX] == ADDR_RX) && (g_Usart.recv_buffer[UART_FMT_DEV_TYPE] == DEV_TYPE))
|
||||
{
|
||||
g_Usart.Sn = g_Usart.recv_buffer[UART_FMT_TYPE]&0x0F;
|
||||
|
||||
if ((g_Usart.recv_buffer[UART_FMT_TYPE] & 0x40) == 0x00) //<2F><><EFBFBD>кż<D0BA><C5BC>飬<EFBFBD><EFBFBD>
|
||||
{
|
||||
g_Usart.ok_flag = 1; //<2F><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
else //<2F><><EFBFBD>к<EFBFBD>Ϊ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>øı<C3B8><C4B1><EFBFBD><EFBFBD>к<EFBFBD>
|
||||
{
|
||||
if (g_Usart.Sn == g_Usart.lastsn)
|
||||
{
|
||||
g_Usart.ok_flag = 0;
|
||||
g_answer.short_answer[UART_FMT_CMD]=0xF0;
|
||||
g_answer.short_answer_flag=0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Usart.ok_flag = 1;
|
||||
}
|
||||
}
|
||||
g_Usart.lastsn = g_Usart.Sn;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Usart_Deal_Data(void)
|
||||
{
|
||||
u8 i;
|
||||
if(g_Usart.ok_flag)
|
||||
{
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("data ok");
|
||||
}
|
||||
switch(g_Usart.recv_buffer[UART_FMT_CMD])
|
||||
{
|
||||
//<2F><>ѯ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
||||
case USART_CMD_QUEST:
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("ask");
|
||||
}
|
||||
g_answer.long_answer[UART_FMT_CMD]=USART_CMD_QUEST_A;
|
||||
g_answer.long_answer_flag=0x01;
|
||||
break;
|
||||
//<2F><><EFBFBD>ðٷֱ<D9B7><D6B1><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
case USART_CMD_SET_BRIGHTNESS:
|
||||
g_answer.short_answer[UART_FMT_CMD]=USART_CMD_SET_BRIGHTNESS_A;
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("percent");
|
||||
}
|
||||
//<2F><>һ<EFBFBD><D2BB>ʹ<EFBFBD><CAB9>λ
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (g_Usart.recv_buffer[7] & (1 << i))
|
||||
{
|
||||
s_recv.flag1[i] = 1;
|
||||
s_recv.flag2[i] = 0;
|
||||
s_recv.B_Ch[i] = g_Usart.recv_buffer[21 - i];
|
||||
|
||||
if (s_recv.B_Ch[i] < s_recv.B_min)
|
||||
{
|
||||
s_recv.B_Ch[i] = s_recv.B_min;
|
||||
}
|
||||
|
||||
if (s_recv.B_Ch[i] > s_recv.B_max)
|
||||
{
|
||||
s_recv.B_Ch[i] = s_recv.B_max;
|
||||
}
|
||||
|
||||
s_pwm.wanttopwm[i] = PWM_MAX_VALUE - s_recv.B_Ch[i] * PWM_MAX_VALUE * s_recv.global_brightness / 100 / 100 * s_recv.key_status[i];
|
||||
s_pwm.doublecurrpwm[i] = s_pwm.currpwm[i]; //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
|
||||
s_recv.gradual_time[i] = g_Usart.recv_buffer[9] * 10; /*<2A><><EFBFBD>յĽ<D5B5><C4BD><EFBFBD>ʱ<EFBFBD><CAB1>*/
|
||||
/*
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
*/
|
||||
if (s_recv.gradual_time[i] == 0)
|
||||
{
|
||||
s_recv.gradual_time[i] = 1;
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>10ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm<77><6D><EFBFBD><EFBFBD>ֵ*/
|
||||
if (s_pwm.wanttopwm[i] > s_pwm.currpwm[i])
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = (float)(s_pwm.wanttopwm[i] - s_pwm.currpwm[i]) / s_recv.gradual_time[i];
|
||||
if (s_pwm.every_change_10ms[i] < 1)
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (s_pwm.wanttopwm[i] < s_pwm.currpwm[i])
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = (float)(s_pwm.currpwm[i] - s_pwm.wanttopwm[i]) / s_recv.gradual_time[i];
|
||||
if (s_pwm.every_change_10ms[i] < 1)
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//<2F>ڶ<EFBFBD><DAB6><EFBFBD>ʹ<EFBFBD><CAB9>λ
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (g_Usart.recv_buffer[8] & (1 << i))
|
||||
{
|
||||
s_recv.flag1[i+8] = 1;
|
||||
s_recv.flag2[i+8] = 0;
|
||||
s_recv.B_Ch[i+8] = g_Usart.recv_buffer[13 - i];
|
||||
|
||||
if (s_recv.B_Ch[i+8] < s_recv.B_min)
|
||||
{
|
||||
s_recv.B_Ch[i+8] = s_recv.B_min;
|
||||
}
|
||||
|
||||
if (s_recv.B_Ch[i+8] > s_recv.B_max)
|
||||
{
|
||||
s_recv.B_Ch[i+8] = s_recv.B_max;
|
||||
}
|
||||
|
||||
s_pwm.wanttopwm[i+8] = PWM_MAX_VALUE - s_recv.B_Ch[i+8] * PWM_MAX_VALUE * s_recv.global_brightness / 100 / 100 * s_recv.key_status[i+8];
|
||||
s_pwm.doublecurrpwm[i] = s_pwm.currpwm[i]; //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
|
||||
s_recv.gradual_time[i+8] = g_Usart.recv_buffer[9] * 10; /*<2A><><EFBFBD>յĽ<D5B5><C4BD><EFBFBD>ʱ<EFBFBD><CAB1>*/
|
||||
|
||||
/*
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
*/
|
||||
if (s_recv.gradual_time[i+8] == 0)
|
||||
{
|
||||
s_recv.gradual_time[i+8] = 1;
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>10ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm<77><6D><EFBFBD><EFBFBD>ֵ*/
|
||||
if (s_pwm.wanttopwm[i+8] > s_pwm.currpwm[i+8])
|
||||
{
|
||||
s_pwm.every_change_10ms[i+8] = (float)(s_pwm.wanttopwm[i+8] - s_pwm.currpwm[i+8]) / s_recv.gradual_time[i+8];
|
||||
if (s_pwm.every_change_10ms[i+8] < 1)
|
||||
{
|
||||
s_pwm.every_change_10ms[i+8] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (s_pwm.wanttopwm[i+8] < s_pwm.currpwm[i+8])
|
||||
{
|
||||
s_pwm.every_change_10ms[i+8] = (float)(s_pwm.currpwm[i+8] - s_pwm.wanttopwm[i+8]) / s_recv.gradual_time[i+8];
|
||||
if (s_pwm.every_change_10ms[i+8] < 1)
|
||||
{
|
||||
s_pwm.every_change_10ms[i+8] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_answer.short_answer_flag=0x01;
|
||||
break;
|
||||
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
case USART_CMD_SET_MODE:
|
||||
g_answer.short_answer[UART_FMT_CMD]=USART_CMD_SET_MODE_A;
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("change light");
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (g_Usart.recv_buffer[7] & (1 << i))
|
||||
{
|
||||
s_recv.flag1[i] = 0;
|
||||
s_recv.flag2[i] = 1;
|
||||
s_recv.mode[i] = g_Usart.recv_buffer[9];
|
||||
s_recv.pwm_step[i] = g_Usart.recv_buffer[11];
|
||||
|
||||
if (s_recv.mode[i] == 0x00)
|
||||
{
|
||||
if (g_Usart.recv_buffer[10] == 0x00)
|
||||
{
|
||||
s_recv.forward[i] = 0;
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[10] == 0x01)
|
||||
{
|
||||
s_recv.forward[i] = 1;
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[10] == 0x02) //<2F><>ת
|
||||
{
|
||||
if (s_recv.forward[i] == 0x01)
|
||||
{
|
||||
s_recv.forward[i] = 0x00;
|
||||
continue; // Ϊ<><CEAA>ֹ<EFBFBD><D6B9>ת֮<D7AA><D6AE>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
|
||||
}
|
||||
|
||||
if (s_recv.forward[i] == 0x00)
|
||||
{
|
||||
s_recv.forward[i] = 0x01;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (g_Usart.recv_buffer[8] & (1 << i))
|
||||
{
|
||||
s_recv.flag1[i+8] = 0;
|
||||
s_recv.flag2[i+8] = 1;
|
||||
s_recv.mode[i+8] = g_Usart.recv_buffer[9];
|
||||
s_recv.pwm_step[i+8] = g_Usart.recv_buffer[11];
|
||||
|
||||
if (s_recv.mode[i+8] == 0x00)
|
||||
{
|
||||
if (g_Usart.recv_buffer[10] == 0x00)
|
||||
{
|
||||
s_recv.forward[i+8] = 0;
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[10] == 0x01)
|
||||
{
|
||||
s_recv.forward[i+8] = 1;
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[10] == 0x02) //<2F><>ת
|
||||
{
|
||||
if (s_recv.forward[i+8] == 0x01)
|
||||
{
|
||||
s_recv.forward[i+8] = 0x00;
|
||||
continue; // Ϊ<><CEAA>ֹ<EFBFBD><D6B9>ת֮<D7AA><D6AE>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
|
||||
}
|
||||
|
||||
if (s_recv.forward[i+8] == 0x00)
|
||||
{
|
||||
s_recv.forward[i+8] = 0x01;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
g_answer.short_answer_flag=0x01;
|
||||
break;
|
||||
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case USART_CMD_ALL_BRIGHTNESS:
|
||||
g_answer.short_answer[UART_FMT_CMD]=USART_CMD_ALL_BRIGHTNESS_A;
|
||||
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("global light");
|
||||
}
|
||||
|
||||
// s_recv.changeflag = 1;
|
||||
if (g_Usart.recv_buffer[7] & (1 << 5)) //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
s_recv.B_min = g_Usart.recv_buffer[10];
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
if ( s_pwm.currvalue[i] < s_recv.B_min)
|
||||
{
|
||||
s_pwm.currvalue[i] = s_recv.B_min;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[7] & (1 << 6)) //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
s_recv.B_max = g_Usart.recv_buffer[9];
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
if ( s_pwm.currvalue[i] > s_recv.B_max)
|
||||
{
|
||||
s_pwm.currvalue[i] = s_recv.B_max;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[7] & (1 << 7)) //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
s_recv.global_brightness = g_Usart.recv_buffer[8];
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
// s_pwm.wanttopwmflash[i] = PWM_MAX_VALUE - s_pwm.currvalue[i] * PWM_MAX_VALUE * s_recv.global_brightness / 100 / 100 * s_recv.key_status[i];
|
||||
|
||||
s_recv.flag1[i] = 1;
|
||||
s_recv.flag2[i] = 0;
|
||||
|
||||
s_pwm.wanttopwm[i] = PWM_MAX_VALUE - s_recv.B_Ch[i] * PWM_MAX_VALUE * s_recv.global_brightness / 100 / 100 * s_recv.key_status[i];
|
||||
s_pwm.doublecurrpwm[i] = s_pwm.currpwm[i]; //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
if(s_pwm.wanttopwm[i] > PWM_MAX_VALUE)
|
||||
{
|
||||
s_pwm.wanttopwm[i] = PWM_MAX_VALUE;
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>10ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm<77><6D><EFBFBD><EFBFBD>ֵ*/
|
||||
if (s_pwm.wanttopwm[i] > s_pwm.currpwm[i])
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = (float)(s_pwm.wanttopwm[i] - s_pwm.currpwm[i]) / s_recv.gradual_time[i];
|
||||
if (s_pwm.every_change_10ms[i] < 1)
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (s_pwm.wanttopwm[i] < s_pwm.currpwm[i])
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = (float)(s_pwm.currpwm[i] - s_pwm.wanttopwm[i]) / s_recv.gradual_time[i];
|
||||
if (s_pwm.every_change_10ms[i] < 1)
|
||||
{
|
||||
s_pwm.every_change_10ms[i] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
g_answer.short_answer_flag=0x01;
|
||||
break;
|
||||
|
||||
|
||||
//<2F><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>״̬
|
||||
case USART_CMD_SWITCH_STATUS:
|
||||
g_answer.short_answer[UART_FMT_CMD]=USART_CMD_SWITCH_STATUS_A;
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("switch state");
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (g_Usart.recv_buffer[7] & (1 << i))
|
||||
{
|
||||
if (g_Usart.recv_buffer[9 + i] == 0x01)
|
||||
{
|
||||
s_recv.key_status[i] = 0x01;
|
||||
//s_pwm.currvalue[i] = s_pwm.thenvalue[i];
|
||||
Open_Light(i);
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[9 + i] == 0x00)
|
||||
{
|
||||
//s_pwm.thenvalue[i] = s_pwm.currvalue[i];
|
||||
Close_Light(i);
|
||||
s_recv.flag1[i] = 0;
|
||||
s_recv.flag2[i] = 0;
|
||||
s_recv.mode[i] = 2;
|
||||
s_recv.key_status[i] = 0x00;
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[9 + i] == 0x02)
|
||||
{
|
||||
if (s_recv.key_status[i] == 0x00)
|
||||
{
|
||||
s_recv.key_status[i] = 0x01;
|
||||
//s_pwm.currvalue[i] = s_pwm.thenvalue[i];
|
||||
Open_Light(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (s_recv.key_status[i] == 0x01)
|
||||
{
|
||||
//s_pwm.thenvalue[i] = s_pwm.currvalue[i];
|
||||
Close_Light(i);
|
||||
s_recv.flag1[i] = 0;
|
||||
s_recv.flag2[i] = 0;
|
||||
s_recv.mode[i] = 2;
|
||||
s_recv.key_status[i] = 0x00;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (g_Usart.recv_buffer[8] & (1 << i))
|
||||
{
|
||||
if (g_Usart.recv_buffer[9 + 8 + i] == 0x01)
|
||||
{
|
||||
s_recv.key_status[i+8] = 0x01;
|
||||
//s_pwm.currvalue[i+8] = s_pwm.thenvalue[i];
|
||||
Open_Light(i+8);
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[9 +8 + i] == 0x00)
|
||||
{
|
||||
//s_pwm.thenvalue[i+8] = s_pwm.currvalue[i+8];
|
||||
Close_Light(i+8);
|
||||
s_recv.flag1[i+8] = 0;
|
||||
s_recv.flag2[i+8] = 0;
|
||||
s_recv.mode[i+8] = 2;
|
||||
s_recv.key_status[i+8] = 0x00;
|
||||
}
|
||||
|
||||
if (g_Usart.recv_buffer[9 + 8 + i] == 0x02)
|
||||
{
|
||||
if (s_recv.key_status[i+8] == 0x00)
|
||||
{
|
||||
s_recv.key_status[i+8] = 0x01;
|
||||
//s_pwm.currvalue[i+8] = s_pwm.thenvalue[i];
|
||||
Open_Light(i+8);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (s_recv.key_status[i+8] == 0x01)
|
||||
{
|
||||
//s_pwm.thenvalue[i+8] = s_pwm.currvalue[i+8];
|
||||
Close_Light(i+8);
|
||||
s_recv.flag1[i+8] = 0;
|
||||
s_recv.flag2[i+8] = 0;
|
||||
s_recv.mode[i+8] = 2;
|
||||
s_recv.key_status[i+8] = 0x00;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
g_answer.short_answer_flag=0x01;
|
||||
break;
|
||||
case USART_CMD_DEBUG_SET:
|
||||
g_answer.short_answer[UART_FMT_CMD]=USART_CMD_DEBUG_SET_A;
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("debug");
|
||||
}
|
||||
debug = g_Usart.recv_buffer[7];
|
||||
g_answer.short_answer_flag=0x01;
|
||||
break;
|
||||
case Usart_CMD_Version:
|
||||
g_answer.version_answer[UART_FMT_CMD]=Usart_CMD_Version_A;
|
||||
g_answer.version_answer_flag=0x01;
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("version");
|
||||
}
|
||||
break;
|
||||
}
|
||||
g_Usart.ok_flag=0;
|
||||
}
|
||||
}
|
||||
|
||||
void Usart_answer(void)
|
||||
{
|
||||
u8 i=0;
|
||||
u8 checksum=0;
|
||||
if(g_answer.long_answer_flag)
|
||||
{
|
||||
g_answer.long_answer[UART_FMT_ADDR_TX]=ADDR_RX;
|
||||
g_answer.long_answer[UART_FMT_TYPE]=g_Usart.Sn;
|
||||
g_answer.long_answer[UART_FMT_DEV_TYPE]=DEV_TYPE;
|
||||
g_answer.long_answer[UART_FMT_ADDR_RX]=g_Usart.recv_buffer[UART_FMT_ADDR_TX];
|
||||
g_answer.long_answer[UART_FMT_LEN]=0x14;
|
||||
g_answer.long_answer[7] = s_recv.global_brightness;
|
||||
for(i=0;i<12;i++)
|
||||
{
|
||||
g_answer.long_answer[8+i] = s_pwm.currvalue[11-i];
|
||||
if(s_recv.key_status[i] == 0x01)
|
||||
{
|
||||
g_answer.long_answer[8+i] |= 0x80;
|
||||
}
|
||||
}
|
||||
checksum=sumfunc(g_answer.long_answer,0x14);
|
||||
g_answer.long_answer[UART_FMT_CKS]=checksum;
|
||||
|
||||
Printbuffer3(g_answer.long_answer,0x14); //<2F><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ
|
||||
|
||||
if(debug)
|
||||
{
|
||||
// PrintString1("long answer");
|
||||
}
|
||||
g_answer.long_answer_flag=0;
|
||||
memset(g_Usart.recv_buffer,0,32);
|
||||
}
|
||||
if(g_answer.short_answer_flag)
|
||||
{
|
||||
g_answer.short_answer[UART_FMT_ADDR_TX]=ADDR_RX;
|
||||
g_answer.short_answer[UART_FMT_TYPE]=g_Usart.Sn;
|
||||
g_answer.short_answer[UART_FMT_DEV_TYPE]=DEV_TYPE;
|
||||
g_answer.short_answer[UART_FMT_ADDR_RX]=g_Usart.recv_buffer[UART_FMT_ADDR_TX];
|
||||
g_answer.short_answer[UART_FMT_LEN]=0x07;
|
||||
checksum=sumfunc(g_answer.short_answer,0x07);
|
||||
g_answer.short_answer[UART_FMT_CKS]=checksum;
|
||||
Printbuffer3(g_answer.short_answer,0x07);
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("short answer");
|
||||
}
|
||||
|
||||
|
||||
g_answer.short_answer_flag=0;
|
||||
memset(g_Usart.recv_buffer,0,32);
|
||||
}
|
||||
|
||||
if(g_answer.version_answer_flag)
|
||||
{
|
||||
g_answer.version_answer[UART_FMT_ADDR_TX]=ADDR_RX;
|
||||
g_answer.version_answer[UART_FMT_TYPE]=g_Usart.Sn;
|
||||
g_answer.version_answer[UART_FMT_DEV_TYPE]=DEV_TYPE;
|
||||
g_answer.version_answer[UART_FMT_ADDR_RX]=g_Usart.recv_buffer[UART_FMT_ADDR_TX];
|
||||
g_answer.version_answer[UART_FMT_LEN]=0x09;
|
||||
g_answer.version_answer[UART_FMT_CMD+1]=Version_High;
|
||||
g_answer.version_answer[UART_FMT_CMD+2]=Version_Low;
|
||||
|
||||
checksum=sumfunc(g_answer.version_answer,0x09);
|
||||
g_answer.version_answer[UART_FMT_CKS]=checksum;
|
||||
Printbuffer3(g_answer.version_answer,0x09);
|
||||
if(debug)
|
||||
{
|
||||
PrintString1("version_answer");
|
||||
}
|
||||
g_answer.version_answer_flag=0;
|
||||
memset(g_Usart.recv_buffer,0,32);
|
||||
}
|
||||
memset(&g_answer,0,sizeof(g_answer));
|
||||
}
|
||||
|
||||
u8 sumfunc(u8* answer,u8 len)
|
||||
{
|
||||
u8 m = 0;
|
||||
u8 j;
|
||||
for (j = 0; j < len; j++)
|
||||
{
|
||||
if (5 == j) continue;
|
||||
m += *(answer+j);
|
||||
}
|
||||
return ~m;
|
||||
}
|
||||
Reference in New Issue
Block a user