Jazz Soft お問い合わせ   JazzSoft@live.com     日本語   英語  日本語  中国語(繁体字)  中国語(簡体字)
工場自動化と歩留り管理ソリューション 
Skip Navigation Linksホーム > 製品一覧 > Savoy > サンプル > ホスト(Visual Basic 2008)
Savoy ActiveXコントロール   




パンフレット

日本語

Savoy サンプル - ミニホスト (Visual Basic 2008)

ここではHSMS のミニホストを作成しながらプログラミングについて解説していくことにします。


ミニホストの仕様

作成するミニホストの仕様は以下のようなものとし、通信相手は一般的なウェハ検査装置とします。

  • 装置に対してオンライン移行、レシピ指定、測定開始、データ受信を行うことができます。
  • 送信できるメッセージは以下のもののみとします。


    Select.req
    Select.rsp
    S1F13
    S2F41
    S6F12


  • 受信できるメッセージは以下のもののみとします。


    Select.req
    Select.rsp
    S1F14
    S2F42
    S6F11


  • 装置の初期設定はすでに設定されているものとします。
  • ストリーム9やファンクション0の処理は行わないこととします。
  • T3タイムアウトの監視は行わないこととします。

プロジェクトの作成

  1. Visual Studio 2017を起動し、Fileメニューから「New」 - 「Project...」をクリックします。




  2. Visual BasicのWindows Forms Applicationを選択し、プロジェクト名とフォルダを指定します。ここではプロジェクト名をSavoyTutorialVB2008とします。入力が完了したらOKボタンをクリックします。



  3. 新規のプロジェクトが作成されました。




ツールボックスへSavoyを追加

この作業は1回だけ行えば、次回からは不要です。
  1. Toolboxの余白部分を右クリックし、メニューからChoose Itemsを選んでクリックします。次の画面が表示されるまでに、1分以上かかる場合があります。




  2. COM Componentsタブを選択し、一覧からSavoy ActiveX Control moduleにチェックマークをつけます。そしてOKボタンをクリックします。




  3. Savoyがツールボックスに追加されますので、将来探しやすくなるようTabを追加して整理しておきます。




フォームにSavoyを配置

  1. 下記のようにSavoyHsms、SavoySecsIIをフォームに配置します。




  2. Openボタンをクリックしたら、SavoyHsmsの通信設定画面が表示されるようにします。その後OKボタンが押されたら接続するようにします。設定内容はSavoy.iniファイルに保存され、次回から設定の入力は不要です。

    Visual Basic

    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



  3. Onlineボタンをクリックしたら、S1F13を送信するようにします。

    Visual Basic

    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



  4. PP Selectボタンをクリックしたら、リモートコマンドでPP-SELECTを送信するようにします。

    Visual Basic

    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



  5. PP Startボタンをクリックしたら、リモートコマンドでSTARTを送信するようにします。

    Visual Basic

    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からのイベントを処理します。
  1. Connectedイベントが来たら、セレクト要求を送信するようにします。

    Visual Basic

    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



  2. Receivedイベントが来たら、メッセージ内容を解析するためにSavoySecsIIに渡します。

    Visual Basic

    Private Sub hsms_Received(ByVal sender As System.Object, ByVal e As AxSAVOYLib._DSavoyHsmsEvents_ReceivedEvent) Handles hsms.Received
      inmsg.Msg = e.lpszMsg



  3. 返信の必要なデータメッセージを受け取ったら、適当な返事を返信します。

    Visual Basic

    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



  4. セレクト要求を受け取ったら、セレクト応答を返信します。

    Visual Basic

    Case 1
      ' Select request
      outmsg.SML = "Select.rsp"
      outmsg.Reply(e.lpszMsg)
      hsms.Send(outmsg.Msg)



全ソースコード

以上でミニホストの完成です。このプロジェクトはゼロからスクラッチで作った訳ですが、空白行やコメントを入れてもたったの55行しかありません。実際に自分で書いたコードの行数は、コメントを除くとなんと25行です。他社製品にあるような訳の分からない設定 ファイルもデータファイルも書きませんでした。このような驚異的なまでの簡単さは、他社では真似のできない芸当です。

Visual Basic

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

お問い合わせ   JazzSoft@live.com
  Copyright © 1997 - 2018 Jazz Soft, Inc.