複数コントローラーと接続するサンプルプログラム
.NETアプリケーションを使用して、コントローラー1とコントローラー2のそれぞれに接続するサンプルプログラムを示します。
コントローラー接続の設定
複数コントローラーと同時に接続する場合、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のサンプルプログラム
- Visual Studio .NETで、メニュー[ファイル]-[新規作成]-[プロジェクト]を選択します。
- Visual Basicプロジェクトを作成します。
- メニュー[プロジェクト]-[参照の追加]を選択します。
- [参照]タブを選択し、“(プログラムフォルダー)\API\Assembly\net462”ディレクトリーを参照し、“RCAPINt2.dll” ファイルを選択します。
- Form1クラスに2つのボタン (btnController1, btnController2)を追加します。
- 各ボタンのクリックイベントを追加し、各ロボットコントローラーを制御するスレッドを生成します。
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用のフォーム (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
- コントローラー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#のサンプルプログラム
- Visual Studio .NETで、メニュー[ファイル]-[新規作成]-[プロジェクト]を選択します。
- Visual C#プロジェクトを作成します。
- メニュー[プロジェクト]-[参照の追加]を選択します。
- [参照]タブを選択し、“(プログラムフォルダー)\API\Assembly\net462”ディレクトリーを参照し、“RCAPINt2.dll” ファイルを選択します。
- Form1クラスに2つのボタン (btnController1, btnController2)を追加します。
- 各ボタンのクリックイベントを追加し、各ロボットコントローラーを制御するスレッドを生成します。
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用のフォーム (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();
}
- コントローラー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();
}