1

我正在开发一个测试程序,用于检查 Okuma 机器上的 Barfeeder 接口。我需要检查某些输入和输出的状态。我对 GetBitIO 方法有点困惑。我想检查例如 iIN24 输入在 0104 位 7 的状态。

代码:

 private CIO IO;

 IO = new CIO();

 private void button1_Click(object sender, EventArgs e)
 {
 string IOin24 = IO.GetBitIO(Input, 0104, 7).ToString();
 }

上面的行测试“输入”,错误是名称在当前上下文中不存在。

 private CIO IO;

 IO = new CIO();

 private void button1_Click(object sender, EventArgs e)
 {
 string IOin24 = IO.GetBitIO(104, 7, 0).ToString();
 }

尝试对这一行稍作改动。

 string IOin24 = IO.GetBitIO(0, 7, 104).ToString();

上面的行从 api 获取整个命令的错误。错误表明它无法从 int 转换为 Okuma.CLDATAPI.Enumerations.BitsEnum。这条线类似于我如何毫无问题地为 VB.Net 获取数据。

之前用于在地址 0 位 2 处获取 NC 复位按钮 (ipNCRT) 的 VB 代码。

 Private Sub RadioButton4_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles RadioButton4.Checked
 TextBox2.Text = IO.GetBitIO(0, 2, 0).ToString
 End Sub

阅读车床 API 的帮助我得到以下规则。

参数:

[C#] public OnOffStateEnum GetBitIO(IOTypeEnum enIO, int intAddressIndex, BitsEnum enBits);

enIO I/O 变量类型。参数值来自 Okuma.CLDATAPI.Enumerations.IOTypeEnum 枚举。

ntAddressIndex逻辑 I/O 地址索引

enBits 位号。参数值来自 Okuma.CLDATAPI.Enumerations.BitsEnum 枚举。

4

1 回答 1

2

基本问题是您在Option Strict关闭的情况下编译了 VB 程序,它允许您将原始整数传递给一个期望采用Enum.

我没有机器制造商提供的针对您的特定库的手册,但总体思路如下:

string IOin24 = IO.GetBitIO(IOTypeEnum.Input, 0104, BitsEnum.Bit4).ToString();

我刚刚编好了枚举成员的名称,但是如果您通读随软件获得的文档(或者甚至只是输入IOTypeEnum.并查看 IntelliSense 是否为您提供了一个列表),以找出相应的强类型成员是什么对于您尝试传递的整数。

您还需要确保您已包含有问题的程序集 - 即:

using Okuma.CLDATAPI.Enumerations;

应该出现在类文件的顶部某处。

于 2013-09-16T17:07:22.830 回答