複数コントローラーと接続するサンプルプログラム

.NETアプリケーションを使用して、コントローラー1とコントローラー2のそれぞれに接続するサンプルプログラムを示します。

キーポイント


使用できるプロパティーとメソッドについては、以下を参照してください。

RCAPINetリファレンス

コントローラー接続の設定

複数コントローラーと同時に接続する場合、SpelクラスのConnectメソッドを使用して接続先を指定します。

m_spel.Connect(1)  

メソッド内の引数は、接続番号を示します。この接続番号は以下のダイアログ (Epson RC+ 8.0メニュー-[セットアップ]-[PCとコントローラ接続])のNo.に該当します。引数に-1を指定した場合、最近使用した接続番号が反映されます。

プロジェクトの設定

複数コントローラーと同時に接続する場合、SpelクラスのProjectプロパティーを使用してプロジェクトを指定します。

m_spel.Project = "c:\EpsonRC80\projects\API_Demos\Demo1\Demo1.sprj"  

Visual Basicのサンプルプログラム

  1. Visual Studio .NETで、メニュー[ファイル]-[新規作成]-[プロジェクト]を選択します。
  2. Visual Basicプロジェクトを作成します。
  3. メニュー[プロジェクト]-[参照の追加]を選択します。
  4. [参照]タブを選択し、“(プログラムフォルダー)\API\Assembly\net462”ディレクトリーを参照し、“RCAPINt2.dll” ファイルを選択します。
  5. Form1クラスに2つのボタン (btnController1, btnController2)を追加します。
  6. 各ボタンのクリックイベントを追加し、各ロボットコントローラーを制御するスレッドを生成します。
Private trd1 As System.Threading.Thread    ' ロボットコントローラー1  
Private trd2 As System.Threading.Thread    ' ロボットコントローラー2  
  
Private Sub btnController1_Click(ByVal sender As System.Object, _  
ByVal e As System.EventArgs) Handles btnController1.Click  
      ' ロボットコントローラー1のスレッドを開始  
      trd1 = New System.Threading.Thread( _  
New System.Threading.ThreadStart(AddressOf StartController1))  
      trd1.Start()  
End Sub  
Private Sub StartController1()  
    ' ロボットコントローラー1を制御  
    Try  
       Dim frm1 As New frmDemo1  
       frm1.ShowDialog()  
       frm1.Dispose()  
    Catch ex As Exception  
       MsgBox(ex.Message)  
    End Try  
End Sub  
Private Sub btnController2_Click(ByVal sender As System.Object, _  
ByVal e As System.EventArgs) Handles btnController2.Click  
     ' ロボットコントローラー2のスレッドを開始  
     trd2 = New System.Threading.Thread( _  
New System.Threading.ThreadStart(AddressOf StartController2))  
     trd2.Start()  
End Sub  
Private Sub StartController2()  
    ' ロボットコントローラー2を制御  
    Try  
       Dim frm2 As New frmDemo2  
       frm2.ShowDialog()  
       frm2.Dispose()  
    Catch ex As Exception  
       MsgBox(ex.Message)  
    End Try  
End Sub  
  1. コントローラー1用のフォーム (frmDemo1)を追加します。
Private WithEvents m_spel1 As New Spel  
Private Sub frmDemo1_Load(ByVal sender As System.Object, _  
ByVal e As System.EventArgs) Handles MyBase.Load  
  
     Try  
        m_spel1.ServerInstance=1  
        m_spel1.Initialize()  
        m_spel1.Connect(5)  
        m_spel1.Project = " c:\\EpsonRC80\\Projects\\Demo1\\Demo1.sprj "  
     Catch ex As SpelException  
        MsgBox(ex.Message)  
     End Try  
End Sub  
Private Sub m_spel1_EventReceived(ByVal sender As Object, ByVal e As  
 SpelEventArgs) _Handles m_spel1.EventReceived  
    ' ロボットコントローラー1  
End Sub  
Private Sub frmDemo1_FormClosed(ByVal sender As System.Object, _  
ByVal e As System.Windows.Forms.FormClosedEventArgs) _  
Handles MyBase.FormClosed  
    m_spel1.Dispose()  
End Sub  
  1. コントローラー2用のフォーム (frmDemo2)を追加します。
Private WithEvents m_spel2 As New Spel  
Private Sub frmDemo2_Load(ByVal sender As System.Object, _  
ByVal e As System.EventArgs) Handles MyBase.Load  
  
    Try  
       m_spel2.ServerInstance=2  
       m_spel2.Initialize()  
       m_spel2.Connect(6)  
       m_spel2.Project = " c:\\EpsonRC80\\Projects\\Demo2\\Demo2.sprj "  
    Catch ex As SpelException  
       MsgBox(ex.Message)  
    End Try  
End Sub  
  
Private Sub m_spel2_EventReceived(ByVal sender As Object, ByVal e As  
SpelEventArgs) _Handles m_spel2.EventReceived  
    ' ロボットコントローラー2  
End Sub  
Private Sub frmDemo2_FormClosed(ByVal sender As System.Object, _  
ByVal e As System.Windows.Forms.FormClosedEventArgs) _  
Handles MyBase.FormClosed  
    m_spel2.Dispose()  
End Sub  

Visual C#のサンプルプログラム

  1. Visual Studio .NETで、メニュー[ファイル]-[新規作成]-[プロジェクト]を選択します。
  2. Visual C#プロジェクトを作成します。
  3. メニュー[プロジェクト]-[参照の追加]を選択します。
  4. [参照]タブを選択し、“(プログラムフォルダー)\API\Assembly\net462”ディレクトリーを参照し、“RCAPINt2.dll” ファイルを選択します。
  5. Form1クラスに2つのボタン (btnController1, btnController2)を追加します。
  6. 各ボタンのクリックイベントを追加し、各ロボットコントローラーを制御するスレッドを生成します。
private System.Threading.Thread trd1;  // ロボットコントローラー1  
private System.Threading.Thread trd2;  // ロボットコントローラー2  
  
private void btnController1_Click(object sender, EventArgs e)  
{  
    // ロボットコントローラー1のスレッドを開始  
    trd1 = new System.Threading.Thread(new _  
			System.Threading.ThreadStart(StartController1));  
    trd1.Start();  
}  
private void StartController1()  
{  
    // ロボットコントローラー1を制御  
    try	  
    {  
       frmDemo1 frm1 = new frmDemo1();  
       frm1.ShowDialog();  
       frm1.Dispose();  
    }  
    catch (System.Exception ex)  
    {  
        MessageBox.Show(ex.Message);  
    }  
}  
private void btnController2_Click(object sender, EventArgs e)  
{  
    // ロボットコントローラー2のスレッドを開始  
    trd2 = new System.Threading.Thread(new _  
System.Threading.ThreadStart(StartController2));  
    trd2.Start();  
}  
private void StartController2()  
{  
    // ロボットコントローラー2を制御  
    try  
    {  
       frmDemo2 frm2 = new frmDemo2();  
       frm2.ShowDialog();  
       frm2.Dispose();  
    }  
    catch (System.Exception ex)  
    {  
        MessageBox.Show(ex.Message);  
    }  
}  
  1. コントローラー1用のフォーム (frmDemo1)を追加します。
private Spel m_spel1;  
private void frmDemo1_Load(object sender, EventArgs e)  
{  
    m_spel1 = new Spel();  
    try  
    {  
       m_spel1.ServerInstance = 1;  
       m_spel1.Initialize();  
       m_spel1.Connect(5);  
       m_spel1.Project = "c:\\EpsonRC80\\Projects\\Demo1\\Demo1.sprj";  
       m_spel1.EventReceived += new _  
Spel.EventReceivedEventHandler(m_spel1_EventReceived);  
    }  
    catch (SpelException ex)  
    {  
        MessageBox.Show(ex.Message);  
    }  
}  
public void m_spel1_EventReceived(object sender, SpelEventArgs e)  
{  
    // ロボットコントローラー1  
}  
private void frmDemo1_FormClosed(object sender, FormClosedEventArgs e)  
{  
    m_spel1.Dispose();  
}  
  1. コントローラー2用のフォーム (frmDemo2)を追加します。
private Spel m_spel2;  
private void frmDemo2_Load(object sender, EventArgs e)  
{  
    m_spel2 = new Spel();  
    try  
    {  
       m_spel2.ServerInstance = 2;  
       m_spel2.Initialize();  
       m_spel2.Connect(6);  
       m_spel2.Project = "c:\\EpsonRC80\\Projects\\Demo2\\Demo2.sprj";  
       m_spel2.EventReceived += new _  
Spel.EventReceivedEventHandler(m_spel2_EventReceived);  
    }  
    catch (SpelException ex)  
    {  
        MessageBox.Show(ex.Message);  
    }  
}  
public void m_spel2_EventReceived(object sender, SpelEventArgs e)  
{  
    // for robot controller 2  
}  
private void frmDemo2_FormClosed(object sender, FormClosedEventArgs e)  
{  
    m_spel2.Dispose();  
}