;--------+---------+---------+---------+---------+---------+---------+---------+
;  RS485-Basic Version 2.0b Programmed by Futaba Corporation
;	Current Platform - windowsXP
;	Programmed in HSP ver3.0a by onion software
;		& ExeWrightModW[ by v} (ExeWrightMod)
;		& ӂ邨ԂLite by eƂ (colorfulobject)
;		& header/macro and module Library  - rs485header, exobject, rs485comm
;--------+---------+---------+---------+---------+---------+---------+---------+
;/
;	2006/09/28 : 2.0a		Y	XNvgJ
;		T[{IDݒiĺAAbv/_E{^jF0`255
;		ʐM|[gݒiR{{bNXIjFCOM1`10
;		ʐMxݒiR{{bNXIjF9.6k`1.3M
;		\42-51i`FbN{bNXjF0.1bɃ^[R}hS𑗐M\tbV
;			݈ʒu\F}999.9x
;			ݎԁF0.00`
;			Xs[hFϊ̂݁ip[^lj
;			ݕׁF256100.0%
;			݉xFp[^l
;		gNONi{^A`FbN{bNX͎őMj
;		^[i{^A`FbN{bNX͎őMjFM͈ʒuw߂̂Ƃ^[R}hSM
;		woCg^[i{^A`FbN{bNX͎őMjFV[}bv̂ݗL
;			JnAhXiĺAAbv/_E{^jF0`60
;			MoCgݒiĺAAbv/_E{^jF0`128
;
;		XCho[i蓮jF}150xA0.1x
;		E{^i蓮jF}150xA0.1x
;		[F1][F2][F3]i{^AF1EF2EF3L[j
;			wߊpxF}150xA0.1x
;			ړԁF0.01`10.00b
;		X^[gi{^jFJԂ
;		Xgbv[F12]i{^AF12L[j
;			ʒuIi`FbN{bNXj
;			s[g񐔁iĺAAbv/_E{^jF(-1)A0`10000񉝕
;			s[gԊuiĺAAbv/_E{^jF0.001`10.000b/P
;		AMi`FbN{bNXj
;			wߊԊuiĺAAbv/_E{^jF0.001`0.200b
;		MԊuԕ\imsjF0.0`9999.9b
;		ʕۑi{^jFcapturetH_ɕۑ
;		ʐM_CAOi`FbN{bNXj
;			\XCb`i`FbN{bNXjF_CAO\on/off
;			i{^jF_CAONA
;			TCYF_CAOgpiWindows2000/XPMax2,000,000kBj
;			t@Cۑi{^jFJgfBNgiexetH_jlogfile.txtۑ
;		ʐMOFPsڂɔNAQsڈȍ~ɒʐMO
;			-----------------------------------------------------------------------------------------
;			2006N120
;			08:27:08 5734.936 TD(08): FA AF 01 01 00 00 01 01
;			08:27:08    5.110 RD(01): 07
;			08:27:08    0.422 TD(08): FA AF 01 03 00 00 01 03
;			08:27:08   15.574 RD(38): FD DF 01 00 00 1E 01 10 60 05 00 01 00 0A ... 02 02 FF 00 8E
;			08:27:08    1.055 TD(08): FA AF 01 0D 00 00 01 0D
;			08:27:08   17.945 RD(76): FD DF 01 00 3C 44 01 24 00 22 00 00 06 01 ... 04 B0 04 14 05 DE
;			08:27:29        - TD(09): FA AF 01 00 24 01 01 01 24
;			08:27:29    1.736 TD(12): FA AF 01 09 1E 04 01 01 00 00 00 12
;			08:27:29  101.301RD(00):;			2006N116
;			-----------------------------------------------------------------------------------------
;			hh:mm:ss ʐMԊuiʂj ʐMO
;			}[N͎MG[iʐMA`FbNTG[j
;	2008/02/27 : 2.0b
;		gNOFF{^ǉ

#define	SoftName	"RS485-Basic"						;soft name
#define VerNum	 	"2.0b"								;version
#define	Copyright	"Copyright (C) 2006 Futaba Corporation"

#define ScrnX	700										;Screen Width
#define ScrnY	600 									;screen height

;/st@C쐬IvVw
; type=0(EXEt@C), orgpath=0(fBNgړ)
#packopt name "RS485-Basic"								;st@C
#packopt runtime "hsp3c.hrt"							;^C
#packopt hide 1											;EBhE\

;/ʂ̔\
;--------+---------+---------+---------+---------+---------+---------+---------+
; NɈu\̂𖳂B
; EXE쐬 uNCEBhE\vɂC[ExeWrightMod]
;--------+---------+---------+---------+---------+---------+---------+---------+
	gsel 0,-1											;ŏɉʔ\

#include "rs485header.as"								;RS485 header and module
#include "exobject.as"									;extension object macro
#include "rs485comm.as"									;RS485 communication module
#include "colorfulobject.as"							;Colorful object Module
#include "ExeWrightMod.hsp"								;Execution file Wright Module

;/[̏
;--------+---------+---------+---------+---------+---------+---------+---------+
; [̗̈ݒAp[^̃[h
;--------+---------+---------+---------+---------+---------+---------+---------+
;/ɏݖ߃W[̐ݒ:ExeWrightModW[ by v}
;--------+---------+---------+---------+---------+---------+---------+---------+
; INIt@C⃌WXgg킸Ag1KB̕ۑł܂B
;	f[^͐l^ϐp̔zƕ^ϐmoji̔z񂪒`ĂāA
;	킹1024bytẽgpłB
;		l^ϐp: p(0)->p(255)
;		^ϐmoji: moji(0)->moji(1023)
;--------+---------+---------+---------+---------+---------+---------+---------+
; p(100)̗̈gpAp(100)-(103)͉ʂ̂wxʒuEwxTCYɎgp
; p(104),p(105)͗\
#define pstart	100								;ŏ̔zԍ
#const	pScrnPosX			pstart				;ʂ̂wʒu
#const	pScrnPosY			pScrnPosX+1			;ʂ̂xʒu
#const	pScrnWidX			pScrnPosY+1			;ʂ̂wTCY
#const	pScrnWidY			pScrnWidX+1			;ʂ̂xTCY
#const	pID					pScrnWidY+3			;T[{hc
#const	pRS485ComNum		pID+1				;RS485|[gԍ
#const	pRS485BaudRate		pRS485ComNum+1		;RS485{[[g
#const	pManualNum			pRS485BaudRate+1	;蓮wߊpx
#const	pManualTime			pManualNum+1		;蓮wԊu
#const	pPosF1				pManualTime+1		;[F1]wߊpx
#const	pPosF2				pPosF1+1			;[F2]wߊpx
#const	pPosF3				pPosF2+1			;[F3]wߊpx
#const	pMoveTimeF1			pPosF3+1			;[F1]ړ
#const	pMoveTimeF2			pMoveTimeF1+1		;[F2]ړ
#const	pMoveTimeF3			pMoveTimeF2+1		;[F3]ړ
#const	pRepeatNum			pMoveTimeF3+1		;s[g
#const	pRepeatTime			pRepeatNum+1		;s[g
#const	pTorqueON			pRepeatTime+1		;ŃgNnm
#const	pSerialComm			pTorqueON+1			;AM
#const	pReturnData			pSerialComm+1		;Ń^[
#const	pReturnTypeNum		pReturnData+1		;^[ԍ
#const	pReturnType7		pReturnTypeNum+1	;ŎwoCg^[
#const	pAddressType7		pReturnType7+1		;woCg̊JnAhX
#const	pLengthType7		pAddressType7+1		;woCg̎MoCg
#const	pPresent			pLengthType7+1		;Ɏʒu\
#const	pShowlog			pPresent+1			;_CAO\
#const	pCommlog			pShowlog+1			;ʐM_CAO
#const	pAutoF1				pCommlog+1			;[F1]`FbNiAuto)
#const	pAutoF2				pAutoF1+1			;[F2]`FbNiAuto)
#const	pAutoF3				pAutoF2+1			;[F3]`FbNiAuto)

;/p[^̃[h
	onexit goto *exit_routine				;IĂяo
	DataLoad p,moji							;f[^zɃ[h
	; p[^̃N[ϐ
	dup ScrnPosX,p(pScrnPosX)
	dup ScrnPosY,p(pScrnPosY)
	dup ScrnWidX,p(pScrnWidX)
	dup ScrnWidY,p(pScrnWidY)
	dup ID,p(pID)
	dup RS485ComNum,p(pRS485ComNum)
	dup RS485BaudRate,p(pRS485BaudRate)
	dup ManualNum,p(pManualNum)
	dup ManualTime,p(pManualTime)
	dup PosF1,p(pPosF1)
	dup PosF2,p(pPosF2)
	dup PosF3,p(pPosF3)
	dup MoveTimeF1,p(pMoveTimeF1)
	dup MoveTimeF2,p(pMoveTimeF2)
	dup MoveTimeF3,p(pMoveTimeF3)
	dup RepeatNum,p(pRepeatNum)
	dup RepeatTime,p(pRepeatTime)
	dup TorqueON,p(pTorqueON)
	dup SerialComm,p(pSerialComm)
	dup ReturnData,p(pReturnData)
	dup ReturnTypeNum,p(pReturnTypeNum)
	dup ReturnType7,p(pReturnType7)
	dup AddressType7,p(pAddressType7)
	dup LengthType7,p(pLengthType7)
	dup Present,p(pPresent)
	dup Showlog,p(pShowlog)
	dup Commlog,p(pCommlog)
	dup AutoF1,p(pAutoF1)
	dup AutoF2,p(pAutoF2)
	dup AutoF3,p(pAutoF3)
	; eݒp[^̃ftHgl
	if ScrnWidX=0 { 							;1ԍŏ͉ʂ̂wTCY0Ȃ̂ŁB
		ScrnPosX=0
		ScrnPosY=0
		ScrnWidX=ScrnX
		ScrnWidY=ScrnY
		ID=1
		RS485ComNum=0
		RS485BaudRate=7
		ManualNum=0
		ManualTime=10
		PosF1=900
		PosF2=0
		PosF3=-900
		MoveTimeF1=0
		MoveTimeF2=0
		MoveTimeF3=0
		RepeatNum=-1
		RepeatTime=1000
		TorqueON=0
		SerialComm=0
		ReturnData=0
		ReturnTypeNum=4
		ReturnType7=0
		AddressType7=0
		LengthType7=60
		Present=0
		Showlog=0
		Commlog=0
		AutoF1=1
		AutoF2=0
		AutoF3=1
	}

;/[̗̈ݒ
	sdim buf,0x1000000		;ʐM_CAOobt@[
	notesel buf				;m[gpbh߂̃obt@ɐݒ

;/ʂ̏
;--------+---------+---------+---------+---------+---------+---------+---------+
; ʃTCYA^CgAtHgAwiACAbZ[W
;--------+---------+---------+---------+---------+---------+---------+---------+
;/XN[̏
	screen 2,ScrnWidX,ScrnWidY,screen_hide|screen_fixedsize,ScrnPosX,ScrnPosY	;ʏ,\,TCYŒ
	title2 SoftName + "  Version " + VerNum				;^Cg\
	font msgothic,14 : objmode 2						;tHg"lr SVbN"

	syscolor COLOR_3DFACE								;{^\ʃJ[
	mref bmscr,67 : BackColor=bmscr(40)
	boxf 0,0,ScrnWidX,ScrnWidY							;wiF(D)

;/3DC̕`
#const	Frame_x1	4
#const	Frame_y1	4
#const	Erase_x1	400
#const	Erase_x2	Erase_x1+272
	frame3d Frame_x1,Frame_y1,ScrnWidX-6,ScrnWidY-12,Erase_x1,Erase_x2

;/bZ[W̕`
#const	POS_y1	Frame_y1+15
#const	POS_y2	POS_y1+28
#const	POS_y3	POS_y2+28
#const	POS_y4	POS_y3+33
#const	POS_y5	POS_y4+28
#const	POS_y11	POS_y5+33
#const	POS_y12	POS_y11+18
#const	POS_y13	POS_y12+28
#const	POS_y14	POS_y13+28
#const	POS_y15	POS_y14+28
#const	POS_y21	POS_y14+38
#const	POS_y22	POS_y21+26

	color 0x7F,0x7F,0x7F								;ү(D)
	pos Erase_x1+8,ScrnWidY-18 : mes Copyright

;/JtIuWFNgW[̐ݒ:ӂ邨ԂLite by eƂ
;--------+---------+---------+---------+---------+---------+---------+---------+
; ̃EBhEŃIuWFNg̐F悤ɂB
;--------+---------+---------+---------+---------+---------+---------+---------+
	objcolorscreen

;/IuWFNg̔zu
;--------+---------+---------+---------+---------+---------+---------+---------+
; exobject.as ̃}NƃJtIuWFNgW[gp
;--------+---------+---------+---------+---------+---------+---------+---------+
; T[{IDX^eBbNRg[
	stcctl 20,POS_y1+3,70,14,"T[{hc",SS_RIGHT,ServoStcID
	objcolor ServoStcID,BackColor,RGB(0,0,0)
; T[{IDGfBbg{bNX
	edtctl 90,POS_y1,70,20,IDs,ES_RIGHT|ES_NUMBER,,SrvEdtID
	settext SrvEdtID,str(ID)
	objcolor SrvEdtID,RGB(255,255,191),RGB(255,0,0)
; T[{IDAbv_ERg[
	updnctl 160,POS_y1-1,15,20,0x100,ServoUpdownID
	updownrng ServoUpdownID,0,255
	updownpos ServoUpdownID,COMCTL_SET,ID
; ʐM|[gX^eBbNRg[
	stcctl 20,POS_y2+3,70,14,"ʐM|[g",SS_RIGHT,ComNumStcID
	objcolor ComNumStcID,BackColor,RGB(0,0,0)
; ʐM|[gR{{bNX
	cmbobj 90,POS_y2-1,90,24,RS485ComNum,80,"     COM1\n     COM2\n     COM3\n     COM4\n     COM5\n     COM6\n     COM7\n     COM8\n     COM9\n    COM10",ComNumcmbID
	objcolor ComNumcmbID,RGB(255,255,191),RGB(255,0,0)
; ʐMxX^eBbNRg[
	stcctl 20,POS_y3+3,70,14,"ʐM[g",SS_RIGHT,BaudRateStcID
	objcolor BaudRateStcID,BackColor,RGB(0,0,0)
; ʐMxR{{bNX
	cmbobj 90,POS_y3-1,90,24,RS485BaudRate,80,"    9,600\n   14,400\n   19,200\n   28,800\n   38,400\n   57,600\n   76,800\n  115,200\n  153,600\n  230,400\n  460,800\n  691,200\n1,382,400",BaudRatecmbID
	objcolor BaudRatecmbID,RGB(255,255,191),RGB(255,0,0)

; ʐMԊuX^eBbNRg[
	stcctl 500,POS_y13+3,85,14,"ʐMԊu(ms)",SS_LEFT,RealIntervaltextStcID
	objcolor RealIntervaltextStcID,BackColor,RGB(0,0,0)
; ʐMԊu\X^eBbNRg[
	stcctl 590,POS_y13+2,80,16,"",SS_SUNKEN|SS_RIGHT,RealIntervalTimeStcID
	objcolor RealIntervalTimeStcID,RGB(0,0,0),RGB(0,255,255)

; 0.1bɕ\`FbN{bNX
	chkobj 230,POS_y1+3,110,14,"0.1bɕ\",Present,PresentChkID
	objcolor PresentChkID,BackColor,RGB(0,0,0)
; ݈ʒuX^eBbNRg[
	stcctl 345,POS_y1+20,50,14,"ʒu",SS_CENTER,PresentPosiontextStcID
	objcolor PresentPosiontextStcID,BackColor,RGB(0,0,0)
; ݈ʒu\X^eBbNRg[
	stcctl 345,POS_y1+2,50,16,"",SS_SUNKEN|SS_RIGHT,PresentPosionStcID
	objcolor PresentPosionStcID,RGB(0,0,0),RGB(0,255,0)
; ݎԃX^eBbNRg[
	stcctl 400,POS_y1+20,50,14,"",SS_CENTER,PresentTimetextStcID
	objcolor PresentTimetextStcID,BackColor,RGB(0,0,0)
; ݎԕ\X^eBbNRg[
	stcctl 400,POS_y1+2,50,16,"",SS_SUNKEN|SS_RIGHT,PresentTimeStcID
	objcolor PresentTimeStcID,RGB(0,0,0),RGB(0,255,0)
; ݃Xs[hX^eBbNRg[
	stcctl 455,POS_y1+20,50,14,"x",SS_CENTER,PresentSpeedtextStcID
	objcolor PresentSpeedtextStcID,BackColor,RGB(0,0,0)
; ݃Xs[h\X^eBbNRg[
	stcctl 455,POS_y1+2,50,16,"",SS_SUNKEN|SS_RIGHT,PresentSpeedStcID
	objcolor PresentSpeedStcID,RGB(0,0,0),RGB(0,255,0)
; ݕ׃X^eBbNRg[
	stcctl 510,POS_y1+20,50,14,"",SS_CENTER,PresentLoadtextStcID
	objcolor PresentLoadtextStcID,BackColor,RGB(0,0,0)
; ݕו\X^eBbNRg[
	stcctl 510,POS_y1+2,50,16,"",SS_SUNKEN|SS_RIGHT,PresentLoadStcID
	objcolor PresentLoadStcID,RGB(0,0,0),RGB(0,255,0)
; ݈ʒuX^eBbNRg[
	stcctl 565,POS_y1+20,50,14,"x",SS_CENTER,PresentTemptextStcID
	objcolor PresentTemptextStcID,BackColor,RGB(0,0,0)
; ݉x\X^eBbNRg[
	stcctl 565,POS_y1+2,50,16,"",SS_SUNKEN|SS_RIGHT,PresentTempStcID
	objcolor PresentTempStcID,RGB(0,0,0),RGB(0,255,0)

; gNON{^
	btnobj 20,POS_y4,80,20,"gNON",*btn_TorqueON,TorqueONBtnID
; gNOFF{^
	btnobj 20,POS_y5,80,22,"gNOFF",*btn_TorqueOFF,TorqueOFFBtnID
; ŃgNON`FbN{bNX
	chkobj 105,POS_y4+3,80,14,"M",TorqueON,TorqueONChkID
	objcolor TorqueONChkID,BackColor,RGB(0,0,0)
; ^[{^
	btnobj 190,POS_y4,80,20,"^[",*btn_RequestTypeX,ReturnDataBtnID
; Ń^[`FbN{bNX
	chkobj 275,POS_y4+3,80,14,"M",ReturnData,ReturnDataChkID
	objcolor ReturnDataChkID,BackColor,RGB(0,0,0)
; ^[^CvR{{bNX
	cmbobj 360,POS_y4-1,150,24,ReturnTypeNum,60,"ACK/NAK^[\n0-29^[\n30-59^[\n20-29^[\n42-59^[\n30-41^[\n60-127/139^[",ReturnTypeNumCmbID
	objcolor ReturnTypeNumCmbID,BackColor,RGB(0,0,255)

; woCg{^
	btnobj 190,POS_y5,80,20,"woCg",*btn_RequestType7,ReturnType7BtnID
; ŎwoCg^[`FbN{bNX
	chkobj 275,POS_y5+3,80,14,"M",ReturnType7,ReturnType7ChkID
	objcolor ReturnType7ChkID,BackColor,RGB(0,0,0)
; JnAhXX^eBbNRg[
	stcctl 360,POS_y5+3,60,14,"AhX",0,AddressType7StcID
	objcolor AddressType7StcID,BackColor,RGB(0,0,0)
; JnAhXGfBbgRg[
	edtctl 420,POS_y5+2,35,16,AddressType7s,ES_RIGHT|ES_NUMBER,,AddressType7EdtID
	settext AddressType7EdtID,str(AddressType7)
	objcolor AddressType7EdtID,BackColor,RGB(0,0,255)
; JnAhXAbv_ERg[
	updnctl 455,POS_y5,15,20,0x100,AddressType7UpdownID
	updownrng AddressType7UpdownID,0,60
	updownpos AddressType7UpdownID,COMCTL_SET,AddressType7
; MoCgX^eBbNRg[
	stcctl 475,POS_y5+3,60,14,"oCg",0,LengthType7StcID
	objcolor LengthType7StcID,BackColor,RGB(0,0,0)
; MoCgGfBbgRg[
	edtctl 535,POS_y5+2,35,16,LengthType7s,ES_RIGHT|ES_NUMBER,,LengthType7EdtID
	objcolor LengthType7EdtID,BackColor,RGB(0,0,255)
	settext LengthType7EdtID,str(LengthType7)
; MoCgAbv_ERg[
	updnctl 570,POS_y5,15,20,0x100,LengthType7UpdownID
	updownrng LengthType7UpdownID,0,140
	updownpos LengthType7UpdownID,COMCTL_SET,LengthType7

; AM`FbN{bNX
	chkobj 500,POS_y12+3,105,14,"AM(b)",SerialComm,SerialCommChkID
	objcolor SerialCommChkID,BackColor,RGB(0,0,0)
; wߊԊuGfBbgRg[
	edtctl 610,POS_y12+2,45,16,ManualTimes,ES_RIGHT,,ManualTimeEdtID
	settext ManualTimeEdtID,strf("%0.3f",double(ManualTime)/1000)
	objcolor ManualTimeEdtID,BackColor,RGB(0,0,255)
; wߊԊuAbv_ERg[
	updnctl 655,POS_y12,15,20,0x100,ManualTimeUpdownID
	updownrng ManualTimeUpdownID,1,200
	updownpos ManualTimeUpdownID,COMCTL_SET,ManualTime

; 蓮w߃gbNo[Rg[
	trbctl 230,POS_y2+14,347,32,TBS_TOP,ManualTrbID
	objcolor ManualTrbID,BackColor,RGB(0,0,0)
	objcursor ManualTrbID,IDC_HAND
	trackrng ManualTrbID,-1600,1600
	repeat 159 : trackmrk ManualTrbID,1,(cnt*20+20)-1600 : loop			;Trackbarڐ
	trackpos ManualTrbID,COMCTL_SET,ManualNum
; 蓮w߃X^eBbNRg[
	stcctl 585,POS_y2+14,50,16,"",SS_SUNKEN|SS_RIGHT,ManualStcID
	settext ManualStcID,strf("%0.1f",double(ManualNum)/10)
	objcolor ManualStcID,RGB(191,255,0),RGB(0,0,0)
; 蓮w߃Abv_ERg[
	updnctl 585,POS_y2+32,50,14,0x140, ManualUpdownID
	updownrng ManualUpdownID,-1600,1600
	updownpos ManualUpdownID,COMCTL_SET,ManualNum

; [Fx]O[v{bNX
	SetWindowLong hwnd, -16, GetWindowLong (hwnd, -16) ^ $2000000
	pos 15,POS_y11 : objsize 275,100
	chkbox "        w߈ʒu(x)  ړ(b)", x : FxGbxID=stat
	sendmsg objinfo (stat, 2), $F4, $7
	objcolor FxGbxID,BackColor,RGB(0,0,0)

; [F1]{^
	btnobj 25,POS_y12,50,20,"[F1]",*btn_PosF1,PosF1BtnID
; [F1]`FbN{bNX
	chkobj 80,POS_y12+3,15,14,"",AutoF1,AutoF1ChkID
	objcolor AutoF1ChkID,BackColor,RGB(0,0,0)
; [F1]wߊpxGfBbgRg[
	edtctl 100,POS_y12+2,70,16,PosF1s,ES_RIGHT,,PosF1EdtID
	settext PosF1EdtID,strf("%0.1f",double(PosF1)/10)
	objcolor PosF1EdtID,BackColor,RGB(0,0,255)
; [F1]wߊpxAbv_ERg[
	updnctl 170,POS_y12,15,20,0x100,PosF1UpdownID
	updownrng PosF1UpdownID,-1500,1500
	updownpos PosF1UpdownID,COMCTL_SET,PosF1 
; [F1]ړԃGfBbgRg[
	edtctl 195,POS_y12+2,70,16,MoveTimeF1s,ES_RIGHT,,MoveTimeF1EdtID
	settext MoveTimeF1EdtID,strf("%0.2f",double(MoveTimeF1)/100)
	objcolor MoveTimeF1EdtID,BackColor,RGB(0,0,255)
; [F1]ړԃAbv_ERg[
	updnctl 265,POS_y12,15,20,0x100,MoveTimeF1UpdownID
	updownrng MoveTimeF1UpdownID,0,1000
	updownpos MoveTimeF1UpdownID,COMCTL_SET,MoveTimeF1

; [F2]{^
	btnobj 25,POS_y13,50,20,"[F2]",*btn_PosF2,PosF2BtnID
; [F2]`FbN{bNX
	chkobj 80,POS_y13+3,15,14,"",AutoF2,AutoF2ChkID
	objcolor AutoF2ChkID,BackColor,RGB(0,0,0)
; [F2]wߊpxGfBbgRg[
	edtctl 100,POS_y13+2,70,16,PosF2s,ES_RIGHT,,PosF2EdtID
	settext PosF2EdtID,strf("%0.1f",double(PosF2)/10)
	objcolor PosF2EdtID,BackColor,RGB(0,0,255)
; [F2]wߊpxAbv_ERg[
	updnctl 170,POS_y13,15,20,0x100,PosF2UpdownID
	updownrng PosF2UpdownID,-1500,1500
	updownpos PosF2UpdownID,COMCTL_SET,PosF2
; [F2]ړԃGfBbgRg[
	edtctl 195,POS_y13+2,70,16,MoveTimeF2s,ES_RIGHT,,MoveTimeF2EdtID
	settext MoveTimeF2EdtID,strf("%0.2f",double(MoveTimeF2)/100)
	objcolor MoveTimeF2EdtID,BackColor,RGB(0,0,255)
; [F2]ړԃAbv_ERg[
	updnctl 265,POS_y13,15,20,0x100,MoveTimeF2UpdownID
	updownrng MoveTimeF2UpdownID,0,1000
	updownpos MoveTimeF2UpdownID,COMCTL_SET,MoveTimeF2

; [F3]{^
	btnobj 25,POS_y14,50,20,"[F3]",*btn_PosF3,PosF3BtnID
; [F3]`FbN{bNX
	chkobj 80,POS_y14+3,15,14,"",AutoF3,AutoF3ChkID
	objcolor AutoF3ChkID,BackColor,RGB(0,0,0)
; [F3]wߊpxGfBbgRg[
	edtctl 100,POS_y14+2,70,16,PosF3s,ES_RIGHT,,PosF3EdtID
	settext PosF3EdtID,strf("%0.1f",double(PosF3)/10)
	objcolor PosF3EdtID,BackColor,RGB(0,0,255)
; [F3]wߊpxAbv_ERg[
	updnctl 170,POS_y14,15,20,0x100,PosF3UpdownID
	updownrng PosF3UpdownID,-1500,1500
	updownpos PosF3UpdownID,COMCTL_SET,PosF3
; [F3]ړԃGfBbgRg[
	edtctl 195,POS_y14+2,70,16,MoveTimeF3s,ES_RIGHT,,MoveTimeF3EdtID
	settext MoveTimeF3EdtID,strf("%0.2f",double(MoveTimeF3)/100)
	objcolor MoveTimeF3EdtID,BackColor,RGB(0,0,255)
; [F3]ړԃAbv_ERg[
	updnctl 265,POS_y14,15,20,0x100,MoveTimeF3UpdownID
	updownrng MoveTimeF3UpdownID,0,1000
	updownpos MoveTimeF3UpdownID,COMCTL_SET,MoveTimeF3

; sO[v{bNX
	pos 300,POS_y11 : objsize 180,100
	chkbox "    Ԋu(b) ", x : RepeatGbxID=stat
	sendmsg objinfo (stat, 2), $F4, $7
	objcolor RepeatGbxID,BackColor,RGB(0,0,0)

; s[g񐔃GfBbgRg[
	edtctl 310,POS_y12+2,60,16,RepeatNums,ES_RIGHT,,RepeatNumEdtID
	if RepeatNum=-1 : RepeatNums="" : else : RepeatNums=str(RepeatNum)
	settext RepeatNumEdtID,RepeatNums
	objcolor RepeatNumEdtID,BackColor,RGB(0,0,255)
; s[g񐔃Abv_ERg[
	updnctl 370,POS_y12,15,20,0x100,RepeatNumUpdownID
	updownrng RepeatNumUpdownID,-1,10000
	updownpos RepeatNumUpdownID,COMCTL_SET,RepeatNum
; s[gԊuGfBbgRg[
	edtctl 395,POS_y12+2,60,16,RepeatTimes,ES_RIGHT,,RepeatTimeEdtID
	settext RepeatTimeEdtID,strf("%0.3f",double(RepeatTime)/1000)
	objcolor RepeatTimeEdtID,BackColor,RGB(0,0,255)
; s[gԊuAbv_ERg[
	updnctl 455,POS_y12,15,20,0x100,RepeatTimeUpdownID
	updownrng RepeatTimeUpdownID,1,10000
	updownpos RepeatTimeUpdownID,COMCTL_SET,RepeatTime

; X^[g{^
	btnobj 310,POS_y13,160,20,"X^[g",*btn_Auto,AutoBtnID
; ʕۑ{^
	btnobj 500,POS_y14,170,20,"ʕۑ",*btn_Capture,CaptureBtnID
; Xgbv[F12]{^
	btnobj 310,POS_y14,160,20,"Xgbv[F12]",*btn_Stop,StopBtnID

; ʐM_CAO`FbN{bNX
	chkobj 15,POS_y21+3,150,14,"ʐM_CAOL^",Commlog,CommlogChkID
	objcolor CommlogChkID,BackColor,RGB(0,0,0)
; \(ʐM_CAO)`FbN{bNX
	chkobj 170,POS_y21+3,80,14,"O\",Showlog,ShowlogChkID
	objcolor ShowlogChkID,BackColor,RGB(0,0,0)
; TCYX^eBbNRg[
	stcctl 325,POS_y21+3,130,14,"[gpoCg",SS_RIGHT,BufSizeTextStcID
	objcolor BufSizeTextStcID,BackColor,RGB(0,0,0)
; TCY\X^eBbNRg[
	stcctl 455,POS_y21+2,70,16,"",SS_SUNKEN|SS_RIGHT,BufSizeStcID
	objcolor BufSizeStcID,BackColor,RGB(0,0,0)
; ʐM_CAObZ[W{bNX
	pos 15,POS_y22 : mesbox buf,670,270,4 : DataMsbxID=stat
	objcolor DataMsbxID,BackColor,RGB(0,0,0)

; {^
	btnobj 530,POS_y21,50,20,"",*btn_LogClear,LogClearBtnID
; t@Cۑ{^
	btnobj 585,POS_y21,100,20,"t@Cۑ",*btn_FileSave,FileSaveBtnID

;--------+---------+---------+---------+---------+---------+---------+---------+
;/VA|[g̐ݒ
;--------+---------+---------+---------+---------+---------+---------+---------+
;/RS485<->USBRo[^(BTE061),PCI<->RS485 CONTEC COM-2PD(PCI)H̃hCo[`FbN
; hCo[COM3-10COM1ɖ߂
	Directory=dir_cur								;ÑJgfBNg
	do
		if RS485ComNum<=1 : _break
		chdir dir_sys+"\\drivers"			;\system32\driversɈړ
		dirlist reg,"ftser2k.sys"			;ftser2k.sys̃`FbN
		if reg="ftser2k.sys\n" : _break
		dirlist reg,"ComDrv2k.sys"			;ComDrv2k.sys̃`FbN
		if reg="ComDrv2k.sys\n" : _break
		p(pRS485ComNum)=0 : RS485ComNum=p(pRS485ComNum) : objprm ComNumcmbID,RS485ComNum 
	until
	chdir Directory									;ÑJgfBNgɖ߂

;/VA|[g̃I[v
	rs485open RS485ComNum, RS485BaudRate	;Timeout 100ms

;--------+---------+---------+---------+---------+---------+---------+---------+
;/ݏ̏ݒ
;--------+---------+---------+---------+---------+---------+---------+---------+
;/^C}[̊
#define WM_TIMER		0x113
#define ID_TIMER		1							;100ms timer ID
	oncmd  gosub *inttimer, WM_TIMER 
	SetTimer hwnd, ID_TIMER, 100, 0

;/IuWFNg̊
#define  WM_HSCROLL	0x114
#define  WM_VSCROLL	0x115
#define  WM_COMMAND	0x111
	oncmd gosub *hscroll,WM_HSCROLL
	oncmd gosub *vscroll,WM_VSCROLL
	oncmd gosub *command,WM_COMMAND

;/L[̊
	onkey gosub *intkey

;--------+---------+---------+---------+---------+---------+---------+---------+
;/C[`̏
;--------+---------+---------+---------+---------+---------+---------+---------+
	gsel 2,1										;CʑI\

	CommandPosition=ManualNum
	gosub *communication_LogClear					;ʐM_CAȌ
	gosub *btn_Stop

;/C[`
;--------+---------+---------+---------+---------+---------+---------+---------+
; C[`1msɃ[vCommNum̏
;  CommNum=0: nop(Ȃ)
;  CommNum=1: trackbar(gbNo[̒ʐM)
;  CommNum=2: F1pos(F1̒ʐM)
;  CommNum=3: F2pos(F2̒ʐM)
;  CommNum=4: F3pos(F3̒ʐM)
;  CommNum=5: TorqueON(ٸON̒ʐM)
;  CommNum=6: RequestType4(42-59݂̒ʐM)
;  CommNum=7: RequestType7(w޲Đ݂̒ʐM)
;  CommNum=6: RequestTypeX(RequestType[0-6]̒ʐM)
;  CommNum=9: LogClear(_CAO̒ʐM)
;  CommNum=10: TorqueOFF(ٸOFF̒ʐM)
;--------+---------+---------+---------+---------+---------+---------+---------+
	repeat -1
		Newtime=aTimeGetTime(OldTime)	;await+TimeGetTime֐(>=1ms)
		if Autoflg {
			;/ Auto[h
			if ((Newtime-OldTime>=RepeatTime)|(AutoCnt=-1))&(CommNum<=4) {
				OldTime=Newtime
				repeat 4
					AutoCnt++
					if (AutoCnt>>2)=RepeatNum : CommNum=0 : break
					if AutoF1&((AutoCnt&3)=0) : CommNum=2 : break
					if AutoF2&((AutoCnt&3)=1) : CommNum=3 : break
					if AutoF3&((AutoCnt&3)=2) : CommNum=4 : break
					if (AutoF1&AutoF2&AutoF3)&((AutoCnt&3)=3) : CommNum=3 : break
				loop
				if CommNum=0 : gosub *btn_Stop
			}
		}
		else {
			if SerialComm {
				;/ AM[h
				if (Newtime-OldTime>=ManualTime)&(CommNum<=4) {
					OldTime=Newtime : CommNum=1	;gosub *communication_trackbar
				}
			}
			else {
				;/ ʏ탂[h
				wait 1
				Newtime=aTimeGetTime(OldTime)	;await+TimeGetTime֐(>=1ms)
				OldTime=Newtime
				if ManualTime<1 : ManualTime=1 : settext ManualTimeEdtID,strf("%0.3f",double(ManualTime)/1000)
				if RepeatTime<1 : RepeatTime=1 : settext RepeatTimeEdtID,strf("%0.3f",double(RepeatTime)/1000)
			}
		}

;		;/ ^C}[
		if Presentflg&(CommNum=0) : CommNum=6		;gosub *communication_RequestType4

		on CommNum gosub	*communication_nop,*communication_Position,*communication_Position,*communication_Position,*communication_Position,*communication_TorqueON,*communication_RequestType4,*communication_RequestType7,*communication_RequestTypeX,*communication_LogClear,*communication_TorqueOFF,*communication_RequestType1
		Presentflg=0 : CommNum=0

	loop

	end

; ʐMTu[`
*communication_nop	;CommNum=0: nop(Ȃ)
	return

;*communication_Position
;	CommNum=1: trackbar(gbNo[̒ʐM)
;	CommNum=2: F1pos(F1̒ʐM)
;	CommNum=3: F2pos(F2̒ʐM)
;	CommNum=4: F3pos(F3̒ʐM)
*communication_Position
	switch CommNum
	case 1
		CommandPosition=ManualNum : CommandTime=0
		swbreak
	case 2
		CommandPosition=PosF1 : CommandTime=MoveTimeF1
		swbreak
	case 3
		CommandPosition=PosF2 : CommandTime=MoveTimeF2
		swbreak
	case 4
		CommandPosition=PosF3 : CommandTime=MoveTimeF3
		swbreak
	swend
	if TorqueON : gosub *communication_TorqueON
	if TorqueOFF : gosub *communication_TorqueOFF
	gosub *communicationtimeA : SetPositionTime ID,CommandPosition,CommandTime,cnd(ReturnData,ReturnTypeNum<<1|1,0) : gosub *Transmitbuf
	if ReturnData : gosub *communication_ReceiveTypeX
	if ReturnType7 : gosub *communication_RequestType7
	return

*communication_TorqueON	;CommNum=5: TorqueON(ٸON̒ʐM)
	gosub *communicationtimeB : SetTorqueON ID : gosub *Transmitbuf
	return

*communication_RequestType4	;CommNum=6: RequestType4(42-59݂̒ʐM)
	gosub *communicationtimeB : GetReturnData ID,9 : gosub *Transmitbuf
	gosub *communicationtimeB : gosub *Receivebuf
	if CheckSumFlg&(Present|ReturnData) : RefreshPresent=1
	return

*communication_RequestType7	;CommNum=7: RequestType7(w޲Đ݂̒ʐM)
	gosub *communicationtimeB : GetReturnData ID,15,AddressType7,LengthType7 : gosub *Transmitbuf
	gosub *communicationtimeB : gosub *Receivebuf
	return

*communication_RequestTypeX	;CommNum=6: RequestType(0-6)
	gosub *communicationtimeB : GetReturnData ID,ReturnTypeNum<<1|1 : gosub *Transmitbuf
*communication_ReceiveTypeX
	gosub *communicationtimeB : gosub *Receivebuf
	return

*communication_LogClear	;CommNum=9: LogClear(_CAO̒ʐM)
	Buf=str(gettime(0))+"N"+str(gettime(1))+""+str(gettime(3))+""+"\n"
	gosub *communication_RequestType0
	gosub *communication_RequestType1
	settext BufSizeStcID,str(notesize/1000)+"kB"
	return

*communication_TorqueOFF	;CommNum=10: TorqueOFF(ٸOFF̒ʐM)
	gosub *communicationtimeB : SetTorqueOFF ID : gosub *Transmitbuf
	return
	
*communication_RequestType0
	gosub *communicationtimeB : GetReturnData ID,1 : gosub *Transmitbuf
	gosub *communicationtimeB : gosub *Receivebuf
	return
*communication_RequestType1
	gosub *communicationtimeB : GetReturnData ID,3 : gosub *Transmitbuf
	gosub *communicationtimeB : gosub *Receivebuf
	return
*communication_RequestType6
	gosub *communicationtimeB : GetReturnData ID,13 : gosub *Transmitbuf
	gosub *communicationtimeB : gosub *Receivebuf
	return

;/ʒuw߂ʐMƂ
*communicationTimeA
	reg=qpctime(0)*1000
	if (reg>=0)&(reg<10000) : reg=strf("%8.3f",reg) : else : reg="       -"
	Timelog=strf("%02d",gettime(4))+":"+strf("%02d",gettime(5))+":"+strf("%02d",gettime(6))+" "+reg
	reg=qpctime(1)*1000
	if (reg>=0)&(reg<50000) : settext RealIntervalTimeStcID,strf("%0.3f",reg) : else : settext RealIntervalTimeStcID,"-"
	return

;/ʒuw߈ȊOʐMƂ
*communicationTimeB
	reg=qpctime(0)*1000
	if (reg>=0)&(reg<10000) : reg=strf("%8.3f",reg) : else : reg="       -"
	Timelog=strf("%02d",gettime(4))+":"+strf("%02d",gettime(5))+":"+strf("%02d",gettime(6))+" "+reg
	return
*communicationTimeC
	reg=qpctime(0)*1000
	if (reg>=0)&(reg<10000) : reg=strf("%8.3f",reg) : else : reg="       -"
	Timelog=strf("%02d",gettime(4))+":"+strf("%02d",gettime(5))+":"+strf("%02d",gettime(6))+" "+reg
	return

;/Mf[^̏
*Transmitbuf
	if Commlog	{
		reg="" : bufflg=1
		repeat TransmitByte
			reg=reg+" "+strf("%02x",peek(TransmitData,cnt))
		loop
		CharUpper varptr(reg) : noteadd Timelog+" TD("+strf("%02d",TransmitByte)+"):"+reg
		settext BufSizeStcID,str(notesize/1000)+"kB"
	}
	return
;/Mf[^̏
*Receivebuf
	if Commlog	{
		if ReceiveByte>=8 {
			reg="" : bufflg=1
			repeat ReceiveByte
				reg=reg+" "+strf("%02x",peek(ReceiveData,cnt))
			loop
			CharUpper varptr(reg)
			if CheckSumFlg {
				noteadd Timelog+" RD("+strf("%02d",ReceiveByte)+"):"+reg
			} else {
				noteadd Timelog+"RD("+strf("%02d",ReceiveByte)+"):"+reg
			}
			settext BufSizeStcID,str(notesize/1000)+"kB"
		}
		else {
			if ReceiveByte=1 {
				reg=" "+strf("%02x",peek(ReceiveData,0))
				CharUpper varptr(reg) : noteadd Timelog+" RD("+strf("%02d",ReceiveByte)+"):"+reg
				settext BufSizeStcID,str(notesize/1000)+"kB"
			}
			else {
				reg="" : bufflg=1
				repeat ReceiveByte
					reg=reg+" "+strf("%02x",peek(ReceiveData,cnt))
				loop
				CharUpper varptr(reg) : noteadd Timelog+"RD("+strf("%02d",ReceiveByte)+"):"+reg
				settext BufSizeStcID,str(notesize/1000)+"kB"
			}
		}
	}
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; {^̏
;--------+---------+---------+---------+---------+---------+---------+---------+
;/{^[F1]
*btn_PosF1
	if SerialComm { 
		ManualNum=PosF1
		trackpos ManualTrbID,COMCTL_SET,ManualNum
		updownpos ManualUpdownID,COMCTL_SET,ManualNum
		settext ManualStcID,strf("%0.1f",double(ManualNum)/10);蓮px\
	} else {
		CommNum=2	;gosub *communication_F1pos
	}
	return

;/{^[F2]
*btn_PosF2
	if SerialComm { 
		ManualNum=PosF2
		trackpos ManualTrbID,COMCTL_SET,ManualNum
		updownpos ManualUpdownID,COMCTL_SET,ManualNum
		settext ManualStcID,strf("%0.1f",double(ManualNum)/10);蓮px\
	} else {
		CommNum=3	;gosub *communication_F2pos
	}
	return

;/{^[F3]
*btn_PosF3
	if SerialComm { 
		ManualNum=PosF3
		trackpos ManualTrbID,COMCTL_SET,ManualNum
		updownpos ManualUpdownID,COMCTL_SET,ManualNum
		settext ManualStcID,strf("%0.1f",double(ManualNum)/10);蓮px\
	} else {
		CommNum=4	;gosub *communication_F3pos
	}
	return

;/{^[X^[g]
*btn_Auto
	Autoflg=1  : AutoCnt=-1
	objprm SerialCommChkID,0
	return

;/{^[gNON]
*btn_TorqueON
	CommNum=5	;gosub *communication_TorqueON
	return

;/{^[gNOFF]
*btn_TorqueOFF
	CommNum=10	;gosub *communication_TorqueOFF
	return
	
;/{^[^[]
*btn_RequestTypeX
	CommNum=8	;gosub *communication_RequestTypeX
	return

;/{^[woCg]
*btn_RequestType7
	CommNum=7	;gosub *communication_RequestType7
	return

;/{^[Xgbv]
*btn_Stop
	Autoflg=0 : objsel StopBtnID
	return

;/{^[ʕۑ]
*btn_Capture
	objenable CaptureBtnID,0 : wait 100		;[capture]gps

	ScreenCapture 0,0,ginfo_sizex,ginfo_sizey,ginfo_wx1,ginfo_wy1

	Directory=dir_cur								;ÑJgfBNg
	dirlist dir,"*.*",5
	if instr(dir,0,"capture")=-1 : mkdir "capture"
	chdir dir_cur+"\\capture"						;\capturefBNgɈړ
	dialog "bmp",17,"ʕۑ"
	if stat : bmpsave refstr : else : bmpsave "screen.bmp"
	chdir Directory									;ÑJgfBNgɈړ

	gsel 2											;CʑI
	objenable CaptureBtnID,1						;[capture]gp
	return

;/{^[]
*btn_LogClear
	CommNum=9	;gosub *communication_LogClear
	return

;/{^[t@Cۑ]
*btn_FileSave
	notesel buf
	notesave "logfile.txt"			; eLXgt@CZ[u
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; L[荞݂̏
;--------+---------+---------+---------+---------+---------+---------+---------+
#define VK_F1	0x70
#define VK_F2	0x71
#define VK_F3	0x72
#define VK_F12	0x7B
*intkey
	switch wparam
	case VK_F1	;[F1]
		gosub *btn_PosF1
		swbreak
	case VK_F2	;[F2]
		gosub *btn_PosF2
		swbreak
	case VK_F3	;[F3]
		gosub *btn_PosF3
		swbreak
	case VK_F12	;[F12]
		gosub *btn_Stop
		swbreak
	swend
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; ^C}[荞݂̏
;--------+---------+---------+---------+---------+---------+---------+---------+
*inttimer
#define	EM_SETSEL		0xB1	;bZ[W{bNX̃J[\̈ʒuݒ肷
#define	EM_SCROLLCARET	0xB7	;J[\̈ʒuʓɂĂ 

	if ginfo_sel=3 : return		;ʕۑ

	if Present {
		Presentflg=1
	} else {
		settext PresentPosionStcID,""
		settext PresentTimeStcID,""
		settext PresentSpeedStcID,""
		settext PresentLoadStcID,""
		settext PresentTempStcID,""
	}

	if RefreshPresent {
	;݃f[^\̏
		RefreshPresent=0

		;/ ݈ʒu
		settext PresentPosionStcID,strf("%0.1f",double(GetBufPresentPosion(ID))/10)
		switch abs(GetBufPresentPosion(ID)-CommandPosition)
		case 0
		case 1
		case 2
		case 3
			objcolor PresentPosionStcID,RGB(0,0,0),RGB(0,255,0)		;<}0.3()
			swbreak
		case 4
		case 5
			objcolor PresentPosionStcID,RGB(0,0,0),RGB(255,255,0)	;}0.4-0.5()
			swbreak
		case 6
		case 7
		case 8
		case 9
			objcolor PresentPosionStcID,RGB(0,0,0),RGB(255,191,0)	;}0.6-0.9()
			swbreak
		default
			objcolor PresentPosionStcID,RGB(0,0,0),RGB(255,0,0)		;>}1.0()
			swbreak
		swend

		;/ ݎ
		settext PresentTimeStcID,strf("%0.2f",double(GetBufPresentTime(ID))/100)

		;/ ݃Xs[h
		settext PresentSpeedStcID,str(GetBufPresentSpeed(ID))

		;/ ݕ
		if (GetBufModelNumber(ID)&0xFF00)=0x3000 {
			settext PresentLoadStcID,strf("%0.0f",double(GetBufPresentLoad(ID)))
		} else {
			settext PresentLoadStcID,strf("%0.0f",double(GetBufPresentLoad(ID))*6.6)
		}

		;/ ݉x
		settext PresentTempStcID,str(GetBufPresentTemp(ID))
		if (GetBufModelNumber(ID)&0xFF00)=0x3000 {				;RS30x
			Tempreg=limit(GetBufPresentTemp(ID),0,80)
			if Tempreg>50 {
				objcolor PresentTempStcID,RGB(0,0,0),RGB(255,255-(Tempreg-51)*8,0)	;()->()
			} else {
				if Tempreg>20 {
					objcolor PresentTempStcID,RGB(0,0,0),RGB((Tempreg-21)*8,255,0)			;()->()
				} else {
					objcolor PresentTempStcID,RGB(0,0,0),RGB(0,255,255-Tempreg*12)			;()->()
				}
			}
		} else {
			objcolor PresentTempStcID,RGB(0,0,0),RGB(0,255,0)	;()
		}
	}

	if Showlog {
	;ʐM_CAȌ
		if bufflg|(Showlog!Showlogbuf) {
			;/\tbV
			Showlogbuf=Showlog : bufflg=0
			objprm DataMsbxID,buf
			sendmsg objinfo(DataMsbxID,2),EM_SETSEL,notesize,notesize
			sendmsg objinfo(DataMsbxID,2),EM_SCROLLCARET,0,0
		}
	} else {
		if Showlog!Showlogbuf {
			;/\
			Showlogbuf=Showlog
			settext DataMsbxID,""
		}
	}
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; Abv_ERg[ƃgbNo[̓eςƂ̏
;--------+---------+---------+---------+---------+---------+---------+---------+
#define	SB_LINELEFT			0	;1PʃXN[
#define	SB_LINERIGHT		1	;E1PʃXN[
#define	SB_PAGELEFT			2	;փEBhE̕XN[
#define	SB_PAGERIGHT		3	;EփEBhE̕XN[
#define	SB_THUMBPOSITION	4	;XN[{bNX𑀍삵
#define	SB_THUMTRACK		5	;XN[{bNX𑀍쒆
#define	SB_LEFT				6	;ɃXN[
#define	SB_RIGHT			7	;EɃXN[
#define	SB_ENDSCROLL		8	;XN[I

*hscroll
	switch lparam
	case objinfo_hwnd(ManualTrbID)	;蓮w߃gbNo[Rg[
		switch wparam&0x0F
		case SB_PAGELEFT
		case SB_PAGERIGHT
		case SB_THUMTRACK
			trackpos ManualTrbID,COMCTL_GET,NULL : ManualNum=stat
			updownpos ManualUpdownID,COMCTL_SET,ManualNum
			settext ManualStcID,strf("%0.1f",double(ManualNum)/10)
			if Autoflg=0 {
				CommNum=1	;gosub *communication_trackbar
			}
			swbreak
		swend
		swbreak
	case objinfo_hwnd(ManualUpdownID)	;蓮w߃Abv_ERg[
		switch wparam&0x0F
		case SB_THUMBPOSITION
			updownpos ManualUpdownID,COMCTL_GET,NULL : ManualNum=stat
			trackpos ManualTrbID,COMCTL_SET,ManualNum
			settext ManualStcID,strf("%0.1f",double(ManualNum)/10)
			if Autoflg=0 {
				CommNum=1	;gosub *communication_trackbar
			}
			swbreak
		swend
		swbreak
	swend
	
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; Abv_ERg[̓eςƂ̏
;--------+---------+---------+---------+---------+---------+---------+---------+
#define	SB_LINEUP			0	;
#define	SB_LINEDOWN			1	;
#define	SB_PAGEUP			2	;y[WAbv
#define	SB_PAGEDOWN			3	;y[WAbv
;#define	SB_THUMBPOSITION	4	;lParam̉ʃ[hɃT̈ʒu
;#define	SB_THUMTRACK		5	;Tړ
#define	SB_TOP				6	;[HOME]L[ꂽ
#define	SB_BOTTMOM			7	;EɃXN[
;#define	SB_ENDSCROLL		8	;[END]L[ꂽ

*vscroll
	switch wparam&0x0F
	case SB_TOP
	case SB_BOTTMOM
	case SB_THUMBPOSITION
	case SB_THUMTRACK
		switch lparam
		case objinfo_hwnd(PosF1UpdownID)		;[F1]wߊpxAbv_ERg[
			updownpos PosF1UpdownID,COMCTL_GET,NULL : PosF1=stat 
			settext PosF1EdtID,strf("%0.1f",double(PosF1)/10)
			swbreak
		case objinfo_hwnd(MoveTimeF1UpdownID)		;[F1]ړԃAbv_ERg[
			updownpos MoveTimeF1UpdownID,COMCTL_GET,NULL : MoveTimeF1=stat
			settext MoveTimeF1EdtID,strf("%0.2f",double(MoveTimeF1)/100)
			swbreak
		case objinfo_hwnd(PosF2UpdownID)		;[F2]wߊpxAbv_ERg[
			updownpos PosF2UpdownID,COMCTL_GET,NULL : PosF2=stat
			settext PosF2EdtID,strf("%0.1f",double(PosF2)/10)
			swbreak
		case objinfo_hwnd(MoveTimeF2UpdownID)		;[F2]ړԃAbv_ERg[
			updownpos MoveTimeF2UpdownID,COMCTL_GET,NULL : MoveTimeF2=stat
			settext MoveTimeF2EdtID,strf("%0.2f",double(MoveTimeF2)/100)
			swbreak
		case objinfo_hwnd(PosF3UpdownID)		;[F3]wߊpxAbv_ERg[
			updownpos PosF3UpdownID,COMCTL_GET,NULL : PosF3=stat
			settext PosF3EdtID,strf("%0.1f",double(PosF3)/10)
			swbreak
		case objinfo_hwnd(MoveTimeF3UpdownID)		;[F3]ړԃAbv_ERg[
			updownpos MoveTimeF3UpdownID,COMCTL_GET,NULL : MoveTimeF3=stat
			settext MoveTimeF3EdtID,strf("%0.2f",double(MoveTimeF3)/100)
			swbreak
		case objinfo_hwnd(ManualTimeUpdownID)		;wߊԊuAbv_ERg[
			updownpos ManualTimeUpdownID,COMCTL_GET,NULL : ManualTime=stat
			settext ManualTimeEdtID,strf("%0.3f",double(ManualTime)/1000)
			swbreak
		case objinfo_hwnd(RepeatTimeUpdownID)		;s[gԊuAbv_ERg[
			updownpos RepeatTimeUpdownID,COMCTL_GET,NULL : RepeatTime=stat
			settext RepeatTimeEdtID,strf("%0.3f",double(RepeatTime)/1000)
			swbreak
		case objinfo_hwnd(RepeatNumUpdownID)		;s[g񐔃Abv_ERg[
			updownpos RepeatNumUpdownID,COMCTL_GET,NULL : RepeatNum=stat
			if RepeatNum=-1 : settext RepeatNumEdtID,"" : else : settext RepeatNumEdtID,str(RepeatNum)
			swbreak
		case objinfo_hwnd(AddressType7UpdownID)		;JnڽAbv_ERg[
			updownpos AddressType7UpdownID,COMCTL_GET,NULL : AddressType7=stat
			settext AddressType7EdtID,str(AddressType7)
			swbreak
		case objinfo_hwnd(LengthType7UpdownID)	;M޲ĐAbv_ERg[
			updownpos LengthType7UpdownID,COMCTL_GET,NULL : LengthType7=stat
			settext LengthType7EdtID,str(LengthType7)
			swbreak
		case objinfo_hwnd(ServoUpdownID)	;T[{hcAbv_ERg[
			updownpos ServoUpdownID,COMCTL_GET,NULL : ID=stat
			settext SrvEdtID,str(ID)
			CommNum=10	;gosub *communication_RequestType1
			swbreak
		swend
		swbreak
	swend
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; GfBbg{bNX/R{{bNX/`FbN{bNX̓eςƂ̏
;--------+---------+---------+---------+---------+---------+---------+---------+
#define	EN_UPDATE		0x400	;eς
#define	CBN_SELCHANGE 	1		;IڂύXꂽƂ 
#define	BN_CLICKED		0		;{^(`FbN{bNXjNbNꂽƂ

*command
	switch wparam>>16&0xFFFF
	case EN_UPDATE
		switch lparam
		case objinfo_hwnd(SrvEdtID)		;T[{hcGfBbg{bNX
			gettext SrvEdtID,IDs,5 : ID=limit(int(IDs),0,255)
			updownpos ServoUpdownID,COMCTL_SET,ID
			if (int(IDs)!ID)|(IDs="") : settext SrvEdtID,str(ID)
			CommNum=10	;gosub *communication_RequestType1
			swbreak
		case objinfo_hwnd(PosF1EdtID)	;[F1]wߊpxGfBbgRg[
			gettext PosF1EdtID,PosF1s,7 : PosF1=int(double(PosF1s)*10)
			updownpos PosF1UpdownID,COMCTL_SET,PosF1
			swbreak
		case objinfo_hwnd(PosF2EdtID)	;[F2]wߊpxGfBbgRg[
			gettext PosF2EdtID,PosF2s,7
			PosF2=int(double(PosF2s)*10) : updownpos PosF2UpdownID,COMCTL_SET,PosF2
			swbreak
		case objinfo_hwnd(PosF3EdtID)	;[F3]wߊpxGfBbgRg[
			gettext PosF3EdtID,PosF3s,7
			PosF3=int(double(PosF3s)*10) : updownpos PosF3UpdownID,COMCTL_SET,PosF3
			swbreak
		case objinfo_hwnd(MoveTimeF1EdtID)	;[F1]ړԃGfBbgRg[
			gettext MoveTimeF1EdtID,MoveTimeF1s,6 : MoveTimeF1=int(double(MoveTimeF1s)*100)
			updownpos MoveTimeF1UpdownID,COMCTL_SET,MoveTimeF1
			swbreak
		case objinfo_hwnd(MoveTimeF2EdtID)	;[F2]ړԃGfBbgRg[
			gettext MoveTimeF2EdtID,MoveTimeF2s,6 : MoveTimeF2=int(double(MoveTimeF2s)*100)
			updownpos MoveTimeF2UpdownID,COMCTL_SET,MoveTimeF2
			swbreak
		case objinfo_hwnd(MoveTimeF3EdtID)	;[F3]ړԃGfBbgRg[
			gettext MoveTimeF3EdtID,MoveTimeF3s,6 : MoveTimeF3=int(double(MoveTimeF3s)*100)
			updownpos MoveTimeF3UpdownID,COMCTL_SET,MoveTimeF3
			swbreak
		case objinfo_hwnd(ManualTimeEdtID)	;wߊԊuGfBbgRg[
			gettext ManualTimeEdtID,ManualTimes,6 : ManualTime=int(double(ManualTimes)*1000)
			updownpos ManualTimeUpdownID,COMCTL_SET,ManualTime
			swbreak
		case objinfo_hwnd(RepeatTimeEdtID)		;s[gԊuGfBbgRg[
			gettext RepeatTimeEdtID,RepeatTimes,7 : RepeatTime=int(double(RepeatTimes)*1000)
			updownpos RepeatTimeUpdownID,COMCTL_SET,RepeatTime
			swbreak
		case objinfo_hwnd(RepeatNumEdtID)		; s[g񐔃GfBbgRg[
			gettext RepeatNumEdtID,RepeatNums,6
			if RepeatNums="" : RepeatNum=-1 : else : RepeatNum=int(RepeatNums)
			updownpos RepeatNumUpdownID,COMCTL_SET,RepeatNum
			swbreak
		case objinfo_hwnd(AddressType7EdtID)	;JnڽGfBbgRg[
			gettext AddressType7EdtID,AddressType7s,3 : AddressType7=int(AddressType7s)
			updownpos AddressType7UpdownID,COMCTL_SET,AddressType7
			swbreak
		case objinfo_hwnd(LengthType7EdtID)	;M޲ĐGfBbgRg[
			gettext LengthType7EdtID,LengthType7s,4 : LengthType7=int(LengthType7s)
			updownpos LengthType7UpdownID,COMCTL_SET,LengthType7
				swbreak
		swend
		swbreak
	case CBN_SELCHANGE
		switch lparam
		case objinfo_hwnd(ComNumcmbID)		;ʐM|[gR{{bNX
		case objinfo_hwnd(BaudRatecmbID)	;ʐMxR{{bNX
			rs485close : rs485open RS485ComNum, RS485BaudRate	;Timeout 100ms
			swbreak
		swend
		objsel StopBtnID
		swbreak
	case BN_CLICKED
		switch lparam
		case objinfo_hwnd(SerialCommChkID)		;AM`FbN{bNX
			objprm SerialCommChkID,SerialComm^1
			if SerialComm : Autoflg=0 : objsel StopBtnID
			swbreak
		swend
		swbreak
	swend
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; Ȉ݂
;--------+---------+---------+---------+---------+---------+---------+---------+
*exit_routine
	gsel 2,-1						;ʔ\
	KillTimer hwnd, ID_TIMER		;^C}[
	rs485close						;RS232CN[Y
	noteunsel						;obt@w

;/ʂ̂wxʒuEwxTCỸp[^z100Ԃ
	ScrnPosX=ginfo_wx1
	ScrnPosY=ginfo_wy1
	ScrnWidX=ginfo_winx
	ScrnWidY=ginfo_winy

	DataSave p						;ɏݖ
	end

;eof "RS485-Basic.hsp"
