VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form frmMain 
   ClientHeight    =   7725
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   10920
   LinkTopic       =   "Form1"
   ScaleHeight     =   7725
   ScaleWidth      =   10920
   StartUpPosition =   3  'Windows の既定値
   Begin VB.Timer timSampling 
      Enabled         =   0   'False
      Interval        =   50
      Left            =   8790
      Top             =   4320
   End
   Begin VB.Frame Frame2 
      Height          =   1545
      Left            =   8430
      TabIndex        =   6
      Top             =   2040
      Width           =   2325
      Begin VB.CommandButton cmdPutVal 
         Caption         =   "Put"
         Height          =   315
         Left            =   600
         TabIndex        =   11
         Top             =   1050
         Width           =   1605
      End
      Begin VB.TextBox txtPutVal 
         Height          =   285
         Left            =   1050
         TabIndex        =   10
         Top             =   660
         Width           =   1125
      End
      Begin VB.Label Label4 
         Caption         =   "Value :"
         Height          =   255
         Left            =   210
         TabIndex        =   9
         Top             =   660
         Width           =   735
      End
      Begin VB.Label lblAddr 
         BorderStyle     =   1  '実線
         Height          =   255
         Left            =   1050
         TabIndex        =   8
         Top             =   300
         Width           =   1095
      End
      Begin VB.Label Label2 
         Caption         =   "Address :"
         Height          =   255
         Left            =   210
         TabIndex        =   7
         Top             =   300
         Width           =   735
      End
   End
   Begin VB.Frame Frame1 
      Height          =   1725
      Left            =   8430
      TabIndex        =   1
      Top             =   240
      Width           =   2295
      Begin VB.CommandButton cmdDisconnect 
         Caption         =   "Disconnect"
         Height          =   315
         Left            =   540
         TabIndex        =   5
         Top             =   1200
         Width           =   1605
      End
      Begin VB.CommandButton cmdConnect 
         Caption         =   "Connect"
         Height          =   315
         Left            =   540
         TabIndex        =   4
         Top             =   780
         Width           =   1605
      End
      Begin VB.ComboBox cmbCH 
         Height          =   300
         ItemData        =   "Main.frx":0000
         Left            =   1170
         List            =   "Main.frx":0010
         TabIndex        =   3
         Text            =   "Combo1"
         Top             =   270
         Width           =   945
      End
      Begin VB.Label Label1 
         Caption         =   "Channel :"
         Height          =   225
         Left            =   210
         TabIndex        =   2
         Top             =   330
         Width           =   795
      End
   End
   Begin MSFlexGridLib.MSFlexGrid flxMemoryMap 
      Height          =   7455
      Left            =   180
      TabIndex        =   0
      Top             =   150
      Width           =   8115
      _ExtentX        =   14314
      _ExtentY        =   13150
      _Version        =   393216
      Rows            =   33
      Cols            =   9
      AllowBigSelection=   0   'False
      GridLines       =   2
      BorderStyle     =   0
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private eng As CaoEngine
Private ctrl As CaoController
Private SamplingVar As CaoVariable

' フォームロード
Private Sub Form_Load()

    ' 画面の初期化
    InitGrid
    cmdDisconnect.Enabled = False
    cmbCH.ListIndex = 0
    
    ' CAO生成
    Set eng = New CaoEngine
End Sub

' 接続処理
Private Sub cmdConnect_Click()
On Error GoTo ErrProc:
    
    ' 力覚センサに接続
    Set ctrl = eng.Workspaces(0).AddController("Sample", "CaoProv.Nitta.IFS", "", "Channel=" & cmbCH.Text)
    
    ' サンプリング用の変数作成
    Set SamplingVar = ctrl.AddVariable("D00", "Size=256")
    
    ' ボタンの表示設定
    cmdConnect.Enabled = False
    cmdDisconnect.Enabled = True
    
    ' タイマースタート
    timSampling.Enabled = True
    Exit Sub
    
ErrProc:
    MsgBox Err.Description
End Sub

' 切断処理
Private Sub cmdDisconnect_Click()
    
    ' タイマーストップ
    timSampling.Enabled = False
    
    ' オブジェクトの開放
    Set SamplingVar = Nothing
    If Not ctrl Is Nothing Then
        eng.Workspaces(0).Controllers.Remove ctrl.Index
        Set ctrl = Nothing
    End If
    
    ' ボタンの表示設定
    cmdConnect.Enabled = True
    cmdDisconnect.Enabled = False
    
End Sub

'データ入力
Private Sub cmdPutVal_Click()
    On Error GoTo ErrProc
    
    Dim Var As CaoVariable
    Set Var = ctrl.AddVariable("D" & lblAddr.Caption)
    Var.Value = CInt(txtPutVal)
    
    ctrl.Variables.Remove Var.Index
    Exit Sub
    
ErrProc:
    MsgBox Err.Description
End Sub

Private Sub flxMemoryMap_Click()
    
    ' クリックしたアドレスを表示
    With flxMemoryMap
        lblAddr.Caption = "0x" & Hex((.Row - 1) * &H8 + (.Col - 1))
    End With

End Sub

' サンプリングタイマー
Private Sub timSampling_Timer()

    ' データの取得
    Dim MemMap() As Integer
    MemMap = SamplingVar.Value
    
    '画面表示
    Dim Pos As Long
    Pos = 0
    With flxMemoryMap
        For i = 1 To .Rows - 1
            For j = 1 To .Cols - 1
                .TextMatrix(i, j) = CStr(MemMap(Pos))
                Pos = Pos + 1
            Next
        Next
    End With
    DoEvents
End Sub




' メモリマップの初期化
Private Sub InitGrid()

    With flxMemoryMap
    
        ' タイトル行の設定
        For i = 1 To .Cols - 1
            .TextMatrix(0, i) = "0x0" & Hex(i - 1)
        Next

        For i = 1 To .Rows - 1
            .TextMatrix(i, 0) = "0x" & Hex((i - 1) * 8)
        Next
        
        ' 書込み可能領域の背景色を変更
        .Row = 14
        .Col = 8
        .CellBackColor = &HC0C0C0
        
        .Row = 15
        .CellBackColor = &HC0C0C0
        
        .Row = 16
        .CellBackColor = &HC0C0C0
    
        .Row = 17
        For i = 1 To .Cols - 1
            .Col = i
            .CellBackColor = &HC0C0C0
        Next
    
        .Row = 18
        For i = 1 To .Cols - 1
            .Col = i
            .CellBackColor = &HC0C0C0
        Next
        
        .Row = 29
        For i = 1 To .Cols - 1
            .Col = i
            .CellBackColor = &HC0C0C0
        Next
        
        .Row = 1
        .Col = 1
        
    End With
End Sub

