我正在寻找用于原型设计(虚拟原型),仿真和桌面窗口中深度嵌入式C代码的工具和技术,包括建立由按钮,LED和LCD显示器组成的建筑物嵌入式前面板(均分段和图形)。

我专门对可能的低级方法感兴趣,使用纯C代码和原始Win32 API而不是MFC,.NET / C#,VxWidgets或Qt。我还想使用免费的开发工具,例如Visual C ++ Express与平台SDK和Reseedit用于编辑资源。

我正在寻找代码示例,以通过高效的像素级接口,多段液晶显示器和所有者绘制的按钮呈现图形LCD(从单色到24位颜色),这些按钮响应“抑制”和“释放”“事件。

有帮助吗?

解决方案

我很惊讶,我的原始问题引发了这么多误解和不利评论。在一台机器(例如,PC)上开发深度嵌入式C代码的策略并在另一台(嵌入的微控制器)上运行它(嵌入的微控制器)被称为“双目标”并且非常常见。例如,PC上的开发和测试深度嵌入式代码是詹姆斯牢金的最近“测试驱动开发”的基石。

避免目标硬件瓶颈,双定位

请注意,双定位并不意味着嵌入式设备与PC有任何关系。这两者都没有意味着模拟必须与嵌入的目标CPU进行周期。

双定位简单意味着从第一天开始,您的嵌入式代码(通常为C)旨在在至少两个平台上运行:最终目标硬件和PC。所有你真正需要的是两个C编译器:一个用于PC,另一个用于嵌入式设备。

然而,双定位策略确实需要一种设计嵌入式软件的特定方式,使得任何目标硬件依赖性都通过经常称为板支持包(BSP)的明确定义的接口处理。此接口具有至少两种实现:一个用于实际目标,一个用于PC,例如运行Windows。使用此类界面到位,嵌入式代码的大部分可以完全不知道它链接的BSP实现,因此它可以在PC上快速开发,但也可以在目标硬件上运行而没有任何更改

虽然一些嵌入的程序员可以将双重定位视为自我造成的负担,但更有经验的开发人员通常同意对软件和硬件之间的边界进行关注实际上是有益的,因为它会导致更模块化,更便携的更具便携式可维护的软件具有更长的使用寿命。双重目标的投资也是在巨大加速的编译调试周期中立即回报,这在强大的PC上与强大的PC相比更快,更高效,较慢,追溯到嵌入式嵌入式目标,在运行代码中的可见性有限。

前面板win32 gui工具包

当为具有非普通用户界面的设备开发嵌入式代码时,一个经常运行到将嵌入式前面板的问题作为PC上的GUI元素表示。问题是如此常见,我真的很惊讶于此,没有人可以推荐现有的库或开源项目,这将为基本元素(如LCD,按钮和LED)提供简单的C-Only接口。这实际上并不复杂,但似乎每个嵌入的开发人员都必须在又一遍地重新发明这款轮子。

所以,为了帮助嵌入式开发人员对Windows上的原型嵌入式设备感兴趣,我创建了一个“前面板Win32 Gui Toolkit”,并在GPL开源许可证下在线发布了它(请参阅 http://www.state-machine.com/win32 )。此工具包仅依赖于C中的原始Win32 API,当前提供以下元素:

  1. DOT矩阵显示,用于高效,像素可寻址显示,如图形LCD,OLED等,最多24位颜色

  2. 分段显示器的段显示,如段LCD,以及带有通用的段LED,用于段的常规定制位图。

  3. 具有自定义“凹陷”和“释放”位图的所有者绘制的按钮,并且能够在抑制时和释放时生成单独的事件。

  4. 工具包附带一个例子和app note(请参阅 http://www.state-machine .com / win32 / an_win32-gui.pdf ),如何处理来自所有者绘制的按钮,常规按钮,键盘和鼠标的输入。您还可以在 http://www.state-machine.com/win32/front_panel.html < / a>。

    关于“前面板Win32 GUI工具包”的大小和复杂性,上述GUI元素的实现仅需约250行C.具有所有输入来源的示例和大量的评论量为约300行C. The Toolkit已通过免费的Visual C ++ Express 2010(Chatext Edition Platform SDK)和免费Resedit资源编辑器进行了测试。

    享受!

其他提示

你提到的家用电器在你的评论中澄清问题永远不会使用Windows PC,因此低级Windows编程不是这种情况下的要求。事实上,我会说它不受欢迎。原型为速度。这是关于您可以将某种东西放在一起的速度,以显示潜在的投资者或上层管理员或其他一些决策者。

您不想将额外的时间与低级别的C和Win32 API一起度过,直到项目要求刷新到足以让您知道最终项目可交付成果的绝对要求(也许是服务器/ PC监控工具?)。直到那时你想要发展速度。幸运的是,该行业拥有快速原型制作和开发硬件的工具,如您描述。

我对具有嵌入式开发的原型设计

作为我的看法作为开发人员,我喜欢.NET MicroFramework(.NETMF)只是因为我已经是Microsoft .NET开发人员,可以传输许多我现有的技能。因此,我使用C#在Visual C#Express 2010下使用C#的FEZ微控制器(根据需要免费)原型。它的快速,简单,您正在几分钟内在项目的核心上工作。

如果您作为开发人员的经验是不同的,您可以查找使用基本,Java或某些其他语言编程的微控制器来帮助通过重用核心技能集来帮助开发速度。

解决您的问题赏金评论

可以开发出嵌入式软件的大量大部分 在桌面计算机上,而不是深深嵌入的目标。这 避免“目标系统瓶颈”可能会改善 如果完成,则生产率按数量级。但是, 在桌面上开发嵌入式软件,需要模拟UI 组件(例如显示)(两种分段且越来越多地 图形),LED,旋钮和按钮。我正在寻找这样的ui 在C中用普通Win32 API编写的组件,以便于集成 嵌入式代码要在桌面窗口上开发和测试。

我在4年内全职嵌入了全职的开发,以及周围的多年来,兼职。虽然你上面的说法有点真实,但它不会挽救你的时间或金钱,这就是为什么每个人都对这一战略的动机混淆。我们花了多年的时间试图为这家公司的硬件设备推出一个Windows仿真器,从理论上可以节省原型化的时间。它总是痛苦,我们花了更多的工作时间试图模仿经验,而不是我们刚刚从速写的UI绘图规范直接到真实的发展。仿真器落后于硬件开发,并且通常不会支持最新功能,直到释放硬件后6个月或更长时间。很少有价值是很多额外的工作。

您将花费更多时间开发不可重用的Win32平台代码和硬件仿真组件,而不是实际编写核心项目本身的代码。这对于将此模拟器提供作为“值为”潜在的第三方开发人员来说,这只概述了将此模拟器提供的硬件供应商进行了意义,但它对原型设计新硬件设计并没有意义。

现代开发环境如Visual C#Express 2010与FEZ微控制器可以编译,将项目输出推向微控制器,然后开始调试,就像快速或更快一样,您可以编译并运行低在C模拟LCD或LED或交换机等中的级别Windows应用程序等......所以您的评论,“按数量级提高生产率”,简直与现代工具不再是真的。 (可能已经在过去10年左右之前。)

如果您真的,真的只想在PC上直观地模拟嵌入式硬件,使用像Adobe Flash这样的东西来模拟UI。但是当您是原型的最终设备时,不要通过编码Windows的Windows不运行Windows(也许是,但您没有这么说)来重复代码。使用今天最快的最可靠的原型工具,这是毫不概括地不是低级C和Win32 API!

也许使用STACKEXCHANGE ELECTRONICS?

因为这是一个面向发展的网站,讨论特定嵌入式硬件的优点并不是真正相关。如果您决定使用微控制器电子设备进行原型( arduino fez propeller 基本标记 pololu

>电子设备的Stackexchange 。我会说大多数平台都旨在促进LCD,LED,按钮和界面的原型设计,因为您概述。您通常可以在几分钟内组装一些预先构建的模块,并准备好开始编码项目。巨大的节省可以在这里。

你要求太多,你需要看看@ proteus。 http://www.labcenter.com/products/vsm_overview.cfm

作为mahmoud表示,您可以在 proteus professional 。它是用于原型设计,模拟和编码的流行软件之一,您可以免费下载Proteus Professional ,然后检查他们的手册。

祝你好运

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top