可能是我的标题措辞可能会产生误导,但这正是我想要实现的目标。
我计划开发一种多功能一体机(类似于全自动洗衣机......但不仅如此)......它将有许多需要由一个控制的移动和非移动部件面板上的芯片/处理器......
我知道C#并且可以编写负责用户输入的模块,并通过向其发出命令来控制机器。但是在机器方面该怎么办......
说,假设我希望机器将Drum B旋转30秒......我的C#代码将
Machine.Rotate(drumB, Direction.Clockwise, 30);
但是我怎样才能进入机器的电机,这样它可以旋转30秒......
我应该知道“嵌入式系统”吗?还是我还需要学习其他东西。
你能帮我解决一下......如果可能的话,可以通过书籍/网上资料开始学习。
由于
答案 0 :(得分:3)
您应该开始查看.Net Micro Framework的业余爱好网站。
他们会给你所需的所有套件,包括套件。我正在使用来自Tinyclr.com
的FEZ Domino积极开发一些硬件我发现TinyClr.com非常好,SparkFun.com也有很多东西。
答案 1 :(得分:0)
一种非常直接的方法是使用.NET Micro framework。但至少嵌入式系统的基本知识并不是那么糟糕。
答案 2 :(得分:0)
This不是.NET,但也许您可以搜索并从中获取一些想法。
顺便说一句,在我看来,从第一个“直觉思维”来看,你将发布到设备的大多数命令都是异步的,如下所示:Motor.StartTurning(90, 0.1, CallBackFunction);
答案 3 :(得分:0)
首先,恕我直言,你必须学习这种项目的嵌入式系统,尽管你可以使用技术。嵌入式系统中的思考和编程与台式计算机的思考和编程略有不同。
最重要的区别是硬件资源(例如,大多数情况下,您将拥有有限的磁盘和内存容量,而处理器则相同)。其他重要的区别是软件容错(如果驾驶员卡在洗衣机上的车内,可能会有点烦人,因为软件崩溃......)。还有其他重要的一点你必须寻找(例如,软件 - 硬件协同设计),但我认为这两个非常重要,我认为你必须从项目的开始就注意它们。
作为对嵌入式系统的介绍,我建议您使用“Programming Embedded Systems: With C and GNU Development Tools”形成Michael Barr(更多面向软件)和“Designing Embedded Hardware”作者John Catsoulis(面向硬件)。当然,您始终可以将Wikipedia article作为起点。
如果您真的想使用.NET,您有两种选择:
另一种选择是尝试其他硬件,但在这种情况下,您必须使用制造商为该硬件提供的库/ API /框架。
要访问硬件,必须使用可用的硬件输入/输出。例如,如果你想与a,比如步进电机通信,你必须检查你如何与它通信。如果唯一的方法是发送PWM信号,您必须找到一种方法。两个假设:
对于这两个概述,您可以使用您提供的方法创建一个高级框架,该方法抽象出与硬件的所有通信。此外,@丹尼尔建议回调是一个非常好的,因为它使您的框架更灵活(例如,您可以在停止之后或启动之前为每个电机的回调定义不同的行为。)
最后一点,您必须评估您的项目真正需要什么。如果您的项目必须便宜,可能您会使用小型硬件,但在这种情况下,您可能会或可能不会使用.NET Micro Framework;如果你可以花更多的钱,也许你可以使用运行Windows的更昂贵的硬件,在这种情况下你甚至可以使用标准的.NET Framework。
很抱歉答案很重要,但我希望它可以帮助您做出选择!
答案 4 :(得分:0)
系统无需是嵌入式系统,您可以使用配备合适的数字和模拟I / O硬件(examples)的PC控制机器并获取传感器数据。该方法的问题在于,实时性能可能是通用操作系统(GPOS)(如Windows或Linux)的问题。您可以为PC配备实时操作系统(RTOS),但是C#不太可能是一个选项,并且您失去了PC开发的许多好处,例如熟悉的开发和调试环境。物理尺寸也可能是一个问题,虽然可以使用非常小的工业PC架构板,例如PC / 104,但那实际上是一个嵌入式系统,恰好可以分享熟悉的桌面硬件架构。
可以在基于非x86硬件的真正嵌入式系统上使用.NET Micro,但同样不能提供硬实时性能。
控制电机并不总是像打开或关闭一样简单,您可能还需要使用闭环反馈和PID控制器进行速度或位置控制。