接受数据并显示在屏幕上

①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);
        }
    }    
    
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值