在您对问题的评论澄清中提到的设备将永远不会使用Windows PC,因此在这种情况下,低级Windows编程不是必需的。事实上,我会说这是不可取的。原型制作是关于速度的。它关乎您能够多快地组装出一些东西来展示给潜在投资者、高层管理人员或其他决策者。在项目需求足够明确之前,您不希望花费额外的时间进行低级C和Win32 API开发,直到您知道这是最终项目交付成果的绝对要求(也许是服务器/PC监控工具?)。在那之前,您需要快速开发。幸运的是,该行业有用于快速原型制作和硬件开发的工具,就像您所描述的那样。
我在嵌入式开发中的原型制作偏好
至于我作为开发人员的意见,我喜欢.NET微框架(.NETMF),仅仅因为我已经是Microsoft .Net开发人员,并且可以转移很多我现有的技能。因此,我使用Visual C# Express 2010(免费,正如您所要求的)在FEZ微控制器上使用C#进行原型制作。它快速、简单,您可以在几分钟内就开始着手核心项目。
如果您作为开发人员的经验不同,您可以寻找使用BASIC、Java或其他语言编程的微控制器,通过重复使用您的核心技能来帮助加快开发速度。
回答您的问题赏金评论
令人惊讶的是,嵌入式软件的相当大部分可以在桌面计算机上开发,而不是在深度嵌入式目标上开发。如果做得好,这种避免“目标系统瓶颈”的方法可能会将生产力提高一个数量级。然而,要在桌面上开发嵌入式软件,就需要模拟UI组件,例如显示器(包括分段和越来越多的图形显示器)、LED、旋钮和按钮。我正在寻找用纯Win32 API和C编写的这些UI组件,以便轻松地与嵌入式代码集成,并在桌面Windows上进行开发和测试。
我专业从事嵌入式开发工作超过4年,同时还有多年的兼职经验。虽然你上面说的有一定道理,但这并不能为你节省时间或金钱,这也是为什么大家对这种策略感到困惑的原因。我们花了多年时间为这家公司的硬件设备开发Windows模拟器,理论上可以节省原型制作的时间。但实际上,我们花费了更多的时间来模拟体验,比起直接从UI设计规格草图转向真正的开发,我们要花费更多的时间和精力。模拟器总是落后于硬件开发,并且通常需要6个月甚至更长时间才能支持最新的功能。这只是为了很少的价值而做了很多额外的工作。
你将会花费更多的时间来开发不可重用的win32平台代码和硬件仿真组件,而不是为核心项目本身编写代码。这只对提供此仿真器作为“增值”工具给潜在的第三方开发人员的硬件供应商有意义,但对于原型设计新硬件来说并没有意义。
现代开发环境如Visual C# Express 2010与FEZ微控制器可以编译、推送项目输出到微控制器,然后开始调试,速度比你在C语言仿真LCD或LED或开关的低级Windows应用程序中编译和运行快得多,甚至更快。因此,你的评论“将生产力提高一个数量级”在现代工具下已经不再适用(或许在过去的10年左右可能适用)。
如果你真的只是想在PC上直观地模拟嵌入式硬件,那么可以使用类似Adobe Flash的东西来模拟用户界面。但当你最终原型设备不会运行Windows时(也许会,但你没有说),不要通过为Windows编码来复制代码。使用当前最快、最可靠的原型设计工具,而那显然不是低级C语言和Win32 API!
也许可以考虑使用Electronics StackExchange?
因为这是一个面向开发的网站,讨论特定嵌入式硬件的优点并不是很相关。如果您决定重新聚焦于使用微控制器电子原型制作(如
Arduino、
FEZ、
Propeller、
Basic Stamp、
Pololu等),您可以在
电子堆栈交换上寻求电子硬件建议。我会说,大多数这些平台都是为了方便像您所概述的LCD、LED、按钮和接口的原型制作而设计的。您通常可以在几分钟内组装几个预先构建的模块,并准备开始编写项目代码。这里可以节省大量时间。