首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建多设备可控软件

创建多设备可控软件
EN

Stack Overflow用户
提问于 2014-08-16 22:08:30
回答 1查看 1.1K关注 0票数 0

我不知道如何命名我的问题,但我脑海中的第一件事是这个“多设备软件”的事情。

我是一名电子工程专业的学生,对仪器控制感兴趣。为此目的使用C#,并具有C#表单应用程序的基本知识。此外,IVI基金会还开发了一个名为"SCPI命令“的standart命令集。这是一种简单的仪器控制方法,不能为功能齐全的仪表控制系统编写SCPI代码。在这里,“司机”扮演了角色。大多数制造商在你购买他们的产品时提供设备驱动程序。使用此驱动程序文件,您可以创建功能齐全、响应能力强的软件。此外,您还可以开发您自己的驱动程序,以满足您自己的需要。但是,尽管SCPI是各种仪器的标准,但一些多命令开始给您带来问题。例如,您为A品牌编写代码,但该代码不适用于B品牌的同一台设备,该设备与A品牌的设备完全相同。

主要目标是为多个同轴电缆建立电缆损耗计算软件。您必须使用频谱分析器和RF信号发生器来执行此任务。我们有几个频谱分析仪和大量的信号发生器正在使用。

用一个程序我们必须控制我们所有的设备。这是我的问题。

我想创建一个响应软件,为我们所有的频谱分析仪和信号发生器工作。我怎么能这么做?首先,我认为我可以为每个设备创建一个驱动程序,主程序通过使用提示或者类似的方式来选择正确的驱动程序。但我不知道如何做到这一点。其次,我可以为每个设备组合编写软件的主要部分,并在运行时将该部分连同一个.txt文件包含到主软件中。我知道这是一个菜鸟的方法,但我想我可以做到这一点,没有麻烦。我对第一种方法一无所知。第三,我可以为程序中的每个设备编写所有的命令,并使用if条件在两种情况下进行选择。或者开关箱的结构。这是唯一的办法,如果我不能这样做与其他选择。

在此之前,您可能还不明白我的意思,因为我无法准确地描述问题,这是因为我是一个业余软件开发人员。

假设你有信号发生器。你要选择频率10兆赫。这是Agilent 33120 A。要用计算机实现这一点,您需要将此命令发送到设备。

代码语言:javascript
运行
复制
SOUR:FREQ 10 MHZ

在此之后,设备将频率设置为10 MHZ。让我们假设您有另一个制造商的信号发生器,为了实现完全相同的事情,这个设备,你可能必须发送这个;

代码语言:javascript
运行
复制
SENS:FREQ 10 MHZ

这两者执行相同的事情,但酸和感受器部分取决于设备。

为了使用C#创建程序,我们使用API与设备进行通信。如果使用GPIB协议,API的名称是NI488.2。如果您使用RS232,您可以使用VISA等。顺便说一下,我们的协议是GPIB。使用GPIB,我们使用包装器轻松地将SCPI命令集成到C#环境中。例如,在将GPIB库添加到引用之后,可以使用它通过C#窗体接口发送命令;

代码语言:javascript
运行
复制
ibwrt("SOUR:FREQ 10 MHZ", "SOUR:FREQ 10 MHZ".Length);

现在我遇到了我最大的问题。如何使代码的这一部分创建一个成功的响应程序?例如,操作员使用Agilent信号发生器和Rohde&Schwarz频谱分析仪。另一家运营商正在使用IFR信号发生器和HP频谱分析仪。但他们使用的软件是一样的。IFR信号发生器可以使用"SENS:FREQ“进行操作。

在操作开始之前,一个提示可以弹出并请求设备的驱动程序。我不知道。我首先想到了这些。但如果你是我,你是怎么做到的?如果你选择了一个选项,请告诉我怎么做。我被困在这里了。现在程序有大约2000行代码。"ibwrt“不是程序的唯一部分,也不是”SENS:FREQ“.还有用于其他任务的"SENS:BAND:RES“、"INIT:CONT”等。这不重要。

我希望你能理解我的问题,因为我知道我说的不对。

如果你对这个问题有任何疑问,可以发表意见。

谢谢。

TL;博士

我需要通过C#窗体接口为每个设备发送命令。我的意思是,设备有其特殊的命令,我需要创建一个软件,它可以通过用户选择来控制每个设备,而不是为每个设备创建一个软件。

EN

回答 1

Stack Overflow用户

发布于 2014-08-17 08:12:46

用您需要的一切实现接口IDevice (如SelectFrequency(...)),并实现类Abrand : IDeviceBbrand.诸若此类。这是唯一的办法。然后您可以使用工厂获得当前的设备,比如var myDevice = DeviceFactory.GetCurrent(); --当然,您必须自己实现它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25344449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档