VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form frmTask 
   Caption         =   "Task"
   ClientHeight    =   5280
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   7575
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   ScaleHeight     =   5280
   ScaleWidth      =   7575
   StartUpPosition =   3  'Windows の既定値
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   150
      Left            =   1560
      Top             =   4800
   End
   Begin VB.CommandButton cmdExit 
      Caption         =   "&Exit"
      Height          =   375
      Left            =   6240
      TabIndex        =   12
      Top             =   4800
      Width           =   1215
   End
   Begin VB.CommandButton cmdRefresh 
      Caption         =   "&Refresh"
      Height          =   375
      Left            =   120
      TabIndex        =   11
      Top             =   4800
      Width           =   1215
   End
   Begin VB.Frame Frame2 
      Caption         =   "Operation"
      Height          =   3735
      Left            =   120
      TabIndex        =   5
      Top             =   960
      Width           =   7335
      Begin VB.CommandButton cmdStop 
         Caption         =   "Stop"
         Height          =   375
         Left            =   6120
         TabIndex        =   10
         Top             =   3240
         Width           =   975
      End
      Begin VB.CommandButton cmdRun 
         Caption         =   "Run"
         Height          =   375
         Left            =   2400
         TabIndex        =   9
         Top             =   3240
         Width           =   975
      End
      Begin VB.ComboBox cmbStop 
         Height          =   300
         Left            =   3840
         TabIndex        =   8
         Text            =   "cmbStop"
         Top             =   3240
         Width           =   2175
      End
      Begin VB.ComboBox cmbRun 
         Height          =   300
         Left            =   120
         TabIndex        =   7
         Text            =   "cmbRun"
         Top             =   3240
         Width           =   2175
      End
      Begin MSFlexGridLib.MSFlexGrid flxTask 
         Height          =   2655
         Left            =   120
         TabIndex        =   6
         Top             =   240
         Width           =   7095
         _ExtentX        =   12515
         _ExtentY        =   4683
         _Version        =   393216
         Cols            =   5
      End
   End
   Begin VB.Frame Frame1 
      Caption         =   "Connect"
      Height          =   735
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   7335
      Begin VB.TextBox txtCtrlName 
         Height          =   270
         Left            =   1920
         TabIndex        =   3
         Top             =   240
         Width           =   2415
      End
      Begin VB.CommandButton cmdConnect 
         Caption         =   "Connect"
         Height          =   375
         Left            =   4440
         TabIndex        =   2
         Top             =   240
         Width           =   1335
      End
      Begin VB.CommandButton cmdDisconnect 
         Caption         =   "Disconnect"
         Height          =   375
         Left            =   5880
         TabIndex        =   1
         Top             =   240
         Width           =   1335
      End
      Begin VB.Label Label2 
         Alignment       =   1  '右揃え
         Caption         =   "Controller Name : "
         Height          =   255
         Left            =   120
         TabIndex        =   4
         Top             =   240
         Width           =   1695
      End
   End
End
Attribute VB_Name = "frmTask"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private caoCtrls As CaoControllers
Private caoCtrl  As CaoController

Private Sub cmdConnect_Click()
    Set caoCtrl = caoCtrls.Add("RC1", "CaoProv.Dummy", "", "")
    
    Timer1.Enabled = True
    cmdRefresh.Enabled = True
    cmdRun.Enabled = True
    cmdStop.Enabled = True
    
    cmdRefresh_Click

End Sub

Private Sub cmdDisconnect_Click()
    If Not caoCtrl Is Nothing Then
        caoCtrls.Remove caoCtrl.Index
        Set caoCtrl = Nothing
    End If

    flxTask.Rows = 1
    
    Timer1.Enabled = False
    cmdRefresh.Enabled = False
    cmdRun.Enabled = False
    cmdStop.Enabled = False
End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

Private Sub cmdRefresh_Click()
    Dim tsk As CaoTask
    Dim tsks As CaoTasks
    ' Clear all task in caoCtrl.Tasks
    Set tsks = caoCtrl.Tasks
    For Each tsk In tsks
        tsks.Remove tsk.Index
    Next
    
    ' Append all task into caoCtrl.Tasks
    Dim l As Long
    Dim names As Variant
    names = caoCtrl.TaskNames
    For l = LBound(names) To UBound(names)
        Set tsk = caoCtrl.AddTask(names(l))
        With tsk
            .AddVariable ("@STATUS")
            .AddVariable ("@LINE_NO")
            .AddVariable ("@CYCLE_TIME")
            .AddVariable ("@PRIORITY")
        End With
    Next l
    
    flxTask.Rows = caoCtrl.Tasks.Count + 1
    
    Timer1_Timer
    
End Sub

Private Sub cmdRun_Click()
On Error GoTo ErrProc
    Dim l As Long
    Dim tsk As CaoTask
    
    l = flxTask.RowData(flxTask.row) ' Get selected task index
    Set tsk = caoCtrl.Tasks.Item(l)
    
    l = cmbRun.ItemData(cmbRun.ListIndex)
    tsk.Start l

    Exit Sub
ErrProc:
    MsgBox Err.Description

End Sub

Private Sub cmdStop_Click()
On Error GoTo ErrProc
    Dim l As Long
    Dim tsk As CaoTask
    
    l = flxTask.RowData(flxTask.row) ' Get selected task index
    Set tsk = caoCtrl.Tasks.Item(l)
    
    l = cmbStop.ItemData(cmbStop.ListIndex)
    tsk.Stop l

    Exit Sub
ErrProc:
    MsgBox Err.Description

End Sub

Private Sub Form_Load()
    Dim caoEng As New CaoEngine
    Dim caoCtrl  As CaoController

    txtCtrlName = "Dummy"
    
    flxTask.FormatString = "<Program name |Status |LineNo |CycleTime |Priority "
    
    With cmbRun
        .Clear
        .AddItem "1 - 1 cycle start": .ItemData(.NewIndex) = 1
        .AddItem "2 - Cyclic start": .ItemData(.NewIndex) = 2
        .AddItem "3 - Step forword": .ItemData(.NewIndex) = 3
        .AddItem "5 - Continue": .ItemData(.NewIndex) = 5
        .ListIndex = 0
    End With
    
    With cmbStop
        .Clear
        .AddItem "0 - Default stop": .ItemData(.NewIndex) = 0
        .AddItem "1 - Instant stop": .ItemData(.NewIndex) = 1
        .AddItem "2 - Step stop": .ItemData(.NewIndex) = 2
        .AddItem "3 - Cycle stop": .ItemData(.NewIndex) = 3
        .AddItem "4 - Stop and initialize": .ItemData(.NewIndex) = 4
        .AddItem "5 - Suspend All": .ItemData(.NewIndex) = 5
        .ListIndex = 0
    End With
    
    Timer1.Enabled = False
    cmdRefresh.Enabled = False
    cmdRun.Enabled = False
    cmdStop.Enabled = False
   
    Set caoEng = New CaoEngine
    Set caoCtrls = caoEng.Workspaces(0).Controllers
End Sub

Private Sub Form_Unload(Cancel As Integer)
    cmdDisconnect_Click
    
    Set caoCtrls = Nothing
End Sub

Private Sub Timer1_Timer()
    Dim row As Long
    Dim tsk As CaoTask
    
    row = 1 '0 = Fixed row
    For Each tsk In caoCtrl.Tasks
        With tsk
            flxTask.RowData(row) = .Index ' Store the task index into RowData
            flxTask.TextMatrix(row, 0) = .Name
            flxTask.TextMatrix(row, 1) = .Variables("@STATUS").Value
            flxTask.TextMatrix(row, 2) = .Variables("@LINE_NO").Value
            flxTask.TextMatrix(row, 3) = .Variables("@CYCLE_TIME").Value
            flxTask.TextMatrix(row, 4) = .Variables("@PRIORITY").Value
            row = row + 1
        End With
    Next
End Sub
