VERSION 5.00
Begin VB.Form frmQRCodeScaner 
   BorderStyle     =   1  '固定(実線)
   Caption         =   "QR Code Scanner"
   ClientHeight    =   6330
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   5625
   Icon            =   "frmQRCodeScanner.frx":0000
   LinkTopic       =   "Form1"
   LockControls    =   -1  'True
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   6330
   ScaleWidth      =   5625
   StartUpPosition =   3  'Windows の既定値
   Begin VB.Frame Frame2 
      Height          =   5175
      Left            =   180
      TabIndex        =   3
      Top             =   1020
      Width           =   5295
      Begin VB.CommandButton cmdExecute 
         Caption         =   "Execute"
         Enabled         =   0   'False
         Height          =   375
         Left            =   3960
         TabIndex        =   13
         Top             =   4620
         Width           =   1095
      End
      Begin VB.TextBox txtCommand 
         Height          =   270
         Left            =   1200
         TabIndex        =   12
         Text            =   "IMAGEOUT#J#2#F#0"
         Top             =   4680
         Width           =   2655
      End
      Begin VB.PictureBox picFrame 
         Height          =   3615
         Left            =   120
         ScaleHeight     =   3555
         ScaleWidth      =   4755
         TabIndex        =   5
         Top             =   240
         Width           =   4815
         Begin VB.PictureBox picImage 
            AutoSize        =   -1  'True
            BorderStyle     =   0  'なし
            Height          =   3615
            Left            =   0
            ScaleHeight     =   3615
            ScaleWidth      =   4815
            TabIndex        =   6
            Top             =   0
            Width           =   4815
         End
         Begin VB.Label lblRecvData 
            BackStyle       =   0  '透明
            Height          =   3615
            Left            =   0
            TabIndex        =   7
            Top             =   0
            Width           =   4815
         End
      End
      Begin VB.VScrollBar VScroll1 
         Enabled         =   0   'False
         Height          =   3615
         Left            =   4920
         Max             =   0
         TabIndex        =   4
         Top             =   240
         Width           =   255
      End
      Begin VB.HScrollBar HScroll1 
         Enabled         =   0   'False
         Height          =   255
         Left            =   120
         Max             =   0
         TabIndex        =   8
         Top             =   3840
         Width           =   4815
      End
      Begin VB.Label Label1 
         Alignment       =   1  '右揃え
         Caption         =   "DateTime : "
         Height          =   255
         Left            =   180
         TabIndex        =   9
         Top             =   4350
         Width           =   975
      End
      Begin VB.Label Label3 
         Alignment       =   1  '右揃え
         Caption         =   "Command :"
         Height          =   255
         Left            =   120
         TabIndex        =   11
         Top             =   4710
         Width           =   975
      End
      Begin VB.Label lblDateTime 
         BackStyle       =   0  '透明
         BorderStyle     =   1  '実線
         Height          =   255
         Left            =   1200
         TabIndex        =   10
         Top             =   4320
         Width           =   2655
      End
   End
   Begin VB.TextBox txtConnOption 
      Height          =   270
      Left            =   180
      TabIndex        =   0
      Text            =   "Conn=com:1:38400:N:8:1,Mode=5,Protocol=0:0:0"
      Top             =   240
      Width           =   5235
   End
   Begin VB.CommandButton cmdConnect 
      Caption         =   "Connect"
      Height          =   375
      Left            =   3120
      TabIndex        =   1
      Top             =   600
      Width           =   1095
   End
   Begin VB.CommandButton cmdDisconnect 
      Caption         =   "Disconnect"
      Enabled         =   0   'False
      Height          =   375
      Left            =   4320
      TabIndex        =   2
      Top             =   600
      Width           =   1095
   End
End
Attribute VB_Name = "frmQRCodeScaner"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Dim m_caoEng As New CaoEngine
Dim m_caoWS As CaoWorkspace
Dim WithEvents m_caoCtrl  As CaoController
Attribute m_caoCtrl.VB_VarHelpID = -1


Private Sub cmdConnect_Click()
    
    On Error GoTo ErrProc
    
    Set m_caoWS = m_caoEng.Workspaces(0)
    Set m_caoCtrl = m_caoWS.AddController("test", "CaoProv.DENSO.QRCode", "", txtConnOption.Text)
    cmdDisconnect.Enabled = True
    cmdConnect.Enabled = Not cmdDisconnect.Enabled
    cmdExecute.Enabled = True

    Exit Sub
    
ErrProc:
    MsgBox Err.Description

End Sub

Private Sub cmdDisconnect_Click()

    If (m_caoCtrl Is Nothing) Then Exit Sub
    m_caoWS.Controllers.Remove m_caoCtrl.Name
    Set m_caoCtrl = Nothing
    cmdConnect.Enabled = True
    cmdDisconnect.Enabled = Not cmdConnect.Enabled
    cmdExecute.Enabled = False

End Sub

Private Sub cmdExecute_Click()

    m_caoCtrl.Execute "Raw", txtCommand.Text
    
End Sub

Private Sub Form_Unload(Cancel As Integer)

    cmdDisconnect_Click

End Sub

Private Sub m_caoCtrl_OnMessage(ByVal pICaoMess As CAOLib.ICaoMessage)
On Error GoTo ErrProc

    Select Case pICaoMess.Number
    Case 1
        ' データの表示
        lblRecvData.Visible = True
        picImage.Visible = False
        lblRecvData.Caption = pICaoMess.Value
        
        ' スクロールバーの調整
        VScroll1.Max = 0
        VScroll1.Enabled = False
        HScroll1.Max = 0
        HScroll1.Enabled = False
                
    Case 2
        ' 画像データを一時ファイルに保存
        lblRecvData.Visible = False
        picImage.Visible = True
        Open "_picture.tmp" For Binary As #1
        Dim byData() As Byte
        byData = pICaoMess.Value
        Put #1, , byData
        Close #1
        

        ' 画像の表示
        picImage.Cls
        Set picImage.Picture = LoadPicture("_picture.tmp")
        
        ' 一時ファイル削除
        Kill "_picture.tmp"
        
        ' スクロールバーの調整
        With VScroll1
            If picImage.Height < picFrame.Height Then
                .Max = 0
                .Enabled = False
            Else
                .Enabled = True
                .Max = picImage.Height - picFrame.Height
                If .Max > 10 Then
                    .LargeChange = .Max / 10
                    .SmallChange = .LargeChange / 10
                Else
                    .LargeChange = 1
                    .SmallChange = 1
                End If
            End If
        End With
                
        With HScroll1
            If picImage.Width < picFrame.Width Then
                .Max = 0
                .Enabled = False
            Else
                .Enabled = True
                .Max = picImage.Width - picFrame.Width
                If .Max > 10 Then
                    .LargeChange = .Max / 10
                    .SmallChange = .LargeChange / 10
                Else
                    .LargeChange = 1
                    .SmallChange = 1
                End If
            End If
        End With
        
    Case 3 ' Error
        MsgBox pICaoMess.Value
    End Select
    
    lblDateTime.Caption = pICaoMess.DateTime

    Exit Sub
    
ErrProc:
    MsgBox Err.Description
End Sub

Private Sub HScroll1_Change()
    picImage.Left = -HScroll1.Value
End Sub


Private Sub VScroll1_Change()
    picImage.Top = -VScroll1.Value
End Sub
