硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6017|回复: 7
收起左侧

[emWin] graph死机

[复制链接]

1

主题

5

回帖

1

积分

新手上路

积分
1
发表于 2015-2-17 23:38:18 | 显示全部楼层 |阅读模式
这样怎么会死机呢


void Progbar()
{
            I16 buffer[240];
            int a;
       // GRAPH_Handle hGraph;
        WM_HWIN hGraph;
            GRAPH_DATA_Handle hData;
            GRAPH_SCALE_Handle hScale1,hScale2;
                    for(a = 0; a< 240; a++)
                {
          buffer[a]=ADC_ConvertedValue>>4;
        }
        
            hGraph = GRAPH_CreateEx(0, 80, 239, 239, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_GRAPH0);
            //创建图表
            hData = GRAPH_DATA_YT_Create(GUI_DARKGREEN, 500,buffer, 340);
            //表数据
            GRAPH_AttachData(hGraph, hData);
                //添加到图表
            hScale1 = GRAPH_SCALE_Create(12, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 10);
                //刻度值
            GRAPH_AttachScale(hGraph, hScale1);
                GRAPH_SCALE_SetFactor(hScale1,0.1);//改变刻度
                hScale2 = GRAPH_SCALE_Create(12,GUI_TA_VCENTER,GRAPH_SCALE_CF_HORIZONTAL, 20);
                //刻度值
            GRAPH_AttachScale(hGraph, hScale2);
                GRAPH_SCALE_SetFactor(hScale2,0.2);
                //添加刻度到图表、
               
                GRAPH_SetGridVis(hGraph,1);//设置网格可见
               
                GRAPH_SetGridDistX(hGraph,110);
                GRAPH_SetGridDistY(hGraph,120);//网格间距/
               
                GRAPH_SetBorder(hGraph,15,15,0,0);
               
                //GRAPH_SetVSizeY(hGraph,320);//扩展网格
                //GRAPH_SetVSizeX(hGraph,320);
                //GRAPH_SetColor(hGraph,GUI_YELLOW,GRAPH_CI_BK);
               
                GRAPH_SetColor(hGraph,GUI_BLUE,GRAPH_CI_FRAME);
                GRAPH_SetColor(hGraph,GUI_RED,GRAPH_CI_GRID);
                GRAPH_AttachData(hGraph,hData);
                //GRAPH_DATA_YT_AddValue(hData,50);//添加数据
            
               
                for(a = 0; a< 240; a++)
                {
                    GRAPH_DATA_YT_AddValue(hData,buffer[a] );
                }   
               
               
                //GRAPH_AddGraph();

               
               

}

        
        int main(void)
        {
            
            //GUI_HWIN hWindow1;
            LED_GPIO_Config();   
            ADC1_Init();
            SysTick_Init();
            RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
            GUI_Init();
            //WM_SetCreateFlags(WM_CF_MEMDEV);
            GUI_DispStringAt("Background of window has not been redrawn", 0, 40);   
            
            while(1)
            {
                Progbar();
              GUI_Exec();

               

            }


}
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-2-17 23:39:13 | 显示全部楼层
大神给解答一下  小弟刚学
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-2-17 23:40:56 | 显示全部楼层
帮解答一下  小弟刚学
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2015-2-18 08:50:31 | 显示全部楼层
你调用的有问题,这种情况下,你是在循环的创建graph控件,动态内存申请完就死机了。

  int main(void)
        {
            
            //GUI_HWIN hWindow1;
            LED_GPIO_Config();   
            ADC1_Init();
            SysTick_Init();
            RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
            GUI_Init();
            //WM_SetCreateFlags(WM_CF_MEMDEV);
            GUI_DispStringAt("Background of window has not been redrawn", 0, 40);   
            Progbar(); //控件创建放在这里,创建一次就可以了。

            while(1)
            {
               //把数据个更新函数写在这里
              GUI_Exec();

               

            }
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-2-19 14:04:25 | 显示全部楼层
可是这样了 就不能实时刷新取得的ad值曲线了啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2015-2-19 16:37:02 | 显示全部楼层

回 xiancai 的帖子

xiancai:可是这样了 就不能实时刷新取得的ad值曲线了啊 (2015-02-19 14:04) 
把数据的更新放到while里面
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-2-19 18:16:59 | 显示全部楼层
float ADC_ConvertedValueLocal;


    GRAPH_DATA_Handle hData;
    WM_HWIN hGraph;
    I16 buffer[240];
void Progbar()
{
        
       // GRAPH_Handle hGraph;
        
           int a;
            GRAPH_SCALE_Handle hScale1,hScale2;
            
        
            hGraph = GRAPH_CreateEx(0, 80, 239, 239, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_GRAPH0);
            //创建图表
            hData = GRAPH_DATA_YT_Create(GUI_DARKGREEN, 500,buffer, 340);
            //表数据
            GRAPH_AttachData(hGraph, hData);
                //添加到图表
            hScale1 = GRAPH_SCALE_Create(12, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 10);
                //刻度值
            GRAPH_AttachScale(hGraph, hScale1);
                GRAPH_SCALE_SetFactor(hScale1,0.1);//改变刻度
                hScale2 = GRAPH_SCALE_Create(12,GUI_TA_VCENTER,GRAPH_SCALE_CF_HORIZONTAL, 20);
                //刻度值
            GRAPH_AttachScale(hGraph, hScale2);
                GRAPH_SCALE_SetFactor(hScale2,0.2);
                //添加刻度到图表、
               
                GRAPH_SetGridVis(hGraph,1);//设置网格可见
               
                GRAPH_SetGridDistX(hGraph,110);
                GRAPH_SetGridDistY(hGraph,120);//网格间距/
               
                GRAPH_SetBorder(hGraph,15,15,0,0);
               
                //GRAPH_SetVSizeY(hGraph,320);//扩展网格
                //GRAPH_SetVSizeX(hGraph,320);
                //GRAPH_SetColor(hGraph,GUI_YELLOW,GRAPH_CI_BK);
               
                GRAPH_SetColor(hGraph,GUI_BLUE,GRAPH_CI_FRAME);
                GRAPH_SetColor(hGraph,GUI_RED,GRAPH_CI_GRID);
               
                //GRAPH_DATA_YT_AddValue(hData,50);//添加数据
            
            
            
            
               
               
                //GRAPH_AddGraph();

               
               

}

        
        int main(void)
        {
               
            int a;
            
            
            //GUI_HWIN hWindow1;
            LED_GPIO_Config();   
            ADC1_Init();
            SysTick_Init();
            RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
            GUI_Init();
            //WM_SetCreateFlags(WM_CF_MEMDEV);
            GUI_DispStringAt("Background of window has not been redrawn", 0, 40);   
            Progbar();
            while(1)
            {
               
                    for(a = 0; a< 24; a++)
                {
          buffer[a]=ADC_ConvertedValue>>4;
        }
                    
                               for(a = 0; a< 24; a++)
                {
                    GRAPH_DATA_YT_AddValue(hData,buffer[a]);
                }   
            GRAPH_AttachData(hGraph,hData);
              GUI_Exec();
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-2-19 18:18:30 | 显示全部楼层
这样可以刷新了 但是刷新很慢  官方的很快呢   要怎么改才能达到官方的效果呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 08:34 , Processed in 0.186604 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表