• emWin模拟器Visual Studio开发时无法printf打印的问题


    1、emWin模拟器

    为了方便用户学习evWin框架,Segger设计了一个PC仿真的工具,可以测试绝大部分GUI的功能,除了方便使用者学习之外,还可以加速项目开发进度。毕竟在PC上用Visual Studio开发的效率比单片机开发高出很多。

    在使用vs2017模拟开发emWin时,发现官方带的demo无法实施输出console控制台信息,即无法printf消息。

    2、常见解决方法

    无法在emWin上使用打印消息,当然有很多解决方法,比如:

    1)在GUI上借助emWin强大的功能,创建一个文本框显示需要打印的消息,曲线救国,好处在单片机上也能实现,不用任何代码特殊修改,缺点是资源受限且使用繁琐。

    2)按照PC开发的经验,启动log组件,nuget安装即可,如果是规模稍大的项目,这是首选。如果是为了学习嵌入式GUI而言,或者就是一个几个窗体的小工程,那就没有必要了,毕竟除了麻烦,还有加了之后嵌入式系统装不进去最终还得删除。

    3)使用printf,对学习嵌入式开发者来说再熟悉不过了。开销小,基本上不用修改软件代码,模拟器和芯片都可以使用,在PC模拟器上从console输出,在嵌入式芯片上从串口或Jlink RTT输出。或者#define PRINTF printf,当release时候把宏设置为空,直接减少了代码量。

    3、使用printf

    vs设置路径:

    Project | Properties->Configuration Properties->Build Events->Post-Build Event

    在Command Line新加一行命令:editbin /SUBSYSTEM:CONSOLE $(TargetPath)

    其中,$(TargetPath)  就是生成好的exe程序。

    当然为了使用printf,必须添加printf的标准库:#include <stdio.h>

    下图示vs2017添加方法:

    4、测试代码

    #include "GUI.h"
    #include <stdio.h>
    //
    // Recommended memory to run the sample with adequate performance
    //
    #define RECOMMENDED_MEMORY (1024L * 5)
    
    /*********************************************************************
    *
    *       MainTask
    */
    void MainTask(void) {
        GUI_Init();
        //
        // Check if recommended memory for the sample is available
        //
        if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) {
            GUI_ErrorOut("Not enough memory available.");
            return;
        }
    
        I16 ay[200];
        int i = 0;
        for (i = 0; i < GUI_COUNTOF(ay); i++)
        {
            if (i > 0 && i % 10 == 0) printf("
    ");
            ay[i] = rand() % 50;
            printf("%3d ", ay[i]);
        }
    
        printf("
    Test GUI_DrawGraph function. Graph length = %d",  GUI_COUNTOF(ay));
        GUI_DrawGraph(ay, GUI_COUNTOF(ay), 0, 0);
    
      while(1);
    }

    5、测试效果

    技术博客,转载请注明。

    https://www.cnblogs.com/pingwen/p/12545807.html

  • 相关阅读:
    Spread for Windows Forms快速入门(2)设置Spread表单
    Spread for Windows Forms快速入门(3)行列操作
    Html5 Canvas 扫雷 (IE9测试通过)
    Web页面中5种超酷的Hover效果
    文字处理控件功能比较:TX Text Control vs. RichTextBox
    Spread for Windows Forms快速入门(7)单元格的交互操作
    Spread for Windows Forms快速入门(6)定义单元格的外观
    Html5 Rocks 镜像
    如何在ASP.NET中生成HTML5离线Web应用
    Spread for Windows Forms快速入门(5)常用的单元格类型(下)
  • 原文地址:https://www.cnblogs.com/pingwen/p/12545807.html
Copyright © 2020-2023  润新知