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[];
int i = ;
for (i = ; i < GUI_COUNTOF(ay); i++)
{
if (i > && i % == ) printf("\r\n");
ay[i] = rand() % ;
printf("%3d ", ay[i]);
} printf("\r\nTest GUI_DrawGraph function. Graph length = %d", GUI_COUNTOF(ay));
GUI_DrawGraph(ay, GUI_COUNTOF(ay), , ); while();
}
5、测试效果

技术博客,转载请注明。
emWin模拟器Visual Studio开发时无法printf打印的问题的更多相关文章
- Visual Studio 开发(二):VS 2017配置FFmpeg开发环境
在上篇文章Visual Studio 开发(一):安装配置Visual Studio Code 中,我们讲了一下如何配置VS CODE,来编写和调试C的代码.如果你已经使用VS Code回顾和复习好C ...
- 使用Visual Studio开发跨平台的iOS应用程序
[原文发表地址]Developing cross-platform iOS application using Visual Studio [原文发表时间]2015/6/4 C ++是一种流行的高级编 ...
- SharePoint 2013 工作流之Visual Studio开发示例篇
SharePoint 2013引用了WF4.0 Foundation,支持使用Designer和Visio进行设计,但是功能受限,而Visual Studio可以开发功能更加丰富的工作流,下面我们简单 ...
- 禁止Visual Studio启动时自动连接TFS服务器
在默认设置情况下,Visual Studio启动时,会自动连接上次打开过的TFS服务器.这种设计能够提高开发人员的工作效率,避免每次手动连接TFS服务器. 但是在某些情景中,也会给人造成不必要的麻烦, ...
- 微软为Visual Studio开发助手拓展C++支持
近日,微软宣布了一项 Visual Studio“开发助手”(Developer Assistant)插件的重大更新,其现已支持“基于 C++ 的情境感知 web 解决方案”.开发助手能够嵌入 Vis ...
- visual studio开发工具的C#主流控件属性一览表
visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理 1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程 ...
- 使用Visual Studio开发Python
Python优秀的集成开发环境有PyCharm,Visual Studio Code等,当然你仍然可以使用Visual Studio进行开发.如果你熟悉Visual Studio,使用Visual S ...
- Visual Studio开发首选!DevExtreme v19.1.6全新来袭
DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动.Web开发框架,可以直接在Visual Studio集成开发环境,构建 ...
- 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署
1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...
随机推荐
- windows下的tfjs-node安装异常总结
大约有半年没有写博客了,奔波于上海这座魔都之中.险些忘了自己是个有梦想的全栈工程师 书接上回,由于个人非常厌恶python的语法,半年前发现了tensorflow.js这个宝贝(下简称tfjs),喜出 ...
- struts2学习笔记之十四:使用注解配置Action(不是和spring集成使用)
Struts2支持使用注解配置Action,减少配置文件的配置 Struts2如果要支持注解配置Action,需要插件的支持,导入插件struts2-convention-plugin-2.1.8.1 ...
- 无人工地,原来是靠AI这样运行的
随着全世界逐渐进入老龄化社会,适龄工作人口将急剧减少,必然导致用工成本增加,施工方降低人工成本.提升施工效率和质量的需求会越来越强烈,数字化施工技术应用前景广阔.在过去的十年中,无人机迎来了自己发展的 ...
- ssm框架下怎么批量删除数据?
ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数 ...
- 将js进行到底:node学习7
Node.js之Websocket技术 我第一次听说websocket之时,HTML5标准尚未公布,当时只有少数前瞻性浏览器携带了这个API. 我对websocket最大的印象是,他可以解决我对&qu ...
- iOS多线程开发之GCD(基础篇)
总纲: GCD基本概念 GCD如何实现 GCD如何使用 队列和任务组合 一.GCD基本概念 GCD 全称Grand Central Dispatch(大中枢队列调度),是一套低层API,提供了⼀种新的 ...
- Hive Functions
函数的分类 内置函数 操作符 复杂对象 UDF函数 数学函数 类型转换函数 日期函数 条件函数 UDTF函数 常用UDTF函数 explode posexplode inline stack json ...
- 为什么 generator 忽略第一次 next 调用的参数值呢?
首先要理解几个基本概念. 执行生成器不会执行生成器函数体的代码,只是获得一个遍历器 一旦调用 next,函数体就开始执行,一旦遇到 yield 就返回执行结果,暂停执行 第二次 next 的参数会作为 ...
- 为何银行愿为收购supercell做无权追索融资?
无追索权融资又称纯粹的项目融资,是指贷款人对项目主办人没有任何追索权的项目融资.简单来说,这是一种项目失败,也无法追尝的承诺,一般发生在石油.天然气.煤炭.铜.铝等矿产资源开发等相对较为保值的项目融资 ...
- C++走向远洋——(项目二、存储班长信息的学生类、派生)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...