修改C#代码以使用和不使用设备驱动程序

时间:2011-10-17 18:21:08

标签: c# .net driver

我目前正在使用一个程序,该程序可以与我们的客户可能会或可能不会购买的外围设备进行交互。这个装置有点痛苦;我们购买它的公司希望我们的客户使用公司自己的可执行文件来安装设备驱动程序。

但是,由于并非所有客户都会购买该设备,因此如果他们不必总是运行第二个可执行文件来使我们的软件正常工作,那将非常有用。为了实现这一点,我需要修改我们的程序,无论是否有驱动程序都可以使用。

ActiveX控件用于与设备连接。这些需要使用Windows窗体设计器放入GUI中;手动实例化控件使其容易崩溃,足够刺激。

是否有任何“最佳”方式可以设置程序来检测丢失的驱动程序并避免崩溃?我想到的唯一想法是:

  1. 手动实例化控件并使用try / catch语句来检测和处理缺少的驱动程序,但我认为此解决方案不可行。
  2. 为可能使用该设备的每个表单创建2个版本。这是一个糟糕的主意,因为在对表单的一个版本进行更改时需要仔细复制。

3 个答案:

答案 0 :(得分:1)

通常,在这种情况下,最好的选择是使用Facade或Adapter模式,通常与Factory一起使用。

为支持设备不存在的设备创建一个接口,然后实现该接口的两个版本,一个实现功能,另一个报告不存在。

然后,每个使用它的UI都会调用工厂来创建实例对象(根据需要选择上面两个选项之一)并通过界面查询对象以显示控件或表面功能。

其余的UI元素将保持不变,不需要在两个地方维护。

答案 1 :(得分:0)

我的方法是在启动时确定驱动程序或否(如果以后无法添加设备,则安装将是一个选项)。

然后设置一个“全局变量”(我将针对此类应用程序值的Singleton),指出驱动程序是否存在。然后,您可以根据此值是true还是false来分叉代码。

我不明白为什么用户界面与存在的驱动程序相关联。您应该能够在堆栈中更深层次地绘制表示层的数据,并避免“当驱动程序不存在时UI会爆炸”。您可能仍需要一些特定于“驱动程序数据存在”的逻辑,但这很容易处理,而不必担心走在雷区。

答案 2 :(得分:0)

System.Management.SelectQuery("Win32_SystemDriver");