#include <PanelMain.h> raw

Dim CognexCtrl as Object
Dim CognexCam as Object

Sub Panel_INITIALIZE()
	On Error Goto ErrorProc
	ClearError
	
	' 接続処理が完了するまでは、押せないようにしておく
	PB1.Active = 1
	PB2.Active = 1

	' 描画用の奴を止めておく
	Timer1.Active = 0
	PB2.Caption = "カメラ画像取得開始"

	' Cognex　In-Sightとの接続
	CognexCtrl = cao.AddController("cognex2", "CaoProv.Cognex.In-Sight", "", "conn=eth:10.6.235.60")

	' オンラインの状態を取得 1:Online  0:Offline
	GetOnline

	' アクティブなジョブのファイル名を取得する
	GetFile

	' プログラム一覧の取得
	GetFileList
	
	' 画像のオブジェクト取得
	CognexCam = CognexCtrl.AddVariable("@BITMAP_DC", "Screen=4, SM8=True")
	

	' 正常に終わったはずなので、ボタンを押せるようにする
	PB1.Active = 3
	PB2.Active = 3

	Exit Sub

ErrorProc:
	Label1.Caption = HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub

' 
Sub PB1_CLICKED()
	On Error Goto ErrorProc
	ClearError	

	Dim vntResult as Variant

	vntResult = CognexCtrl.Execute("GetOnline", "")
	If (vntResult = 0) then
		Call CognexCtrl.Execute("LoadFile", TB1.Text)
		' アクティブなジョブのファイル名を取得する
		GetFile
	Else
		Label1.Caption = "オフラインにしてください"
	End If

	Exit Sub

ErrorProc:
	Label1.Caption = HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub



' ------------------------------------------------関数---------------------------------------------------------
Sub ClearError
	Label1.Caption = ""
End Sub

' オンラインの状態を確認する
Sub GetOnline
	On Error Goto ErrorProc

	IPB1.State = CognexCtrl.Execute("GetOnline", "")
	If (IPB1.State = 1) Then	
		IPB1.Caption = "OnLine"
	Else
		IPB1.Caption = "OffLine"
	End If
	
	Exit sub

ErrorProc:
	Label1.Caption = "GetOnline" & HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub

' アクティブなジョブのファイル名を取得する
Sub GetFile
	On Error Goto ErrorProc
	Label2.Caption = "ジョブが設定されていません"
	Label2.Caption = CognexCtrl.Execute("GetFile", "")
	
	Exit Sub

ErrorProc:
	
	Label1.Caption = HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub


' ジョブ一覧を取得する
Sub GetFileList
	On Error Goto ErrorProc

	Label3.Caption = ""
	Dim vntResult as Variant
	Dim num as Long
	vntResult = CognexCtrl.Execute("GetFileList", "")
	if(Ubound(vntResult) > -1) Then
		For num = 0 to Ubound(vntResult)
			Label3.Caption = Label3.Caption & vntResult(num)  & "\n"
		Next
	End if

	Exit Sub

ErrorProc:
	Label1.Caption = "GetFileList" & HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub

' オンライン/オフラインの切り替え
Sub IPB1_CLICKED()
	On Error Goto ErrorProc
	ClearError

	If (IPB1.State = 1) Then
		Call CognexCtrl.Execute("SetOnline", 0)
	Else
		Call CognexCtrl.Execute("SetOnline", 1)
	End If
	
	' オンラインの状態を確認する
	GetOnline

	Exit Sub

ErrorProc:
	Label1.Caption = HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub

Sub PB2_CLICKED()
	On Error Goto ErrorProc
	ClearError
	labCamera.StretchMode = 1

	If(Timer1.Active = 0) then
		Timer1.Active = 1
		PB2.Caption = "カメラ画像取得停止"
	Else
		Timer1.Active = 0
		PB2.Caption = "カメラ画像取得開始"
	End If

	Exit Sub

ErrorProc:
	Label1.Caption = HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub

Sub Timer1_TIMER()
	On Error Goto ErrorProc
	ClearError

	Dim vntImage as Variant
	vntImage = CognexCam.Value
	If(VarType(vntImage) = 8209) Then
		labCamera.Picture = vntImage
	End If
	Exit Sub	

ErrorProc:
	Label1.Caption = HEX(Err.OriginalNumber) & ":" & Err.Description
End Sub
#ifdef TP_DESIGNER
'<<--TPDESIGNER_RESERVED-->>
CAPTION=""
BG=&H754E3A
FG=&H000000
TIMEOUT=200
RELEASEMODE=0
PNLCCVER=232
COLORTYPE=1
FONTTYPE=1
BORDERSTYLE=0
add_widget 15,"Timer1",280,10,0,1,500;
add_widget 9,"Group1",10,10,280,270,&HFFFFFF,&HD0E040,0,1,0,"JobList",14,0,1,0,"MS UI Gothic";
add_widget 2,"labCamera",300,30,330,240,&H000000,&HB0B0B0,0,1,0,"Camera Image",16,0,"MS UI Gothic","",1,1;
add_widget 17,"IPB1",210,290,70,30,&H00FF00,&H000000,0,3,1,"IPB1",14,0,1,"MS UI Gothic";
add_widget 1,"PB1",210,330,70,30,&H000000,&HB0B0B0,0,3,1,"SetJob",14,0,0,"MS UI Gothic";
add_widget 1,"PB2",340,280,250,30,&H000000,&HB0B0B0,0,3,1,"PB2",14,0,0,"MS UI Gothic";
add_widget 2,"Label1",300,330,330,30,&H000000,&HB0B0B0,0,1,0,"Label1",14,0,"MS UI Gothic","",1,1;
add_widget 2,"Label2",10,290,190,30,&H000000,&HFFFFFF,0,1,0,"Label2",12,0,"MS UI Gothic","",1,1;
add_widget 2,"Label3",20,20,260,250,&H000000,&HFFFFFF,0,1,0,"File\nList",12,0,"MS UI Gothic","",1,1;
add_widget 8,"TB1",10,330,190,30,&H000000,&HB0B0B0,0,3,0,"Job Name",12,0,"TB1","MS UI Gothic";
'<<--TPDESIGNER_RESERVED-->>
#endif
