Sample Program for connecting multiple Controllers

The following sections describe sample programs to connect the PC with Controller 1 and Controller 2 using a .NET application.

KEY POINTS


For details about the available properties and methods, see:

RCAPINet Reference

Controller connection setting

When connecting the multiple Controllers at the same time, specify the connection using the Connect method of Spel class.

m_spel.Connect(1)  

The parameter in the Connect method indicates the connection number. This number is same as the one shown in “Number” in the dialog box below (Epson RC+ 8.0 menu-[Setup]-[PC to Controller Communications]). If a value of -1 is used, it means to use the most recent connection.

Project setting

To connect the multiple controllers, specify the project using the Project property of the Spel class.

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

Sample program using Visual Basic

  1. Select menu-[File]-[New]-[Project] in Visual Studio .NET.
  2. Create a Visual Basic project.
  3. Select [Project]-[Add Reference].
  4. Select the [Browse] tab, reference “(Program folder)\API\Assembly\net462” directory, and then select the “RCAPINt2.dll” file.
  5. Add two buttons (btnController1, btnController2) to the Form1 class.
  6. Add quick events of each button and create the thread to control each Robot Controller.
Private trd1 As System.Threading.Thread    ' for Robot Controller 1  
Private trd2 As System.Threading.Thread    ' for Robot Controller 2  
  
Private Sub btnController1_Click(ByVal sender As System.Object, _  
ByVal e As System.EventArgs) Handles btnController1.Click  
      ' Start thread for Robot Controller 1  
      trd1 = New System.Threading.Thread( _  
New System.Threading.ThreadStart(AddressOf StartController1))  
      trd1.Start()  
End Sub  
Private Sub StartController1()  
    ' Control Robot Controller 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  
     ' Start thread for Robot Controller 2  
     trd2 = New System.Threading.Thread( _  
New System.Threading.ThreadStart(AddressOf StartController2))  
     trd2.Start()  
End Sub  
Private Sub StartController2()  
    ' Control Robot Controller 2  
    Try  
       Dim frm2 As New frmDemo2  
       frm2.ShowDialog()  
       frm2.Dispose()  
    Catch ex As Exception  
       MsgBox(ex.Message)  
    End Try  
End Sub  
  1. Add a form (frmDemo1) for Controller 1.
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  
    ' for Robot Controller 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. Add a form (frmDemo2) for Controller 2.
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  
    ' for Robot Controller 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  

Sample program using Visual C#

  1. Select menu-[File]-[New]-[Project] in Visual Studio .NET.
  2. Create a Visual C# project.
  3. Select [Project]-[Add Reference].
  4. Select the [Browse] tab, reference “(Program folder)\API\Assembly\net462” directory, and then select the “RCAPINt2.dll” file.
  5. Add two buttons (btnController1, btnController2) to the Form1 class.
  6. Add quick events of each button and create the thread to control each Robot Controller.
private System.Threading.Thread trd1;  // for robot controller1  
private System.Threading.Thread trd2;  // for robot controller2  
  
private void btnController1_Click(object sender, EventArgs e)  
{  
    // Start thread for robot controller 1  
    trd1 = new System.Threading.Thread(new _  
			System.Threading.ThreadStart(StartController1));  
    trd1.Start();  
}  
private void StartController1()  
{  
    // Control robot controller 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)  
{  
    // Start thread for robot controller 2  
    trd2 = new System.Threading.Thread(new _  
System.Threading.ThreadStart(StartController2));  
    trd2.Start();  
}  
private void StartController2()  
{  
    // Control robot controller 2  
    try  
    {  
       frmDemo2 frm2 = new frmDemo2();  
       frm2.ShowDialog();  
       frm2.Dispose();  
    }  
    catch (System.Exception ex)  
    {  
        MessageBox.Show(ex.Message);  
    }  
}  
  1. Add a form (frmDemo1) for Controller 1.
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)  
{  
    // for robot controller 1  
}  
private void frmDemo1_FormClosed(object sender, FormClosedEventArgs e)  
{  
    m_spel1.Dispose();  
}  
  1. Add a form (frmDemo2) for Controller 2.
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();  
}