コンテンツにスキップ

サンプルプログラム > デジタル入出力 > Dio >

C#

開発環境の設定

  1. Ydx.cs をプロジェクトフォルダにコピーします。

  2. Ydx.cs をプロジェクトに追加します。

  3. ソースファイルにusing ディレクティブを使ってYdxCsを宣言します。

using YdxCs;

コントロール

変数

private int id;

実行結果の表示

private void ResultShow(string title, int resultCode)
{
    string resultString;
    Ydx.CnvResultToString(resultCode, out resultString);
    switch (resultCode)
    {
        case 0:
        case Ydx.YDX_RESULT_AI_EXCEED_DATA_NUM:
        case Ydx.YDX_RESULT_AI_EXCEED_BUF_SIZ:
            MessageBox.Show(resultString, title, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            break;
        default:
            MessageBox.Show(resultString, title, MessageBoxButtons.OK, MessageBoxIcon.Hand);
            break;
    }
}

フォームロード

private void Form1_Load(object sender, EventArgs e)
{
    // ユニット識別スイッチ
    unitSwitchComboBox.ResetText();
    unitSwitchComboBox.Items.AddRange(new string[] {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"});
    unitSwitchComboBox.SelectedIndex = 0;

    // 型名
    modelNameComboBox.ResetText();
    modelNameComboBox.Items.AddRange(new string[] { "AIO-64/4/1B-USC", "AIO-60/4/1B-USC", "AIO-04/4/1B-USC" });
    modelNameComboBox.SelectedIndex = 0;
}

オープン

private void openButton_Click(object sender, EventArgs e)
{
    int result = Ydx.Open(unitSwitchComboBox.SelectedIndex, modelNameComboBox.Text, 0, out id);
    if (result != 0)
        ResultShow("YdxOpen", result);
    else
    {
        unitSwitchComboBox.Enabled = false;
        modelNameComboBox.Enabled = false;
        ResultShow("オープン", result);
    }
}

デジタル入力

private void inputButton_Click(object sender, EventArgs e)
{
    inputDataTextBox.ResetText();
    Application.DoEvents();
    const int DI_CHANNEL_NUM = 4;
    int[] data = new int[DI_CHANNEL_NUM];
    int result = Ydx.DiInputBit(id, 0, DI_CHANNEL_NUM, 0, data);
    if (result != 0)
    {
        ResultShow("YdxDiInputBit", result);
        return;
    }

    string txt = "";
    for (int channel = 0; channel < DI_CHANNEL_NUM; channel++)
    {
        txt += "CH" + channel.ToString() + " : " + data[channel].ToString() + Environment.NewLine;
    }

    inputDataTextBox.Text = txt;
}

デジタル出力

private void outputButton_Click(object sender, EventArgs e)
{
    int[] data = new int[1];
    double doubleData;
    if (!double.TryParse(outputDataTextBox.Text,System.Globalization.NumberStyles.Integer, null, out doubleData))
    {
        MessageBox.Show("データが不正です", "", MessageBoxButtons.OK, MessageBoxIcon.Hand);
        return;
    }

    data[0] = (int)doubleData;
    int result = Ydx.DoOutputBit(id, 0, 1, data);
    ResultShow("デジタル出力", result);
}

クローズ

private void closeButton_Click(object sender, EventArgs e)
{
   unitSwitchComboBox.Enabled = true;
    modelNameComboBox.Enabled = true;
    int result = Ydx.Close(id);
    if (result != 0)
        ResultShow("YdxClose", result);
    else
        ResultShow("クローズ", result);
}

フォームクローズ

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    int result = Ydx.Close(id);
    if ((result != 0) && (result != Ydx.YDX_RESULT_NOT_OPEN))
    {
        ResultShow("YdxClose", result);
    }
}