①uart接受数据
int communication_putByte(char a)
{
//发送数据
UT1_BUF = a;
while((UT1_CON & BIT(15)) == 0);
UT1_CON |= BIT(13);//TI置0
return a;
}
char buff[16];
char dex_buff[16];
int uart_index = 0;
int temp_dex = 0;
int strtodex(void)
{
int i = 0;
temp_dex = 0;
while((i < 16) && (buff[i] != 0x0a))
{
if((buff[i] >= '0') && (buff[i] <= '9'))
{
temp_dex *= 10;
temp_dex += (buff[i] - '0');
//printf("--------temp_dex = %d--------\n",temp_dex);
}
i ++;
}
if(buff[0] == '-')
temp_dex *= (-1);
//printf("temp_dex = %d\r\n", temp_dex);
}
void dextostr(void)
{
int i;
int dex_r = temp_dex;
memset(dex_buff, 0x00, 16);
if(temp_dex < 0)
{
dex_buff[0] = '-';
dex_r *= (-1);
i = 1;
do
{
dex_buff[i] = dex_r%10 + '0';
dex_r = dex_r/10;
i++;
}while(dex_r);
}
else
{
i = 0;
do
{
dex_buff[i] = dex_r%10 + '0';
dex_r = dex_r/10;
i++;
}while(dex_r);
}
//printf("dex_buff = %s\r\n", dex_buff);
}
___interrupt void uarrx_irq_handler()
{
static unsigned char temp = 0;
// puts("uarrx_irq_handler>>>>>\n\n\n");
if(UT1_CON & BIT(15)) //tpend
{
//发送数据完成
UT1_CON |= BIT(13);//TI清0
puts("uarrx_irq_handler>>1111111111111>>>\n\n\n");
}
else if(UT1_CON & BIT(14)) //rpend
{
// puts("uarrx_irq_handler>>222222222>>>\n\n\n");
temp = UT1_BUF;
UT1_CON |= BIT(12);
//printf("%x", temp);
if(temp == 0xa1)
{
uart_index = 0;
//printf("temp = %s\r\n", buff);
strtodex();
dextostr();
}
if(uart_index && uart_index < 10)
{
buff[uart_index - 1] = temp;
uart_index ++;
if(uart_index > 16)
uart_index = 0;
//printf("--------------uarrx_irq_handler0 =%x---------------\n",buff[uart_index - 1]);
}
if(temp == 0xc8)
{
uart_index = 1;
memset(0x00, buff, 16);
//printf("------------------uarrx_irq_handler1---------------\n");
}
//接受数据完成
UT1_CON |= BIT(7) ; //清UT0_HRXCNT
}
else if(UT1_CON & BIT(11)) //otpend
{
puts("uarrx_irq_handler>>33333333333>>>\n\n\n");
//接受数据超时
UT1_CON |= BIT(10);
UT1_CON |= BIT(7) ; //清UT0_HRXCNT
}
// puts("uarrx_irq_handler>>4444444444444>>>\n\n\n");
}
②计算是否为正常温度,低温,高温,并且发送UI显示
void temp_detect_handle(void){
static u8 i = 0;
i ^= 0x01;
struct intent it;
struct application *app;
init_intent(&it);
app = get_current_app();
//gpio_direction_output(TEMP_DETECT_PIN, i);//温度开关io高低电平反复切换达到实时测温目的
printf("temp_dex0000 >>>>>>>>>>>>>>> %d\r\n", temp_dex);
if(temp_cnt){
if(temp_dex == 0)
{/******第一次通信接受数据不显示温度文本******/
printf("temp_dex11111 >>>>>>>>>>>>>>> %d\r\n", temp_dex);
return;
}else{
printf("temp_dex2222 >>>>>>>>>>>>>>> %d\r\n", temp_dex);
temp_cnt = 0;
}
}
if((db_select("dtemp"))){
down_cvalue_set = db_select("lower");
}else{
down_cvalue_set = db_select("lower")*(-1);
}
if((db_select("utemp"))){
up_cvalue_set = db_select("upper");
}else{
up_cvalue_set = db_select("upper")*(-1);
}
if(!(db_select("unit"))){
int size_high = temp_dex*db_select("radio")/1000;
int size_low = temp_dex*db_select("radio")%1000;
printf("size_high000000 ========== %d\r\n", size_high);
printf("up_cvalue_set000000 ========== %d\r\n", up_cvalue_set);
printf("down_cvalue_set000000 ========== %d\r\n", down_cvalue_set);
if((down_cvalue_set <= size_high) && (size_high < up_cvalue_set))
{
puts("------------white_temp000000000-----------\n");
if(!strcmp(app->name, "video_photo"))
{
video_photo_post_msg("white_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("white_temp");
}
}else if(size_high == up_cvalue_set){
if(size_low == 0)
{
puts("------------white_temp1111111111-----------\n");
if(!strcmp(app->name, "video_photo"))
{
video_photo_post_msg("white_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("white_temp");
}
}else{
puts("------------red_temp000000000-----------\n");
if(!strcmp(app->name, "video_photo"))
{
temp_level = 1;
video_photo_post_msg("red_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("red_temp");
}
}
}else if(size_high > up_cvalue_set){
puts("------------red_temp1111111111111-----------\n");
if(!strcmp(app->name, "video_photo"))
{
temp_level = 1;
video_photo_post_msg("red_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("red_temp");
}
}else{
puts("------------red_temp222222222222-----------\n");
if(!strcmp(app->name, "video_photo"))
{
temp_level = 0;
video_photo_post_msg("red_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("red_temp");
}
}
}else{
int size_high = temp_dex*db_select("radio")*18/10000+32;
int size_low = temp_dex*db_select("radio")*18/10%1000;
int f_up_value = up_cvalue_set*18/10+32;
int f_down_value = down_cvalue_set*18/10+32;
if(f_down_value <= size_high && size_high < f_up_value)
{
if(!strcmp(app->name, "video_photo"))
{
video_photo_post_msg("white_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("white_temp");
}
}else if(size_high == f_up_value){
if(size_low == 0)
{
if(!strcmp(app->name, "video_photo"))
{
video_photo_post_msg("white_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("white_temp");
}
}else{
if(!strcmp(app->name, "video_photo"))
{
temp_level = 1;
video_photo_post_msg("red_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("red_temp");
}
}
}else if(size_high > f_up_value){
if(!strcmp(app->name, "video_photo"))
{
temp_level = 1;
video_photo_post_msg("red_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("red_temp");
}
}else{
if(!strcmp(app->name, "video_photo"))
{
temp_level = 0;
video_photo_post_msg("red_temp");
}else if(!strcmp(app->name, "video_rec")){
video_rec_post_msg("red_temp");
}
}
}
}
③用图片显示温度的每个数字
static int tph_white_temp_handler(const char *type, u32 arg)
{
ui_hide(TEXT_HIGH_TPH_RED);
ui_hide(TEXT_LOW_TPH_RED);
ui_hide(PIC_T_TPH_WHITE);
ui_hide(LAYOUT_TEMP_RED_TPH);
ui_show(LAYOUT_TEMP_WHITE_TPH);
int size_high_f = temp_dex*db_select("radio")*18/10000+32;
int size_low_f = temp_dex*db_select("radio")*18/10%1000;
if(!(db_select("unit"))){
if(temp_dex <= (-1000)){//温度小于-100°C
puts("-------------------1000-----------------\n");
ui_show(PIC_FU_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,temp_dex/(-1)*db_select("radio")/1000%10);
ui_pic_show_image_by_id(PIC_TEN_WHITE,temp_dex/(-1)*db_select("radio")/10000%10);
ui_pic_show_image_by_id(PIC_HUNDRED_WHITE,temp_dex/(-1)*db_select("radio")/100000);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,temp_dex/(-1)*db_select("radio")%1000/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,10);
}else if((temp_dex > (-1000)) && (temp_dex <= (-100))){//温度小于等于-10°C大于-100°C
puts("----------100-----------1000----------\n");
ui_hide(PIC_FU_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,temp_dex/(-1)*db_select("radio")/1000%10);
ui_pic_show_image_by_id(PIC_TEN_WHITE,temp_dex/(-1)*db_select("radio")/10000);
ui_pic_show_image_by_id(PIC_HUNDRED_WHITE,10);//显示符号
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,temp_dex/(-1)*db_select("radio")%1000/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,10);
}else if((temp_dex > (-100)) && (temp_dex < 0)){//温度小于0°C大于-10°C
puts("---------0----------------100----------\n");
ui_hide(PIC_FU_WHITE);
ui_hide(PIC_HUNDRED_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,temp_dex/(-1)*db_select("radio")/1000%10);
ui_pic_show_image_by_id(PIC_TEN_WHITE,10);//显示符号
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,temp_dex/(-1)*db_select("radio")%1000/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,10);
}else if((temp_dex >= 0) && (temp_dex < 100)){//温度大于等于0°C小于10°C
puts("---------0----------------100----------\n");
ui_hide(PIC_FU_WHITE);
ui_hide(PIC_HUNDRED_WHITE);
ui_hide(PIC_TEN_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,temp_dex*db_select("radio")/1000%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,temp_dex*db_select("radio")%1000/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,10);
}else if((temp_dex >= 100) && (temp_dex < 1000)){
puts("---------100-------------1000----------\n");
ui_hide(PIC_FU_WHITE);
ui_hide(PIC_HUNDRED_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_TEN_WHITE,temp_dex*db_select("radio")/10000);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,temp_dex*db_select("radio")/1000%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,temp_dex*db_select("radio")%1000/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,10);
}else if(temp_dex >= 1000){
puts("-------------------1000----------------\n");
ui_hide(PIC_FU_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,temp_dex*db_select("radio")/1000%10);
ui_pic_show_image_by_id(PIC_TEN_WHITE,temp_dex*db_select("radio")/10000%10);
ui_pic_show_image_by_id(PIC_HUNDRED_WHITE,temp_dex*db_select("radio")/100000);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,temp_dex*db_select("radio")%1000/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,10);
}
}else{
if(size_high_f >= 100){
ui_hide(PIC_FU_WHITE);
ui_show(PIC_DROP_WHITE);
ui_pic_show_image_by_id(PIC_HUNDRED_WHITE,size_high_f/100);
ui_pic_show_image_by_id(PIC_TEN_WHITE,size_high_f%100/10);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,size_high_f%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,size_low_f/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,size_low_f/10%10);
ui_show(PIC_T_TPH_WHITE);
}else if((size_high_f >= 10) && (size_high_f < 100)){
ui_hide(PIC_FU_WHITE);
ui_hide(PIC_HUNDRED_WHITE);
ui_show(PIC_DROP_WHITE);
ui_show(PIC_T_TPH_WHITE);
ui_pic_show_image_by_id(PIC_TEN_WHITE,size_high_f/10);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,size_high_f%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,size_low_f/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,size_low_f/10%10);
}else if((size_high_f >= 0) && (size_high_f < 10)){
ui_hide(PIC_FU_WHITE);
ui_hide(PIC_HUNDRED_WHITE);
ui_hide(PIC_TEN_WHITE);
ui_show(PIC_DROP_WHITE);
ui_show(PIC_T_TPH_WHITE);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,size_high_f%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,size_low_f/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,size_low_f/10%10);
}else if((size_high_f > (-10)) && (size_high_f < 0)){
ui_hide(PIC_FU_WHITE);
ui_hide(PIC_HUNDRED_WHITE);
ui_show(PIC_DROP_WHITE);
ui_show(PIC_T_TPH_WHITE);
ui_pic_show_image_by_id(PIC_TEN_WHITE,10);//显示符号
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,size_high_f/(-1)%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,size_low_f/(-1)/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,size_low_f/(-1)/10%10);
}else if((size_high_f >= (-10)) && (size_high_f < (-100))){
ui_hide(PIC_FU_WHITE);
ui_show(PIC_DROP_WHITE);
ui_show(PIC_T_TPH_WHITE);
ui_pic_show_image_by_id(PIC_HUNDRED_WHITE,10);
ui_pic_show_image_by_id(PIC_TEN_WHITE,size_high_f/(-1)%100/10);
ui_pic_show_image_by_id(PIC_INDIVIDUL_WHITE,size_high_f/(-1)%10);
ui_pic_show_image_by_id(PIC_POINT_FISRT_WHITE,size_low_f/(-1)/100);
ui_pic_show_image_by_id(PIC_POINT_SECOND_WHITE,size_low_f/(-1)/10%10);
}
}
}