2

我被分配了一项任务,我要模拟我公司的一个硬件设备。

我将使用用非托管 C++ 编写的设备固件 不一定是所有代码,但通信协议之类的东西在设备中运行良好,我想重用该代码。

我主要用 C# .NET 4 编写软件。

我很难破解这个坚果。至少,我想输入从哪里开始这项任务。

我非常了解 C#,并且我也使用过 C++。

固件在设备的芯片上运行,该芯片具有相当复杂的操作系统。如果不显示一些代码,这有点难以解释,但我不能那样做。

无论如何,我很乐意看到对此的一些意见。另外我不确定我应该写模拟器还是模拟器

硬件具有不同的接口,包括 RS-232、GSM 数据包和蓝牙。最重要的是使 RS-232 和 GSM 工作。

硬件代码编写得相当好,分层和结构化,所以我想可以用我自己的代码替换通信 API。

TLDN:我要复制/模拟/模拟硬件设备的行为,但这似乎是一个非常大的项目,我不知道从哪里开始。非常感谢您的输入。谢谢你。

4

3 回答 3

3

我的想法基本上是分离和提取设备的逻辑层,并考虑将它们编译成您的仿真环境中的可执行文件。你需要做硬件部分和通信部分,这是更高和更低的级别。通信部分可能很简单,只需实现接口并让您的模拟器用户与模拟设备进行交互。对于硬件设备仿真部分,如果是通用的,可以考虑使用现有的项目模型,例如QEMU设备。

简而言之,更重要的工作是知道什么是公司特定的逻辑,什么是常见的设备逻辑,然后你就知道在哪里可以找到重复使用的代码。之后,将它们粘在一起。

于 2012-10-10T11:59:53.583 回答
2

这将完全是特定于项目的。基本思想是找到合适的位置在每个设备上画线。您不想实际模拟实际的 RS-232 位,然后必须测量它们以获取数据。通常,对于您必须编写的任何代码,请尽可能使用实际代码。但是任何代码,你只需要撤消,不要使用。如果可能的话,在干净的接口处画线,然后在线的“下”侧重新实现代码(或硬件)。

于 2012-10-10T11:50:30.780 回答
0

固件在设备的芯片上运行,该芯片具有相当复杂的操作系统。如果不显示一些代码,这有点难以解释,但我不能那样做。

你知道设备是如何工作的。您知道给定输入的输出是什么。您需要确定需要复制哪些功能。

硬件具有不同的接口,包括 RS-232、GSM 数据包和蓝牙。最重要的是使 RS-232 和 GSM 工作。

您首先创建一个可以通过 RS-232 和 GSM 协议进行通信的应用程序。完成此操作后,您可以使用已经编写的库函数来获得预期的输出。

无论如何,我很乐意看到对此的一些意见。另外我不确定我应该编写模拟器还是模拟器。

你需要确定你的老板到底想要什么。我们无法根据您为我们概述的模糊要求帮助您做出此决定。

于 2012-10-10T12:01:01.507 回答