ここではHSMS のミニホストを作成しながらプログラミングについて解説していくことにします。
|
ミニホストの仕様
作成するミニホストの仕様は以下のようなものとし、通信相手は一般的なウェハ検査装置とします。
|
プロジェクトの作成
-
Visual Studio 2017を起動し、Fileメニューから「New」 - 「Project...」をクリックします。
-
Visual BasicのWindows Forms Applicationを選択し、プロジェクト名とフォルダを指定します。ここではプロジェクト名をSavoyTutorialVB2008とします。入力が完了したらOKボタンをクリックします。
-
新規のプロジェクトが作成されました。
|
ツールボックスへSavoyを追加
|
フォームにSavoyを配置
-
下記のようにSavoyHsms、SavoySecsIIをフォームに配置します。
-
Openボタンをクリックしたら、SavoyHsmsの通信設定画面が表示されるようにします。その後OKボタンが押されたら接続するようにします。設定内容はSavoy.iniファイルに保存され、次回から設定の入力は不要です。
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Setup
hsms.LoadIniFile()
If hsms.Setup("") Then
' If OK button was pressed, establish connection
hsms.Connect = True
End If
End Sub
|
-
Onlineボタンをクリックしたら、S1F13を送信するようにします。
|
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' Send S1F13
outmsg.SML = "s1f13w{}"
hsms.Send(outmsg.Msg)
End Sub
|
-
PP Selectボタンをクリックしたら、リモートコマンドでPP-SELECTを送信するようにします。
|
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' Send S2F41 PP-Select
outmsg.SML = "s2f41w{<a'PP-SELECT'>{{<a'PPID'><a'" + TextBox1.Text + "'>}}}"
hsms.Send(outmsg.Msg)
End Sub
|
-
PP Startボタンをクリックしたら、リモートコマンドでSTARTを送信するようにします。
|
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' Send S2F41 Start
outmsg.SML = "s2f41w{<a'START'>{{}}}"
hsms.Send(outmsg.Msg)
End Sub
|
|
イベントの処理
SavoyHsmsからのイベントを処理します。
-
Connectedイベントが来たら、セレクト要求を送信するようにします。
|
Private Sub hsms_Connected(ByVal sender As System.Object, ByVal e As AxSAVOYLib._DSavoyHsmsEvents_ConnectedEvent) Handles hsms.Connected
' Connected
' Send select request
outmsg.SML = "Select.req"
hsms.Send(outmsg.Msg)
End Sub
|
-
Receivedイベントが来たら、メッセージ内容を解析するためにSavoySecsIIに渡します。
|
Private Sub hsms_Received(ByVal sender As System.Object, ByVal e As AxSAVOYLib._DSavoyHsmsEvents_ReceivedEvent) Handles hsms.Received
inmsg.Msg = e.lpszMsg
|
-
返信の必要なデータメッセージを受け取ったら、適当な返事を返信します。
|
Select Case inmsg.SType
Case 0
' Data message
If inmsg.Wbit And (inmsg.Function Mod 2) <> 0 Then
' Need to reply something...
outmsg.SML = "<b 0>"
outmsg.Reply(e.lpszMsg)
hsms.Send(outmsg.Msg)
End If
|
-
セレクト要求を受け取ったら、セレクト応答を返信します。
|
Case 1
' Select request
outmsg.SML = "Select.rsp"
outmsg.Reply(e.lpszMsg)
hsms.Send(outmsg.Msg)
|
|
全ソースコード
以上でミニホストの完成です。このプロジェクトはゼロからスクラッチで作った訳ですが、空白行やコメントを入れてもたったの55行しかありません。実際に自分で書いたコードの行数は、コメントを除くとなんと25行です。他社製品にあるような訳の分からない設定
ファイルもデータファイルも書きませんでした。このような驚異的なまでの簡単さは、他社では真似のできない芸当です。
|
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Setup
hsms.LoadIniFile()
If hsms.Setup("") Then
' If OK button was pressed, establish connection
hsms.Connect = True
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' Send S1F13
outmsg.SML = "s1f13w{}"
hsms.Send(outmsg.Msg)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' Send S2F41 PP-Select
outmsg.SML = "s2f41w{<a'PP-SELECT'>{{<a'PPID'><a'" + TextBox1.Text + "'>}}}"
hsms.Send(outmsg.Msg)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' Send S2F41 Start
outmsg.SML = "s2f41w{<a'START'>{{}}}"
hsms.Send(outmsg.Msg)
End Sub
Private Sub hsms_Connected(ByVal sender As System.Object, ByVal e As AxSAVOYLib._DSavoyHsmsEvents_ConnectedEvent) Handles hsms.Connected
' Connected
' Send select request
outmsg.SML = "Select.req"
hsms.Send(outmsg.Msg)
End Sub
Private Sub hsms_Received(ByVal sender As System.Object, ByVal e As AxSAVOYLib._DSavoyHsmsEvents_ReceivedEvent) Handles hsms.Received
inmsg.Msg = e.lpszMsg
Select Case inmsg.SType
Case 0
' Data message
If inmsg.Wbit And (inmsg.Function Mod 2) <> 0 Then
' Need to reply something...
outmsg.SML = "<b 0>"
outmsg.Reply(e.lpszMsg)
hsms.Send(outmsg.Msg)
End If
Case 1
' Select request
outmsg.SML = "Select.rsp"
outmsg.Reply(e.lpszMsg)
hsms.Send(outmsg.Msg)
End Select
End Sub
End Class
|
|