;--------+---------+---------+---------+---------+---------+---------+---------+
;  RS485-MemoryMapEditor Version 2.0a 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/10/12 : 1.0a	@T	J
;		T[{IDݒiĺAAbv/_E{^jF0`127(0:all)
;		ʐM|[gݒiR{{bNXIjFCOM1`10
;		ʐMxݒiR{{bNXIjF9.6k-1.38M
;		[Get all Map Data]{^FS}bvf[^[h
;		[Set all Map Data]{^FSZNglCg
;		[search ID/BaudRate]{^FT[{ID/BaudRateTB
;		[Init Memory Map]{^F}bv̒llɖ߂B
;		[Write Flash Rom]{^FtbVROM֏݁B
;
;		}bvf[^\ƐݒFPUi\ƂPOi[e]\ƐݒiĺAAbv/_E{^A"Set"{^j
;			Model Number
;			Firmware Version
;			Servo ID
;			Baud Rate
;			CW Angle Limit
;			CCW Angle Limit
;			Load Limit
;			Temp Limit
;			CW Compliance Margin
;			CCW Compliance Margin
;			CW Compliance Slope
;			CCW Compliance Slope
;			Punch
;			Global Position
;			Global Time
;			Acceleration Time
;			Max Torque
;			Torque Enable
;			LED
;			PID Coefficient
;			Present Posion
;			Present Time
;			Present Speed
;			Present Load
;			Present Temp
;			Present Volts
;	2009/03/25 : 2.0a
;		RS303MR/RS304MD/RS405CBpp[^ǉ
;			Damper				(RS405CB)
;			Torque in Silence	(RS303MR/RS304MD/RS405CB)
;			Warm-Up Time		(RS303MR/RS304MD/RS405CB)



#define	SoftName	"RS485-MemoryMapEditor"				;soft name
#define VerNum	 	"2.0a"								;version
#define	Copyright	"Copyright (C) 2007 Futaba Corporation"

#define ScrnX	750										;Screen Width
#define ScrnY	620										;screen height

;/st@C쐬IvVw
; type=0(EXEt@C), orgpath=0(fBNgړ)
#packopt name "RS485-MemoryMapEditor_20a"				;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

#module "MapEditor"
#deffunc ButtonEnable int p1
	objenable ServoIDBtnID@,p1
	objenable BaudRateBtnID@,p1
	objenable CWAngleLimitBtnID@,p1
	objenable CCWAngleLimitBtnID@,p1
	objenable LoadLimitBtnID@,p1
	objenable DamperBtnID@,p1							;ver.3.0 RS405CBp
	objenable TorqueSilenceBtnID@,p1					;ver.3.0 RS303/304/405p
	objenable WarmUpTimeBtnID@,p1						;ver.3.0 RS303/304/405p
	objenable CWComplianceMarginBtnID@,p1
	objenable CCWComplianceMarginBtnID@,p1
	objenable CWComplianceSlopeBtnID@,p1
	objenable CCWComplianceSlopeBtnID@,p1
	objenable PunchBtnID@,p1
	objenable GlobalPositionBtnID@,p1
	objenable GlobalTimeBtnID@,p1
	objenable AccelerationTimeBtnID@,p1
	objenable MaxTorqueBtnID@,p1
	objenable TorqueEnableBtnID@,p1
	objenable LEDBtnID@,p1
	objenable PIDCoefficientBtnID@,p1

	objenable SetAllBtnID@,p1
	objenable InitMemoryMapBtnID@,p1
	objenable WriteFlashRomBtnID@,p1
	return

#deffunc ObjBlank int p1
		settext HexModelNumberStcID@,""
		settext DecModelNumberStcID@,""
	
		settext HexFirmwareVersionStcID@,""
		settext DecFirmwareVersionStcID@,""

		settext HexServoIDStcID@,""
		settext DecServoIDEdtID@,""

		settext HexBaudRateStcID@,""
		settext DecBaudRateStcID@,""

		settext HexCWAngleLimitStcID@,""
		settext DecCWAngleLimitEdtID@,""

		settext HexCCWAngleLimitStcID@,""
		settext DecCCWAngleLimitEdtID@,""

		settext HexLoadLimitStcID@,""
		settext DecLoadLimitEdtID@,""

		settext HexTempLimitStcID@,""
		settext DecTempLimitStcID@,""

		settext HexDamperStcID@,""							;ver.3.0 RS405CBp
		settext DecDamperEdtID@,""							;ver.3.0 RS405CBp

		settext HexTorqueSilenceStcID@,""					;ver.3.0 RS303/304/405p
		settext DecTorqueSilenceEdtID@,""					;ver.3.0 RS303/304/405p

		settext HexWarmUpTimeStcID@,""						;ver.3.0 RS303/304/405p
		settext DecWarmUpTimeEdtID@,""						;ver.3.0 RS303/304/405p

		settext HexCWComplianceMarginStcID@,""
		settext DecCWComplianceMarginEdtID@,""

		settext HexCCWComplianceMarginStcID@,""
		settext DecCCWComplianceMarginEdtID@,""

		settext HexCWComplianceSlopeStcID@,""
		settext DecCWComplianceSlopeEdtID@,""

		settext HexCCWComplianceSlopeStcID@,""
		settext DecCCWComplianceSlopeEdtID@,""

		settext HexPunchStcID@,""
		settext DecPunchEdtID@,""

		settext HexGlobalPositionStcID@,""
		settext DecGlobalPositionEdtID@,""

		settext HexGlobalTimeStcID@,""
		settext DecGlobalTimeEdtID@,""

		settext HexAccelerationTimeStcID@,""
		settext DecAccelerationTimeEdtID@,""

		settext HexMaxTorqueStcID@,""
		settext DecMaxTorqueEdtID@,""

		settext HexTorqueEnableStcID@,""
		settext DecTorqueEnableStcID@,""

		settext HexLEDStcID@,""
		settext DecLEDStcID@,""

		settext HexPIDCoefficientStcID@,""
		settext DecPIDCoefficientEdtID@,""

		settext HexPresentPosionStcID@,""
		settext DecPresentPosionStcID@,""

		settext HexPresentTimeStcID@,""
		settext DecPresentTimeStcID@,""

		settext HexPresentSpeedStcID@,""
		settext DecPresentSpeedStcID@,""

		settext HexPresentLoadStcID@,""
		settext DecPresentLoadStcID@,""

		settext HexPresentTempStcID@,""
		settext DecPresentTempStcID@,""

		settext HexPresentVoltsStcID@,""
		settext DecPresentVoltsStcID@,""

	if p1 {
		settext LoadLimitStcID@,"Load Limit"
		objshow DecLoadLimitEdtID@,1
		objshow DecLoadLimitUpdownID@,1
		objshow LoadLimitBtnID@,1

		settext DamperStcID@,"Damper"						;ver.3.0 RS405p
		objshow DecDamperEdtID@,1							;ver.3.0 RS405p
		objshow DecDamperUpdownID@,1						;ver.3.0 RS405p
		objshow DamperBtnID@,1								;ver.3.0 RS405p

		settext TorqueSilenceStcID@,"Torque in Silence"		;ver.3.0 RS303/304/405p
		objshow DecTorqueSilenceEdtID@,1					;ver.3.0 RS303/304/405p
		objshow DecTorqueSilenceUpdownID@,1					;ver.3.0 RS303/304/405p
		objshow TorqueSilenceBtnID@,1						;ver.3.0 RS303/304/405p

		settext WarmUpTimeStcID@,"Warm-up Time"				;ver.3.0 RS303/304/405p
		objshow DecWarmUpTimeEdtID@,1						;ver.3.0 RS303/304/405p
		objshow DecWarmUpTimeUpdownID@,1					;ver.3.0 RS303/304/405p
		objshow WarmUpTimeBtnID@,1							;ver.3.0 RS303/304/405p

		settext AccelerationTimeStcID@,"Acceleration Time"
		objshow DecAccelerationTimeEdtID@,1
		objshow DecAccelerationTimeUpdownID@,1
		objshow AccelerationTimeBtnID@,1

		settext LEDStcID@,"LED"
		objshow DecLEDStcID@,1
		objshow DecLEDUpdownID@,1
		objshow LEDBtnID@,1

		settext PIDCoefficientStcID@,"PID Coefficient"
		objshow DecPIDCoefficientEdtID@,1
		objshow DecPIDCoefficientUpdownID@,1
		objshow PIDCoefficientBtnID@,1

		settext PresentSpeedStcID@,"Present Speed"
		objshow DecPresentSpeedStcID@,1
		settext PresentSpeedStcID@,"Present Volts"
		objshow DecPresentVoltsStcID@,1
	}
	return

#global

;/[̏
;--------+---------+---------+---------+---------+---------+---------+---------+
; [̗̈ݒ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	pTorqueON			pManualNum+1		;gN

;/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 TorqueON,p(pTorqueON)
	; eݒp[^̃ftHgl
	if ScrnWidX=0 { 						;1ԍŏ͉ʂ̂wTCY0Ȃ̂ŁB
		ScrnPosX=0
		ScrnPosY=0
		ScrnWidX=ScrnX
		ScrnWidY=ScrnY
		ID=0
		RS485ComNum=0
		RS485BaudRate=7
		ManualNum=0
		TorqueON=0
	}

;/[̗̈ݒ
	BaudRateTable="[9,600]","[14,400]","[19,200]","[28,800]","[38,400]","[57,600]","[76,800]","[115,200]","[153,600]","[230,400]","[460,800]","[691,200]","[1,382,400]"
	TorqueEnableTable="[OFF]","[ON]","[Brake]"
	LEDTable="[rOFF,gOFF]","[rOFF,gON]","[rON,gOFF]","[rON,gON]"

;/ʂ̏
;--------+---------+---------+---------+---------+---------+---------+---------+
; ʃ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	420
#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+33
#const	POS_y3	POS_y2+23
#const	POS_y4	POS_y3+53
#const	POS_y5	POS_y4+23
#const	POS_y6	POS_y5+28
#const	POS_y7	POS_y6+28
#const	POS_y8	POS_y7+28
#const	POS_y9	POS_y8+28
#const	POS_y10	POS_y9+28
#const	POS_y11	POS_y10+28
#const	POS_y12	POS_y11+28
#const	POS_y13	POS_y12+28
#const	POS_y14	POS_y13+28
#const	POS_y15	POS_y14+28
#const	POS_y16	POS_y15+28
#const	POS_y17	POS_y16+28
#const	POS_y18	POS_y17+28
#const	POS_y19	POS_y18+28
#const	POS_y20	POS_y19+28
#const	POS_y21	POS_y20+28

	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
;--------+---------+---------+---------+---------+---------+---------+---------+
	SetWindowLong hwnd, GWL_STYLE, GetWindowLong (hwnd, GWL_STYLE) ^ $2000000
; [T[{ID,ʐM|[g,ʐMx]O[v{bNX
	chkobj  20,POS_y1,290,90," ServoID   COMport    BaudRate",x,ServoIDGbxID
	sendmsg objinfo (stat, 2), $F4, $7
	objcolor ServoIDGbxID,BackColor,RGB(0,0,0)

; T[{IDGfBbg{bNX
	edtctl 30,POS_y1+23,45,18,IDs,ES_RIGHT|ES_NUMBER,,SrvEdtID
	if ID : settext SrvEdtID,str(ID) : else : settext SrvEdtID,"all"
	objcolor SrvEdtID,RGB(255,255,191),RGB(255,0,0)
; T[{IDAbv_ERg[
	updnctl 75,POS_y1+22,15,20,0x100,ServoUpdownID
	updownrng ServoUpdownID,0,127
	updownpos ServoUpdownID,COMCTL_SET,ID
; ʐM|[gR{{bNX
	cmbobj 100,POS_y1+22,60,24,RS485ComNum,80," COM1\n COM2\n COM3\n COM4\n COM5\n COM6\n COM7\n COM8\n COM9\nCOM10",ComNumcmbID
	objcolor ComNumcmbID,RGB(255,255,191),RGB(255,0,0)
; ʐMxR{{bNX
	cmbobj 170,POS_y1+22,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)
; Get all Map Data{^
	btnobj 30,POS_y3,130,20,"Get all Map Data",*btn_GetAll,GetAllBtnID
; Set all Map Data{^
	btnobj 170,POS_y3,130,20,"Set all Map Data",*btn_SetAll,SetAllBtnID

; search ID/BaudRate{^
	btnobj 330,POS_y3,140,20,"search ID/BaudRate",*btn_search,searchBtnID
; Init Memory Map{^
	btnobj 480,POS_y3,120,20,"Init Memory Map",*btn_InitMemoryMap,InitMemoryMapBtnID
; Flash Rom݃{^
	btnobj 610,POS_y3,120,20,"Write Flash Rom",*btn_WriteFlashRom,WriteFlashRomBtnID

; 蓮w߃gbNo[Rg[
	trbctl 320,POS_y1+5,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 675,POS_y1+5,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 675,POS_y1+23,50,14,0x140, ManualUpdownID
	updownrng ManualUpdownID,-1600,1600
	updownpos ManualUpdownID,COMCTL_SET,ManualNum

; [Map]O[v{bNX
	chkobj  20,POS_y4,350,390,"      Memory Map Name  Hex  Dec[Content] ",x,MapAGbxID
	sendmsg objinfo (stat, 2), $F4, $7
	objcolor MapAGbxID,BackColor,RGB(0,0,0)

	chkobj  380,POS_y4,350,390,"      Memory Map Name  Hex  Dec[Content] ",x,MapBGbxID
	sendmsg objinfo (stat, 2), $F4, $7
	objcolor MapBGbxID,BackColor,RGB(0,0,0)


; fԍRg[
	stcctl 30,POS_y5+3,150,14,"Model Number",SS_RIGHT,ModelNumberStcID
	objcolor ModelNumberStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y5+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexModelNumberStcID
	objcolor HexModelNumberStcID,BackColor,RGB(0,0,0)
	stcctl 220,POS_y5+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecModelNumberStcID
	objcolor DecModelNumberStcID,BackColor,RGB(0,0,0)

; t@[EFAo[WRg[
	stcctl 30,POS_y6+3,150,14,"Firmware Version",SS_RIGHT,FirmwareVersionStcID
	objcolor FirmwareVersionStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y6+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexFirmwareVersionStcID
	objcolor HexFirmwareVersionStcID,BackColor,RGB(0,0,0)
	stcctl 220,POS_y6+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecFirmwareVersionStcID
	objcolor DecFirmwareVersionStcID,BackColor,RGB(0,0,0)

; T[{IDRg[
	stcctl 30,POS_y7+3,150,14,"Servo ID",SS_RIGHT,ServoIDStcID
	objcolor ServoIDStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y7+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexServoIDStcID
	objcolor HexServoIDStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y7+2,80,16,DecServoIDs,ES_RIGHT|ES_NUMBER,,DecServoIDEdtID
	objcolor DecServoIDEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y7,15,20,0x100,DecServoIDUpdownID
	updownrng DecServoIDUpdownID,1,127
	btnobj 320,POS_y7,40,20,"Set",*btn_ServoID,ServoIDBtnID

; ʐMxRg[
	stcctl 30,POS_y8+3,150,14,"Baud Rate",SS_RIGHT,BaudRateStcID
	objcolor BaudRateStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y8+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexBaudRateStcID
	objcolor HexBaudRateStcID,BackColor,RGB(0,0,0)
	stcctl 220,POS_y8+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecBaudRateStcID
	objcolor DecBaudRateStcID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y8,15,20,0x100,DecBaudRateUpdownID
	updownrng DecBaudRateUpdownID,0,12
	btnobj 320,POS_y8,40,20,"Set",*btn_BaudRate,BaudRateBtnID

; E~bgpxRg[
	stcctl 30,POS_y9+3,150,14,"CW Angle Limit",SS_RIGHT,CWAngleLimitStcID
	objcolor CWAngleLimitStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y9+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexCWAngleLimitStcID
	objcolor HexCWAngleLimitStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y9+2,80,16,DecCWAngleLimits,ES_RIGHT|ES_NUMBER,,DecCWAngleLimitEdtID
	objcolor DecCWAngleLimitEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y9,15,20,0x100,DecCWAngleLimitUpdownID
	updownrng DecCWAngleLimitUpdownID,0,1500
	btnobj 320,POS_y9,40,20,"Set",*btn_CWAngleLimit,CWAngleLimitBtnID

; ~bgpxRg[
	stcctl 30,POS_y10+3,150,14,"CCW Angle Limit",SS_RIGHT,CCWAngleLimitStcID
	objcolor CCWAngleLimitStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y10+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexCCWAngleLimitStcID
	objcolor HexCCWAngleLimitStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y10+2,80,16,DecCCWAngleLimits,ES_RIGHT|ES_NUMBER,,DecCCWAngleLimitEdtID
	objcolor DecCCWAngleLimitEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y10,15,20,0x100,DecCCWAngleLimitUpdownID
	updownrng DecCCWAngleLimitUpdownID,-1500,0
	btnobj 320,POS_y10,40,20,"Set",*btn_CCWAngleLimit,CCWAngleLimitBtnID

; ׂ̃~bglRg[
	stcctl 30,POS_y11+3,150,14,"Load Limit",SS_RIGHT,LoadLimitStcID
	objcolor LoadLimitStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y11+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexLoadLimitStcID
	objcolor HexLoadLimitStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y11+2,80,16,DecLoadLimits,ES_RIGHT|ES_NUMBER,,DecLoadLimitEdtID
	objcolor DecLoadLimitEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y11,15,20,0x100,DecLoadLimitUpdownID
	updownrng DecLoadLimitUpdownID,0,100
	btnobj 320,POS_y11,40,20,"Set",*btn_LoadLimit,LoadLimitBtnID

; x̃~bglRg[
	stcctl 30,POS_y12+3,150,14,"Temp Limit",SS_RIGHT,TempLimitStcID
	objcolor TempLimitStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y12+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexTempLimitStcID
	objcolor HexTempLimitStcID,BackColor,RGB(0,0,0)
	stcctl 220,POS_y12+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecTempLimitStcID
	objcolor DecTempLimitStcID,BackColor,RGB(0,0,0)

; DamperRg[
	stcctl 30,POS_y13+3,150,14,"Damper",SS_RIGHT,DamperStcID
	objcolor DamperStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y13+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexDamperStcID
	objcolor HexDamperStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y13+2,80,16,DecDampers,ES_RIGHT|ES_NUMBER,,DecDamperEdtID
	objcolor DecDamperEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y13,15,20,0x100,DecDamperUpdownID
	updownrng DecDamperUpdownID,0,255
	btnobj 320,POS_y13,40,20,"Set",*btn_Damper,DamperBtnID

; Torque in SilenceRg[
	stcctl 30,POS_y14+3,150,14,"Torque in Silence",SS_RIGHT,TorqueSilenceStcID
	objcolor TorqueSilenceStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y14+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexTorqueSilenceStcID
	objcolor HexTorqueSilenceStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y14+2,80,16,DecTorqueSilences,ES_RIGHT|ES_NUMBER,,DecTorqueSilenceEdtID
	objcolor DecTorqueSilenceEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y14,15,20,0x100,DecTorqueSilenceUpdownID
	updownrng DecTorqueSilenceUpdownID,0,255
	btnobj 320,POS_y14,40,20,"Set",*btn_TorqueSilence,TorqueSilenceBtnID

; Warm-up TimeRg[
	stcctl 30,POS_y15+3,150,14,"Warm-up Time",SS_RIGHT,WarmUpTimeStcID
	objcolor WarmUpTimeStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y15+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexWarmUpTimeStcID
	objcolor HexWarmUpTimeStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y15+2,80,16,DecWarmUpTimes,ES_RIGHT|ES_NUMBER,,DecWarmUpTimeEdtID
	objcolor DecWarmUpTimeEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y15,15,20,0x100,DecWarmUpTimeUpdownID
	updownrng DecWarmUpTimeUpdownID,0,255
	btnobj 320,POS_y15,40,20,"Set",*btn_WarmUpTime,WarmUpTimeBtnID

; ERvCAX}[WRg[
	stcctl 30,POS_y16+3,150,14,"CW Compliance Margin",SS_RIGHT,CWComplianceMarginStcID
	objcolor CWComplianceMarginStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y16+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexCWComplianceMarginStcID
	objcolor HexCWComplianceMarginStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y16+2,80,16,DecCWComplianceMargins,ES_RIGHT|ES_NUMBER,,DecCWComplianceMarginEdtID
	objcolor DecCWComplianceMarginEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y16,15,20,0x100,DecCWComplianceMarginUpdownID
	updownrng DecCWComplianceMarginUpdownID,0,255
	btnobj 320,POS_y16,40,20,"Set",*btn_CWComplianceMargin,CWComplianceMarginBtnID

; RvCAX}[WRg[
	stcctl 30,POS_y17+3,150,14,"CCW Compliance Margin",SS_RIGHT,CCWComplianceMarginStcID
	objcolor CCWComplianceMarginStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y17+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexCCWComplianceMarginStcID
	objcolor HexCCWComplianceMarginStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y17+2,80,16,DecCCWComplianceMargins,ES_RIGHT|ES_NUMBER,,DecCCWComplianceMarginEdtID
	objcolor DecCCWComplianceMarginEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y17,15,20,0x100,DecCCWComplianceMarginUpdownID
	updownrng DecCCWComplianceMarginUpdownID,0,255
	btnobj 320,POS_y17,40,20,"Set",*btn_CCWComplianceMargin,CCWComplianceMarginBtnID

; ERvCAXX[vRg[
	stcctl 30,POS_y18+3,150,14,"CW Compliance Slope",SS_RIGHT,CWComplianceSlopeStcID
	objcolor CWComplianceSlopeStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y18+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexCWComplianceSlopeStcID
	objcolor HexCWComplianceSlopeStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y18+2,80,16,DecCWComplianceSlopes,ES_RIGHT|ES_NUMBER,,DecCWComplianceSlopeEdtID
	objcolor DecCWComplianceSlopeEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y18,15,20,0x100,DecCWComplianceSlopeUpdownID
	updownrng DecCWComplianceSlopeUpdownID,0,255
	btnobj 320,POS_y18,40,20,"Set",*btn_CWComplianceSlope,CWComplianceSlopeBtnID

; RvCAXX[vRg[
	stcctl 30,POS_y19+3,150,14,"CCW Compliance Slope",SS_RIGHT,CCWComplianceSlopeStcID
	objcolor CCWComplianceSlopeStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y19+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexCCWComplianceSlopeStcID
	objcolor HexCCWComplianceSlopeStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y19+2,80,16,DecCCWComplianceSlopes,ES_RIGHT|ES_NUMBER,,DecCCWComplianceSlopeEdtID
	objcolor DecCCWComplianceSlopeEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y19,15,20,0x100,DecCCWComplianceSlopeUpdownID
	updownrng DecCCWComplianceSlopeUpdownID,0,255
	btnobj 320,POS_y19,40,20,"Set",*btn_CCWComplianceSlope,CCWComplianceSlopeBtnID

; p`Rg[
	stcctl 30,POS_y20+3,150,14,"Punch",SS_RIGHT,PunchStcID
	objcolor PunchStcID,BackColor,RGB(0,0,0)
	stcctl 185,POS_y20+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPunchStcID
	objcolor HexPunchStcID,BackColor,RGB(0,0,0)
	edtctl 220,POS_y20+2,80,16,DecPunchs,ES_RIGHT|ES_NUMBER,,DecPunchEdtID
	objcolor DecPunchEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 300,POS_y20,15,20,0x100,DecPunchUpdownID
	updownrng DecPunchUpdownID,0,0x2710
	btnobj 320,POS_y20,40,20,"Set",*btn_Punch,PunchBtnID

; ڕWʒuRg[
	stcctl 390,POS_y5+3,150,14,"Global Position",SS_RIGHT,GlobalPositionStcID
	objcolor GlobalPositionStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y5+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexGlobalPositionStcID
	objcolor HexGlobalPositionStcID,BackColor,RGB(0,0,0)
	edtctl 580,POS_y5+2,80,16,DecGlobalPositions,ES_RIGHT,,DecGlobalPositionEdtID
	objcolor DecGlobalPositionEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y5,15,20,0x100,DecGlobalPositionUpdownID
	updownrng DecGlobalPositionUpdownID,-1500,1500
	btnobj 680,POS_y5,40,20,"Set",*btn_GlobalPosition,GlobalPositionBtnID

; ړԃRg[
	stcctl 390,POS_y6+3,150,14,"Global Time",SS_RIGHT,GlobalTimeStcID
	objcolor GlobalTimeStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y6+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexGlobalTimeStcID
	objcolor HexGlobalTimeStcID,BackColor,RGB(0,0,0)
	edtctl 580,POS_y6+2,80,16,DecGlobalTimes,ES_RIGHT|ES_NUMBER,,DecGlobalTimeEdtID
	objcolor DecGlobalTimeEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y6,15,20,0x100,DecGlobalTimeUpdownID
	updownrng DecGlobalTimeUpdownID,0,10000
	btnobj 680,POS_y6,40,20,"Set",*btn_GlobalTime,GlobalTimeBtnID

; ԃRg[
	stcctl 390,POS_y7+3,150,14,"Acceleration Time",SS_RIGHT,AccelerationTimeStcID
	objcolor AccelerationTimeStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y7+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexAccelerationTimeStcID
	objcolor HexAccelerationTimeStcID,BackColor,RGB(0,0,0)
	edtctl 580,POS_y7+2,80,16,DecAccelerationTimes,ES_RIGHT|ES_NUMBER,,DecAccelerationTimeEdtID
	objcolor DecAccelerationTimeEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y7,15,20,0x100,DecAccelerationTimeUpdownID
	updownrng DecAccelerationTimeUpdownID,0,255
	btnobj 680,POS_y7,40,20,"Set",*btn_AccelerationTime,AccelerationTimeBtnID

; őgNRg[
	stcctl 390,POS_y8+3,150,14,"Max Torque",SS_RIGHT,MaxTorqueStcID
	objcolor MaxTorqueStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y8+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexMaxTorqueStcID
	objcolor HexMaxTorqueStcID,BackColor,RGB(0,0,0)
	edtctl 580,POS_y8+2,80,16,DecMaxTorques,ES_RIGHT|ES_NUMBER,,DecMaxTorqueEdtID
	objcolor DecMaxTorqueEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y8,15,20,0x100,DecMaxTorqueUpdownID
	updownrng DecMaxTorqueUpdownID,0,100
	btnobj 680,POS_y8,40,20,"Set",*btn_MaxTorque,MaxTorqueBtnID

; gNONRg[
	stcctl 390,POS_y9+3,150,14,"Torque Enable",SS_RIGHT,TorqueEnableStcID
	objcolor TorqueEnableStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y9+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexTorqueEnableStcID
	objcolor HexTorqueEnableStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y9+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecTorqueEnableStcID
	objcolor DecTorqueEnableStcID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y9,15,20,0x100,DecTorqueEnableUpdownID
	updownrng DecTorqueEnableUpdownID,0,2
	btnobj 680,POS_y9,40,20,"Set",*btn_TorqueEnable,TorqueEnableBtnID

; LEDRg[
	stcctl 390,POS_y10+3,150,14,"LED",SS_RIGHT,LEDStcID
	objcolor LEDStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y10+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexLEDStcID
	objcolor HexLEDStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y10+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecLEDStcID
	objcolor DecLEDStcID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y10,15,20,0x100,DecLEDUpdownID
	updownrng DecLEDUpdownID,0,3
	btnobj 680,POS_y10,40,20,"Set",*btn_LED,LEDBtnID

; PIDlRg[
	stcctl 390,POS_y11+3,150,14,"PID Coefficient",SS_RIGHT,PIDCoefficientStcID
	objcolor PIDCoefficientStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y11+3,18,14,"",SS_SUNKEN|SS_RIGHT,HexPIDCoefficientStcID
	objcolor HexPIDCoefficientStcID,BackColor,RGB(0,0,0)
	edtctl 580,POS_y11+2,80,16,DecPIDCoefficients,ES_RIGHT|ES_NUMBER,,DecPIDCoefficientEdtID
	objcolor DecPIDCoefficientEdtID,RGB(191,255,255),RGB(0,0,255)
	updnctl 660,POS_y11,15,20,0x100,DecPIDCoefficientUpdownID
	updownrng DecPIDCoefficientUpdownID,0,255
	btnobj 680,POS_y11,40,20,"Set",*btn_PIDCoefficient,PIDCoefficientBtnID

; ݈ʒuRg[
	stcctl 390,POS_y12+3,150,14,"Present Posion",SS_RIGHT,PresentPosionStcID
	objcolor PresentPosionStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y12+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPresentPosionStcID
	objcolor HexPresentPosionStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y12+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecPresentPosionStcID
	objcolor DecPresentPosionStcID,BackColor,RGB(0,0,0)

; ݎԃRg[
	stcctl 390,POS_y13+3,150,14,"Present Time",SS_RIGHT,PresentTimeStcID
	objcolor PresentTimeStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y13+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPresentTimeStcID
	objcolor HexPresentTimeStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y13+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecPresentTimeStcID
	objcolor DecPresentTimeStcID,BackColor,RGB(0,0,0)

; ݑxRg[
	stcctl 390,POS_y14+3,150,14,"Present Speed",SS_RIGHT,PresentSpeedStcID
	objcolor PresentSpeedStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y14+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPresentSpeedStcID
	objcolor HexPresentSpeedStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y14+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecPresentSpeedStcID
	objcolor DecPresentSpeedStcID,BackColor,RGB(0,0,0)

; ݕ׃Rg[
	stcctl 390,POS_y15+3,150,14,"Present Load",SS_RIGHT,PresentLoadStcID
	objcolor PresentLoadStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y15+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPresentLoadStcID
	objcolor HexPresentLoadStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y15+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecPresentLoadStcID
	objcolor DecPresentLoadStcID,BackColor,RGB(0,0,0)

; ݉xRg[
	stcctl 390,POS_y16+3,150,14,"Present Temp",SS_RIGHT,PresentTempStcID
	objcolor PresentTempStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y16+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPresentTempStcID
	objcolor HexPresentTempStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y16+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecPresentTempStcID
	objcolor DecPresentTempStcID,BackColor,RGB(0,0,0)

; ݓdRg[
	stcctl 390,POS_y17+3,150,14,"Present Volts",SS_RIGHT,PresentVoltsStcID
	objcolor PresentVoltsStcID,BackColor,RGB(0,0,0)
	stcctl 545,POS_y17+3,32,14,"",SS_SUNKEN|SS_RIGHT,HexPresentVoltsStcID
	objcolor HexPresentVoltsStcID,BackColor,RGB(0,0,0)
	stcctl 580,POS_y17+2,80,16,"",SS_SUNKEN|SS_RIGHT,DecPresentVoltsStcID
	objcolor DecPresentVoltsStcID,BackColor,RGB(0,0,0)

;--------+---------+---------+---------+---------+---------+---------+---------+
;/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

;--------+---------+---------+---------+---------+---------+---------+---------+
;/ݏ̏ݒ
;--------+---------+---------+---------+---------+---------+---------+---------+
;/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

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

;/C[`
;--------+---------+---------+---------+---------+---------+---------+---------+
; C[`͉ȂB
;--------+---------+---------+---------+---------+---------+---------+---------+
	stop

;--------+---------+---------+---------+---------+---------+---------+---------+
; {^̏
;--------+---------+---------+---------+---------+---------+---------+---------+
;/{^"Set"
*btn_ServoID
	updownpos DecServoIDUpdownID,COMCTL_GET,NULL : DecServoID=stat 
	SetServoID cnd(ID,ID,255),DecServoID		;ServoID̑M
	gosub *btn_GetAll	
	return
*btn_BaudRate
	updownpos DecBaudRateUpdownID,COMCTL_GET,NULL : DecBaudRate=stat 
	SetBaudRate cnd(ID,ID,255),DecBaudRate		;BaudRatȇM
	gosub *btn_GetAll	
	return
*btn_CWAngleLimit
	updownpos DecCWAngleLimitUpdownID,COMCTL_GET,NULL : DecCWAngleLimit=stat 
	SetCWAngleLimit cnd(ID,ID,255),DecCWAngleLimit		;CWAngleLimit̑M
	gosub *btn_GetAll	
	return
*btn_CCWAngleLimit
	updownpos DecCCWAngleLimitUpdownID,COMCTL_GET,NULL : DecCCWAngleLimit=stat 
	SetCCWAngleLimit cnd(ID,ID,255),DecCCWAngleLimit		;CCWAngleLimit̑M
	gosub *btn_GetAll	
	return
*btn_LoadLimit
	updownpos DecLoadLimitUpdownID,COMCTL_GET,NULL : DecLoadLimit=stat 
	SetLoadLimit cnd(ID,ID,255),DecLoadLimit		;LoadLimit̑M
	gosub *btn_GetAll	
	return
*btn_Damper
	updownpos DecDamperUpdownID,COMCTL_GET,NULL : DecDamper=stat 
	SetDamper cnd(ID,ID,255),DecDamper		;Dampern̑M
	gosub *btn_GetAll	
	return
*btn_TorqueSilence
	updownpos DecTorqueSilenceUpdownID,COMCTL_GET,NULL : DecTorqueSilence=stat 
	SetTorqueSilence cnd(ID,ID,255),DecTorqueSilence		;TorqueSilencȇM
	gosub *btn_GetAll	
	return
*btn_WarmUpTime
	updownpos DecWarmUpTimeUpdownID,COMCTL_GET,NULL : DecWarmUpTime=stat 
	SetWarmUpTime cnd(ID,ID,255),DecWarmUpTime		;CWComplianceMargin̑M
	gosub *btn_GetAll	
	return
*btn_CWComplianceMargin
	updownpos DecCWComplianceMarginUpdownID,COMCTL_GET,NULL : DecCWComplianceMargin=stat 
	SetCWComplianceMargin cnd(ID,ID,255),DecCWComplianceMargin		;CWComplianceMargin̑M
	gosub *btn_GetAll	
	return
*btn_CCWComplianceMargin
	updownpos DecCCWComplianceMarginUpdownID,COMCTL_GET,NULL : DecCCWComplianceMargin=stat 
	SetCCWComplianceMargin cnd(ID,ID,255),DecCCWComplianceMargin		;CCWComplianceMargin̑M
	gosub *btn_GetAll	
	return
*btn_CWComplianceSlope
	updownpos DecCWComplianceSlopeUpdownID,COMCTL_GET,NULL : DecCWComplianceSlope=stat 
	SetCWComplianceSlope cnd(ID,ID,255),DecCWComplianceSlope		;CWComplianceSlopȇM
	gosub *btn_GetAll	
	return
*btn_CCWComplianceSlope
	updownpos DecCCWComplianceSlopeUpdownID,COMCTL_GET,NULL : DecCCWComplianceSlope=stat 
	SetCCWComplianceSlope cnd(ID,ID,255),DecCCWComplianceSlope		;CCWComplianceSlopȇM
	gosub *btn_GetAll	
	return
*btn_Punch
	updownpos DecPunchUpdownID,COMCTL_GET,NULL : DecPunch=stat 
	SetPunch cnd(ID,ID,255),DecPunch		;Punch̑M
	gosub *btn_GetAll	
	return
*btn_GlobalPosition
	updownpos DecGlobalPositionUpdownID,COMCTL_GET,NULL : DecGlobalPosition=stat 
	SetGlobalPosition cnd(ID,ID,255),DecGlobalPosition		;GlobalPosition̑M
	gosub *btn_GetAll	
	return
*btn_GlobalTime
	updownpos DecGlobalTimeUpdownID,COMCTL_GET,NULL : DecGlobalTime=stat 
	SetGlobalTime cnd(ID,ID,255),DecGlobalTime		;GlobalTimȇM
	gosub *btn_GetAll	
	return
*btn_AccelerationTime
	updownpos DecAccelerationTimeUpdownID,COMCTL_GET,NULL : DecAccelerationTime=stat 
	SetAccelerationTime cnd(ID,ID,255),DecAccelerationTime		;AccelerationTimȇM
	gosub *btn_GetAll	
	return
*btn_MaxTorque
	updownpos DecMaxTorqueUpdownID,COMCTL_GET,NULL : DecMaxTorque=stat 
	SetMaxTorque cnd(ID,ID,255),DecMaxTorque		;MaxTorquȇM
	gosub *btn_GetAll	
	return
*btn_TorqueEnable
	updownpos DecTorqueEnableUpdownID,COMCTL_GET,NULL : DecTorqueEnable=stat 
	SetTorqueEnable	cnd(ID,ID,255),DecTorqueEnable		;TorqueEnablȇM
	gosub *btn_GetAll	
	return
*btn_LED
	updownpos DecLEDUpdownID,COMCTL_GET,NULL : DecLED=stat 
	SetLED cnd(ID,ID,255),DecLED		;LED̑M
	gosub *btn_GetAll	
	return
*btn_PIDCoefficient
	updownpos DecPIDCoefficientUpdownID,COMCTL_GET,NULL : DecPIDCoefficient=stat 
	SetPIDCoefficient cnd(ID,ID,255),DecPIDCoefficient		;PIDCoefficient̑M
	gosub *btn_GetAll	
	return

;/{^"Get all Map Data"
*btn_GetAll
	ObjBlank 0
	await : wait 20
	ClrMemoryBuf ID
	GetReturnData cnd(ID,ID,255),15,0,60
	if GetBufModelNumber(cnd(ID,ID,255)) {
		switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
		case 0x3010
		case 0x3020
		case 0x3030
		case 0x3040
			updownrng DecBaudRateUpdownID,0,13
			updownrng DecCWAngleLimitUpdownID,0,1500
			updownrng DecCCWAngleLimitUpdownID,-1500,0
			updownrng DecPunchUpdownID,0,0x2710
			updownrng DecKPUpdownID,0,63
			swbreak
		case 0x4050
			updownrng DecBaudRateUpdownID,0,13
			updownrng DecCWAngleLimitUpdownID,0,1500
			updownrng DecCCWAngleLimitUpdownID,-1500,0
			updownrng DecPunchUpdownID,0,0x2710
			updownrng DecKPUpdownID,0,63
			updownrng DecDamperUpdownID,0,255
			swbreak
		case 0x6010
			updownrng DecBaudRateUpdownID,0,13
			updownrng DecCWAngleLimitUpdownID,0,1230
			updownrng DecCCWAngleLimitUpdownID,-1230,0
			updownrng DecPunchUpdownID,0,0x6A5
			swbreak
		default
			updownrng DecBaudRateUpdownID,0,13
			updownrng DecCWAngleLimitUpdownID,0,900
			updownrng DecCCWAngleLimitUpdownID,-900,0
			updownrng DecPunchUpdownID,0,0x6A5
			swbreak
		swend



		HexCharUpperL GetBufModelNumber(cnd(ID,ID,255)),HexModelNumbers
		settext HexModelNumberStcID,HexModelNumbers
		settext DecModelNumberStcID,"[RS"+strmid(HexModelNumbers,0,3)+"xx]"

		HexCharUpperW GetBufFirmwareVersion(cnd(ID,ID,255)),HexFirmwareVersions
		settext HexFirmwareVersionStcID,HexFirmwareVersions
		settext DecFirmwareVersionStcID,str(GetBufFirmwareVersion(cnd(ID,ID,255)))

		HexCharUpperW GetBufServoID(cnd(ID,ID,255)),HexServoIDs
		settext HexServoIDStcID,HexServoIDs
		settext DecServoIDEdtID,Str(GetBufServoID(cnd(ID,ID,255)))
		updownpos DecServoIDUpdownID,COMCTL_SET,GetBufServoID(cnd(ID,ID,255))

		HexCharUpperW GetBufBaudRate(cnd(ID,ID,255)),HexBaudRates
		settext HexBaudRateStcID,HexBaudRates
		settext DecBaudRateStcID,BaudRateTable(GetBufBaudRate(cnd(ID,ID,255)))
		updownpos DecBaudRateUpdownID,COMCTL_SET,GetBufBaudRate(cnd(ID,ID,255))
		objcolor DecBaudRateStcID,RGB(191,255,255),RGB(0,0,255)

		HexCharUpperL GetBufCWAngleLimit(cnd(ID,ID,255)),HexCWAngleLimits
		settext HexCWAngleLimitStcID,HexCWAngleLimits
		settext DecCWAngleLimitEdtID,str(GetBufCWAngleLimit(cnd(ID,ID,255)))
		updownpos DecCWAngleLimitUpdownID,COMCTL_SET,GetBufCWAngleLimit(cnd(ID,ID,255))

		HexCharUpperL GetBufCCWAngleLimit(cnd(ID,ID,255)),HexCCWAngleLimits
		settext HexCCWAngleLimitStcID,HexCCWAngleLimits
		settext DecCCWAngleLimitEdtID,str(GetBufCCWAngleLimit(cnd(ID,ID,255)))
		updownpos DecCCWAngleLimitUpdownID,COMCTL_SET,GetBufCCWAngleLimit(cnd(ID,ID,255))

		HexCharUpperL GetBufLoadLimit(cnd(ID,ID,255)),HexLoadLimits
		settext HexLoadLimitStcID,HexLoadLimits
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x4010
				case 0x4020
				case 0x6010
					settext LoadLimitStcID,"Load Limit"
					settext DecLoadLimitEdtID,str(GetBufLoadLimit(cnd(ID,ID,255)))
					updownpos DecLoadLimitUpdownID,COMCTL_SET,GetBufLoadLimit(cnd(ID,ID,255))
					objshow DecLoadLimitEdtID,1
					objshow DecLoadLimitUpdownID,1
					objshow LoadLimitBtnID,1
					swbreak
				default
					settext LoadLimitStcID,"Reserved"
					settext DecLoadLimitEdtID,""
					objshow DecLoadLimitEdtID,0
					objshow DecLoadLimitUpdownID,0
					objshow LoadLimitBtnID,0
					swbreak
				swend
			}
			
		HexCharUpperL GetBufTempLimit(cnd(ID,ID,255)),HexTempLimits
		settext HexTempLimitStcID,HexTempLimits
		settext DecTempLimitStcID,str(GetBufTempLimit(cnd(ID,ID,255)))


		HexCharUpperW GetBufDamper(cnd(ID,ID,255)),HexDampers
		settext HexDamperStcID,HexDampers
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x4050
					settext DamperStcID,"Damper"
					settext DecDamperEdtID,str(GetBufDamper(cnd(ID,ID,255)))
					updownpos DecDamperUpdownID,COMCTL_SET,GetBufDamper(cnd(ID,ID,255))
					objshow DecDamperEdtID,1
					objshow DecDamperUpdownID,1
					objshow DamperBtnID,1
					swbreak
				default
					settext DamperStcID,"Reserved"
					settext DecDamperEdtID,""
					objshow DecDamperEdtID,0
					objshow DecDamperUpdownID,0
					objshow DamperBtnID,0
					swbreak
				swend
			}

		HexCharUpperW GetBufTorqueSilence(cnd(ID,ID,255)),HexTorqueSilences
		settext HexTorqueSilenceStcID,HexTorqueSilences
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x3030
				case 0x3040
				case 0x4050
					settext TorqueSilenceStcID,"Torque in Silence"
					settext DecTorqueSilenceEdtID,str(GetBufTorqueSilence(cnd(ID,ID,255)))
					updownpos DecTorqueSilenceUpdownID,COMCTL_SET,GetBufTorqueSilence(cnd(ID,ID,255))
					objshow DecTorqueSilenceEdtID,1
					objshow DecTorqueSilenceUpdownID,1
					objshow TorqueSilenceBtnID,1
					swbreak
				default
					settext TorqueSilenceStcID,"Reserved"
					settext DecTorqueSilenceEdtID,""
					objshow DecTorqueSilenceEdtID,0
					objshow DecTorqueSilenceUpdownID,0
					objshow TorqueSilenceBtnID,0
					swbreak
				swend
			}

		HexCharUpperW GetBufWarmUpTime(cnd(ID,ID,255)),HexWarmUpTimes
		settext HexWarmUpTimeStcID,HexWarmUpTimes
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x3030
				case 0x3040
				case 0x4050
					settext WarmUpTimeStcID,"Warm-UpTime"
					settext DecWarmUpTimeEdtID,str(GetBufWarmUpTime(cnd(ID,ID,255)))
					updownpos DecWarmUpTimeUpdownID,COMCTL_SET,GetBufWarmUpTime(cnd(ID,ID,255))
					objshow DecWarmUpTimeEdtID,1
					objshow DecWarmUpTimeUpdownID,1
					objshow WarmUpTimeBtnID,1
					swbreak
				default
					settext WarmUpTimeStcID,"Reserved"
					settext DecWarmUpTimeEdtID,""
					objshow DecWarmUpTimeEdtID,0
					objshow DecWarmUpTimeUpdownID,0
					objshow WarmUpTimeBtnID,0
					swbreak
				swend
			}

		HexCharUpperW GetBufCWComplianceMargin(cnd(ID,ID,255)),HexCWComplianceMargins
		settext HexCWComplianceMarginStcID,HexCWComplianceMargins
		settext DecCWComplianceMarginEdtID,str(GetBufCWComplianceMargin(cnd(ID,ID,255)))
		updownpos DecCWComplianceMarginUpdownID,COMCTL_SET,GetBufCWComplianceMargin(cnd(ID,ID,255))

		HexCharUpperW GetBufCCWComplianceMargin(cnd(ID,ID,255)),HexCCWComplianceMargins
		settext HexCCWComplianceMarginStcID,HexCCWComplianceMargins
		settext DecCCWComplianceMarginEdtID,str(GetBufCCWComplianceMargin(cnd(ID,ID,255)))
		updownpos DecCCWComplianceMarginUpdownID,COMCTL_SET,GetBufCCWComplianceMargin(cnd(ID,ID,255))

		HexCharUpperW GetBufCWComplianceSlope(cnd(ID,ID,255)),HexCWComplianceSlopes
		settext HexCWComplianceSlopeStcID,HexCWComplianceSlopes
		settext DecCWComplianceSlopeEdtID,str(GetBufCWComplianceSlope(cnd(ID,ID,255)))
		updownpos DecCWComplianceSlopeUpdownID,COMCTL_SET,GetBufCWComplianceSlope(cnd(ID,ID,255))

		HexCharUpperW GetBufCCWComplianceSlope(cnd(ID,ID,255)),HexCCWComplianceSlopes
		settext HexCCWComplianceSlopeStcID,HexCCWComplianceSlopes
		settext DecCCWComplianceSlopeEdtID,str(GetBufCCWComplianceSlope(cnd(ID,ID,255)))
		updownpos DecCCWComplianceSlopeUpdownID,COMCTL_SET,GetBufCCWComplianceSlope(cnd(ID,ID,255))

		HexCharUpperL GetBufPunch(cnd(ID,ID,255)),HexPunchs
		settext HexPunchStcID,HexPunchs
		settext DecPunchEdtID,str(GetBufPunch(cnd(ID,ID,255)))
		updownpos DecPunchUpdownID,COMCTL_SET,GetBufPunch(cnd(ID,ID,255))

		HexCharUpperL GetBufGlobalPosition(cnd(ID,ID,255)),HexGlobalPositions
		settext HexGlobalPositionStcID,HexGlobalPositions
		settext DecGlobalPositionEdtID,str(GetBufGlobalPosition(cnd(ID,ID,255)))
		updownpos DecGlobalPositionUpdownID,COMCTL_SET,GetBufGlobalPosition(cnd(ID,ID,255))

		HexCharUpperL GetBufGlobalTime(cnd(ID,ID,255)),HexGlobalTimes
		settext HexGlobalTimeStcID,HexGlobalTimes
		settext DecGlobalTimeEdtID,str(GetBufGlobalTime(cnd(ID,ID,255)))
		updownpos DecGlobalTimeUpdownID,COMCTL_SET,GetBufGlobalTime(cnd(ID,ID,255))

		HexCharUpperW GetBufAccelerationTime(cnd(ID,ID,255)),HexAccelerationTimes
		settext HexAccelerationTimeStcID,HexAccelerationTimes
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x4010
				case 0x4020
				case 0x6010
					settext AccelerationTimeStcID,"Acceleration Time"
					settext DecAccelerationTimeEdtID,str(GetBufAccelerationTime(cnd(ID,ID,255)))
					updownpos DecAccelerationTimeUpdownID,COMCTL_SET,GetBufAccelerationTime(cnd(ID,ID,255))
					objshow DecAccelerationTimeEdtID,1
					objshow DecAccelerationTimeUpdownID,1
					objshow AccelerationTimeBtnID,1
					swbreak
				default
					settext AccelerationTimeStcID,"Reserved"
					settext DecAccelerationTimeEdtID,""
					objshow DecAccelerationTimeEdtID,0
					objshow DecAccelerationTimeUpdownID,0
					objshow AccelerationTimeBtnID,0
					swbreak
				swend
			}

		HexCharUpperW GetBufMaxTorque(cnd(ID,ID,255)),HexMaxTorques
		settext HexMaxTorqueStcID,HexMaxTorques
		settext DecMaxTorqueEdtID,str(GetBufMaxTorque(cnd(ID,ID,255)))
		updownpos DecMaxTorqueUpdownID,COMCTL_SET,GetBufMaxTorque(cnd(ID,ID,255))

		HexCharUpperW GetBufTorqueEnable(cnd(ID,ID,255)),HexTorqueEnables
		settext HexTorqueEnableStcID,HexTorqueEnables
		settext DecTorqueEnableStcID,TorqueEnableTable(GetBufTorqueEnable(cnd(ID,ID,255)))
		updownpos DecTorqueEnableUpdownID,COMCTL_SET,GetBufTorqueEnable(cnd(ID,ID,255))
		objcolor DecTorqueEnableStcID,RGB(191,255,255),RGB(0,0,255)

		HexCharUpperW GetBufLED(cnd(ID,ID,255)),HexLEDs
		settext HexLEDStcID,HexLEDs
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x6010
					settext LEDStcID,"LED"
					settext DecLEDStcID,LEDTable(GetBufLED(cnd(ID,ID,255)))
					updownpos DecLEDUpdownID,COMCTL_SET,GetBufLED(cnd(ID,ID,255))
					objshow DecLEDStcID,1
					objshow DecLEDUpdownID,1
					objshow LEDBtnID,1
					swbreak
				default
					settext LEDStcID,"Reserved"
					settext DecLEDStcID,""
					objshow DecLEDStcID,0
					objshow DecLEDUpdownID,0
					objshow LEDBtnID,0
					swbreak
				swend
			}
		objcolor DecLEDStcID,RGB(191,255,255),RGB(0,0,255)

		HexCharUpperW GetBufPIDCoefficient(cnd(ID,ID,255)),HexPIDCoefficients
		settext HexPIDCoefficientStcID,HexPIDCoefficients
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x4010
				case 0x4020
				case 0x6010
					settext PIDCoefficientStcID,"PID Coefficient"
					settext DecPIDCoefficientEdtID,str(GetBufPIDCoefficient(cnd(ID,ID,255)))
					updownpos DecPIDCoefficientUpdownID,COMCTL_SET,GetBufPIDCoefficient(cnd(ID,ID,255))
					objshow DecPIDCoefficientEdtID,1
					objshow DecPIDCoefficientUpdownID,1
					objshow PIDCoefficientBtnID,1
					swbreak
				default
					settext PIDCoefficientStcID,"Reserved"
					settext DecPIDCoefficientEdtID,""
					objshow DecPIDCoefficientEdtID,0
					objshow DecPIDCoefficientUpdownID,0
					objshow PIDCoefficientBtnID,0
					swbreak
				swend
			}

		HexCharUpperL GetBufPresentPosion(cnd(ID,ID,255)),HexPresentPosions
		settext HexPresentPosionStcID,HexPresentPosions
		settext DecPresentPosionStcID,str(GetBufPresentPosion(cnd(ID,ID,255)))

		HexCharUpperL GetBufPresentTime(cnd(ID,ID,255)),HexPresentTimes
		settext HexPresentTimeStcID,HexPresentTimes
		settext DecPresentTimeStcID,str(GetBufPresentTime(cnd(ID,ID,255)))

		HexCharUpperL GetBufPresentSpeed(cnd(ID,ID,255)),HexPresentSpeeds
		settext HexPresentSpeedStcID,HexPresentSpeeds
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x3010
				case 0x3020
				case 0x3030
				case 0x3040
				case 0x4050
					settext PresentSpeedStcID,"Present Speed"
					settext DecPresentSpeedStcID,str(GetBufPresentSpeed(cnd(ID,ID,255)))
					objshow DecPresentSpeedStcID,1
					swbreak
				default
					settext PresentSpeedStcID,"Reserved"
					settext DecPresentSpeedStcID,""
					objshow DecPresentSpeedStcID,0
					swbreak
				swend
			}
		
		HexCharUpperL GetBufPresentLoad(cnd(ID,ID,255)),HexPresentLoads
		settext HexPresentLoadStcID,HexPresentLoads
		settext DecPresentLoadStcID,str(GetBufPresentLoad(cnd(ID,ID,255)))

		HexCharUpperL GetBufPresentTemp(cnd(ID,ID,255)),HexPresentTemps
		settext HexPresentTempStcID,HexPresentTemps
		settext DecPresentTempStcID,str(GetBufPresentTemp(cnd(ID,ID,255)))

		HexCharUpperL GetBufPresentVolts(cnd(ID,ID,255)),HexPresentVoltss
		settext HexPresentVoltsStcID,HexPresentVoltss
		if GetBufModelNumber(cnd(ID,ID,255)) {
			switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
				case 0x3010
				case 0x3020
				case 0x3030
				case 0x3040
				case 0x4050
					settext PresentVoltsStcID,"Present Volts"
					settext DecPresentVoltsStcID,str(GetBufPresentVolts(cnd(ID,ID,255)))
					objshow DecPresentVoltsStcID,1
					swbreak
				default
					settext PresentVoltsStcID,"Reserved"
					settext DecPresentVoltsStcIDID,""
					objshow DecPresentVoltsStcID,0
					swbreak
				swend
			}

		ButtonEnable 1

	} else {
		updownrng DecBaudRateUpdownID,0,12
		updownrng DecCWAngleLimitUpdownID,0,1500
		updownrng DecCCWAngleLimitUpdownID,-1500,0
		updownrng DecPunchUpdownID,0,0x2710
		ObjBlank 1
		ButtonEnable 0
	}

	return

;/{^"Set all Map Data"
*btn_SetAll
	updownpos DecServoIDUpdownID,COMCTL_GET,NULL : SetBufServoID cnd(ID,ID,255),stat
	updownpos DecBaudRateUpdownID,COMCTL_GET,NULL : SetBufBaudRate cnd(ID,ID,255),stat
	updownpos DecCWAngleLimitUpdownID,COMCTL_GET,NULL : SetBufCWAngleLimit cnd(ID,ID,255),stat
	updownpos DecCCWAngleLimitUpdownID,COMCTL_GET,NULL : SetBufCCWAngleLimit cnd(ID,ID,255),stat
	updownpos DecLoadLimitUpdownID,COMCTL_GET,NULL : SetBufLoadLimit cnd(ID,ID,255),stat
	updownpos DecDamperUpdownID,COMCTL_GET,NULL : SetBufDamper cnd(ID,ID,255),stat
	updownpos DecTorqueSilenceUpdownID,COMCTL_GET,NULL : SetBufTorqueSilence cnd(ID,ID,255),stat
	updownpos DecWarmUpTimeUpdownID,COMCTL_GET,NULL : SetBufWarmUpTime cnd(ID,ID,255),stat
	updownpos DecCWComplianceMarginUpdownID,COMCTL_GET,NULL : SetBufCWComplianceMargin cnd(ID,ID,255),stat
	updownpos DecCCWComplianceMarginUpdownID,COMCTL_GET,NULL : SetBufCCWComplianceMargin cnd(ID,ID,255),stat
	updownpos DecCWComplianceSlopeUpdownID,COMCTL_GET,NULL : SetBufCWComplianceSlope cnd(ID,ID,255),stat
	updownpos DecCCWComplianceSlopeUpdownID,COMCTL_GET,NULL : SetBufCCWComplianceSlope cnd(ID,ID,255),stat
	updownpos DecPunchUpdownID,COMCTL_GET,NULL : SetBufPunch cnd(ID,ID,255),stat
	updownpos DecGlobalPositionUpdownID,COMCTL_GET,NULL : SetBufGlobalPosition cnd(ID,ID,255),stat
	updownpos DecGlobalTimeUpdownID,COMCTL_GET,NULL : SetBufGlobalTime cnd(ID,ID,255),stat
	updownpos DecAccelerationTimeUpdownID,COMCTL_GET,NULL : SetBufAccelerationTime cnd(ID,ID,255),stat
	updownpos DecMaxTorqueUpdownID,COMCTL_GET,NULL : SetBufMaxTorque cnd(ID,ID,255),stat
	updownpos DecTorqueEnableUpdownID,COMCTL_GET,NULL : SetBufTorqueEnable cnd(ID,ID,255),stat
	updownpos DecLEDUpdownID,COMCTL_GET,NULL : SetBufLED cnd(ID,ID,255),stat
	updownpos DecPIDCoefficientUpdownID,COMCTL_GET,NULL : SetBufPIDCoefficient cnd(ID,ID,255),stat
	TransmitShort cnd(ID,ID,255),0,0,60,1
	gosub *btn_GetAll
	return

;/{^"search ID/BaudRate"
*btn_search
	ObjBlank 1
	wait
	repeat 13
		objprm BaudRatecmbID,cnt
		rs485close : rs485open RS485ComNum, cnt		;Timeout 100ms
		ClrMemoryBuf 255
		GetReturnData 255,15,0,60
		if GetBufModelNumber(255) {
			RS485BaudRate=cnt
			ID=GetBufServoID(255)
			settext SrvEdtID,str(ID)
			updownpos ServoUpdownID,COMCTL_SET,ID
			break
		}
	loop
	if GetBufModelNumber(255)=0 : objprm BaudRatecmbID,RS485BaudRate
	gosub *btn_GetAll
	return

;/{^"Init Memory Map"
*btn_InitMemoryMap
	InitMemoryMap cnd(ID,ID,255)
	await : wait 10				;RS30x/405(10),RS401/402/601(1000)
	gosub *btn_GetAll
	return

;/{^"Write Flash Rom"
*btn_WriteFlashRom
	objenable WriteFlashRomBtnID,0
	await : title2 SoftName + "  --- writing ---"
	WriteFlashRom cnd(ID,ID,255),1

	if GetBufModelNumber(cnd(ID,ID,255)) {
		switch GetBufModelNumber(cnd(ID,ID,255))&0xFFF0
			case 0x3010
			case 0x3020
			case 0x3030
			case 0x3040
			case 0x4050
				aSleep 100				;RS30x/405(100)
				swbreak
			default
				repeat 5
					aSleep 100				;RS401/402/601
					title2 SoftName
					aSleep 100				;RS401/402/601
					if cnt!4 : title2 SoftName + "  --- writing ---"
				loop
				swbreak
			swend
		}

	title2 SoftName + "  Ver" + VerNum
	gosub *btn_GetAll
	objenable WriteFlashRomBtnID,1
	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 wparam&0x0F
	case SB_PAGELEFT
	case SB_PAGERIGHT
	case SB_THUMTRACK
		switch lparam
		case objinfo_hwnd(ManualTrbID)	;蓮w߃gbNo[Rg[
			trackpos ManualTrbID,COMCTL_GET,NULL : ManualNum=stat
			updownpos ManualUpdownID,COMCTL_SET,ManualNum
			settext ManualStcID,strf("%0.1f",double(ManualNum)/10)
			SetPositionTime cnd(ID,ID,255),ManualNum,0
			swbreak
		swend
		swbreak
	case SB_THUMBPOSITION
		switch lparam
		case objinfo_hwnd(ManualUpdownID)	;蓮w߃Abv_ERg[
			updownpos ManualUpdownID,COMCTL_GET,NULL : ManualNum=stat
			trackpos ManualTrbID,COMCTL_SET,ManualNum
			settext ManualStcID,strf("%0.1f",double(ManualNum)/10)
			SetPositionTime cnd(ID,ID,255),ManualNum,0
			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(ServoUpdownID)		;T[{hcAbv_ERg[
			updownpos ServoUpdownID,COMCTL_GET,NULL : ID=stat 
			if ID : settext SrvEdtID,str(ID) : else : settext SrvEdtID,"all"
			swbreak
		case objinfo_hwnd(DecServoIDUpdownID)		;T[{hcAbv_ERg[
			updownpos DecServoIDUpdownID,COMCTL_GET,NULL : DecServoID=stat 
			settext DecServoIDEdtID,str(DecServoID)
			swbreak
		case objinfo_hwnd(DecBaudRateUpdownID)		;ʐMxAbv_ERg[
			updownpos DecBaudRateUpdownID,COMCTL_GET,NULL : DecBaudRate=stat 
			settext DecBaudRateStcID,BaudRateTable(DecBaudRate)
			if DecBaudRate=GetBufBaudRate(cnd(ID,ID,255)) : objcolor DecBaudRateStcID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecBaudRateStcID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCWAngleLimitUpdownID)		;E~bgpxAbv_ERg[
			updownpos DecCWAngleLimitUpdownID,COMCTL_GET,NULL : DecCWAngleLimit=stat 
			settext DecCWAngleLimitEdtID,Str(DecCWAngleLimit)
			swbreak
		case objinfo_hwnd(DecCCWAngleLimitUpdownID)		;~bgpxAbv_ERg[
			updownpos DecCCWAngleLimitUpdownID,COMCTL_GET,NULL : DecCCWAngleLimit=stat 
			settext DecCCWAngleLimitEdtID,Str(DecCCWAngleLimit)
			swbreak
		case objinfo_hwnd(DecLoadLimitUpdownID)		;ׂ̃~bgAbv_ERg[
			updownpos DecLoadLimitUpdownID,COMCTL_GET,NULL : DecLoadLimit=stat 
			settext DecLoadLimitEdtID,Str(DecLoadLimit)
			swbreak
		case objinfo_hwnd(DecDamperUpdownID)		;DamperAbv_ERg[
			updownpos DecDamperUpdownID,COMCTL_GET,NULL : DecDamper=stat 
			settext DecDamperEdtID,Str(DecDamper)
			swbreak
		case objinfo_hwnd(DecTorqueSilenceUpdownID)		;Torque in SilenceAbv_ERg[
			updownpos DecTorqueSilenceUpdownID,COMCTL_GET,NULL : DecTorqueSilence=stat 
			settext DecTorqueSilenceEdtID,Str(DecTorqueSilence)
			swbreak
		case objinfo_hwnd(DecWarmUpTimeUpdownID)		;Warm-Up TimeAbv_ERg[
			updownpos DecWarmUpTimeUpdownID,COMCTL_GET,NULL : DecWarmUpTime=stat 
			settext DecWarmUpTimeEdtID,Str(DecWarmUpTime)
			swbreak
	case objinfo_hwnd(DecCWComplianceMarginUpdownID)		;ERvCAX}[WAbv_ERg[
			updownpos DecCWComplianceMarginUpdownID,COMCTL_GET,NULL : DecCWComplianceMargin=stat 
			settext DecCWComplianceMarginEdtID,Str(DecCWComplianceMargin)
			swbreak
		case objinfo_hwnd(DecCCWComplianceMarginUpdownID)		;RvCAX}[WAbv_ERg[
			updownpos DecCCWComplianceMarginUpdownID,COMCTL_GET,NULL : DecCCWComplianceMargin=stat 
			settext DecCCWComplianceMarginEdtID,Str(DecCCWComplianceMargin)
			swbreak
		case objinfo_hwnd(DecCWComplianceSlopeUpdownID)		;ERvCAXX[vAbv_ERg[
			updownpos DecCWComplianceSlopeUpdownID,COMCTL_GET,NULL : DecCWComplianceSlope=stat 
			settext DecCWComplianceSlopeEdtID,Str(DecCWComplianceSlope)
			swbreak
		case objinfo_hwnd(DecCCWComplianceSlopeUpdownID)		;RvCAXX[vAbv_ERg[
			updownpos DecCCWComplianceSlopeUpdownID,COMCTL_GET,NULL : DecCCWComplianceSlope=stat 
			settext DecCCWComplianceSlopeEdtID,Str(DecCCWComplianceSlope)
			swbreak
		case objinfo_hwnd(DecPunchUpdownID)		;p`Abv_ERg[
			updownpos DecPunchUpdownID,COMCTL_GET,NULL : DecPunch=stat 
			settext DecPunchEdtID,Str(DecPunch)
			swbreak
		case objinfo_hwnd(DecGlobalPositionUpdownID)		;ڕWʒuAbv_ERg[
			updownpos DecGlobalPositionUpdownID,COMCTL_GET,NULL : DecGlobalPosition=stat 
			settext DecGlobalPositionEdtID,Str(DecGlobalPosition)
			swbreak
		case objinfo_hwnd(DecGlobalTimeUpdownID)		;ړԃAbv_ERg[
			updownpos DecGlobalTimeUpdownID,COMCTL_GET,NULL : DecGlobalTime=stat 
			settext DecGlobalTimeEdtID,Str(DecGlobalTime)
			swbreak
		case objinfo_hwnd(DecAccelerationTimeUpdownID)		;ԃAbv_ERg[
			updownpos DecAccelerationTimeUpdownID,COMCTL_GET,NULL : DecAccelerationTime=stat 
			settext DecAccelerationTimeEdtID,Str(DecAccelerationTime)
			swbreak
		case objinfo_hwnd(DecMaxTorqueUpdownID)		;őgNAbv_ERg[
			updownpos DecMaxTorqueUpdownID,COMCTL_GET,NULL : DecMaxTorque=stat 
			settext DecMaxTorqueEdtID,Str(DecMaxTorque)
			swbreak
		case objinfo_hwnd(DecTorqueEnableUpdownID)		;gNONAbv_ERg[
			updownpos DecTorqueEnableUpdownID,COMCTL_GET,NULL : DecTorqueEnable=stat 
			settext DecTorqueEnableStcID,TorqueEnableTable(DecTorqueEnable)
			if DecTorqueEnable=GetBufTorqueEnable(cnd(ID,ID,255)) : objcolor DecTorqueEnableStcID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecTorqueEnableStcID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecLEDUpdownID)		;LEDAbv_ERg[
			updownpos DecLEDUpdownID,COMCTL_GET,NULL : DecLED=stat 
			settext DecLEDStcID,LEDTable(DecLED)
			if DecLED=GetBufLED(cnd(ID,ID,255)) : objcolor DecLEDStcID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecLEDStcID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecPIDCoefficientUpdownID)		;PIDlAbv_ERg[
			updownpos DecPIDCoefficientUpdownID,COMCTL_GET,NULL : DecPIDCoefficient=stat 
			settext DecPIDCoefficientEdtID,Str(DecPIDCoefficient)
			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 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 EN_UPDATE
		switch lparam
		case objinfo_hwnd(SrvEdtID)		;T[{hcGfBbg{bNX
			gettext SrvEdtID,IDs,5
			updownpos ServoUpdownID,COMCTL_SET,int(IDs)
			updownpos ServoUpdownID,COMCTL_GET,NULL : ID=stat
			if (int(IDs)!ID)|((ID=0)&(IDs!"all"))|((ID!0)&(instr(IDs,0,"all")!-1)) {
				if ID : settext SrvEdtID,str(ID) : else : settext SrvEdtID,"all"
			}
			swbreak
		case objinfo_hwnd(DecServoIDEdtID)		;T[{hcGfBbg{bNX
			gettext DecServoIDEdtID,DecServoIDs,5
			updownpos DecServoIDUpdownID,COMCTL_SET,int(DecServoIDs)
			updownpos DecServoIDUpdownID,COMCTL_GET,NULL : DecServoID=stat
			if (int(DecServoIDs)!DecServoID)&(DecServoIDs!"") : settext DecServoIDEdtID,str(DecServoID)
			if DecServoID=GetBufServoID(cnd(ID,ID,255)) : objcolor DecServoIDEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecServoIDEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCWAngleLimitEdtID)		;E~bgpxGfBbg{bNX
			gettext DecCWAngleLimitEdtID,DecCWAngleLimits,8
			updownpos DecCWAngleLimitUpdownID,COMCTL_SET,int(DecCWAngleLimits)
			updownpos DecCWAngleLimitUpdownID,COMCTL_GET,NULL : DecCWAngleLimit=stat
			if (int(DecCWAngleLimits)!DecCWAngleLimit)|((strmid(DecCWAngleLimits,0,1)="0")&(DecCWAngleLimit!0)) {
				settext DecCWAngleLimitEdtID,str(DecCWAngleLimit)
			}
			if DecCWAngleLimit=GetBufCWAngleLimit(cnd(ID,ID,255)) : objcolor DecCWAngleLimitEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecCWAngleLimitEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCCWAngleLimitEdtID)		;~bgpxGfBbg{bNX
			gettext DecCCWAngleLimitEdtID,DecCCWAngleLimits,8
			updownpos DecCCWAngleLimitUpdownID,COMCTL_SET,int(DecCCWAngleLimits)
			updownpos DecCCWAngleLimitUpdownID,COMCTL_GET,NULL : DecCCWAngleLimit=stat
			if (int(DecCCWAngleLimits)!DecCCWAngleLimit)|((strmid(DecCCWAngleLimits,0,1)="0")&(DecCCWAngleLimit!0)) {
				settext DecCCWAngleLimitEdtID,str(DecCCWAngleLimit)
			}
			if DecCCWAngleLimit=GetBufCCWAngleLimit(cnd(ID,ID,255)) : objcolor DecCCWAngleLimitEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecCCWAngleLimitEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecLoadLimitEdtID)		;ׂ̃~bgGfBbg{bNX
			gettext DecLoadLimitEdtID,DecLoadLimits,8
			updownpos DecLoadLimitUpdownID,COMCTL_SET,int(DecLoadLimits)
			updownpos DecLoadLimitUpdownID,COMCTL_GET,NULL : DecLoadLimit=stat
			if (int(DecLoadLimits)!DecLoadLimit)|((strmid(DecLoadLimits,0,1)="0")&(DecLoadLimit!0)) {
				settext DecLoadLimitEdtID,str(DecLoadLimit)
			}
			if DecLoadLimit=GetBufLoadLimit(cnd(ID,ID,255)) : objcolor DecLoadLimitEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecLoadLimitEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecDamperEdtID)		;DamperGfBbg{bNX
			gettext DecDamperEdtID,DecDampers,8
			updownpos DecDamperUpdownID,COMCTL_SET,int(DecDampers)
			updownpos DecDamperUpdownID,COMCTL_GET,NULL : DecDamper=stat
			if (int(DecDampers)!DecDamper)|((strmid(DecDampers,0,1)="0")&(DecDamper!0)) {
				settext DecDamperEdtID,str(DecDamper)
			}
			if DecDamper=GetBufDamper(cnd(ID,ID,255)) : objcolor DecDamperEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecDamperEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecTorqueSilenceEdtID)		;Torque in SilenceGfBbg{bNX
			gettext DecTorqueSilenceEdtID,DecTorqueSilences,8
			updownpos DecTorqueSilenceUpdownID,COMCTL_SET,int(DecTorqueSilences)
			updownpos DecTorqueSilenceUpdownID,COMCTL_GET,NULL : DecTorqueSilence=stat
			if (int(DecTorqueSilences)!DecTorqueSilence)|((strmid(DecTorqueSilences,0,1)="0")&(DecTorqueSilence!0)) {
				settext DecTorqueSilenceEdtID,str(DecTorqueSilence)
			}
			if DecTorqueSilence=GetBufTorqueSilence(cnd(ID,ID,255)) : objcolor DecTorqueSilenceEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecTorqueSilenceEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecWarmUpTimeEdtID)		;Warm-Up TimeGfBbg{bNX
			gettext DecWarmUpTimeEdtID,DecWarmUpTimes,8
			updownpos DecWarmUpTimeUpdownID,COMCTL_SET,int(DecWarmUpTimes)
			updownpos DecWarmUpTimeUpdownID,COMCTL_GET,NULL : DecWarmUpTime=stat
			if (int(DecWarmUpTimes)!DecWarmUpTime)|((strmid(DecWarmUpTimes,0,1)="0")&(DecWarmUpTime!0)) {
				settext DecWarmUpTimeEdtID,str(DecWarmUpTime)
			}
			if DecWarmUpTime=GetBufWarmUpTime(cnd(ID,ID,255)) : objcolor DecWarmUpTimeEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecWarmUpTimeEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCWComplianceMarginEdtID)		;ERvCAX}[WGfBbg{bNX
			gettext DecCWComplianceMarginEdtID,DecCWComplianceMargins,8
			updownpos DecCWComplianceMarginUpdownID,COMCTL_SET,int(DecCWComplianceMargins)
			updownpos DecCWComplianceMarginUpdownID,COMCTL_GET,NULL : DecCWComplianceMargin=stat
			if (int(DecCWComplianceMargins)!DecCWComplianceMargin)|((strmid(DecCWComplianceMargins,0,1)="0")&(DecCWComplianceMargin!0)) {
				settext DecCWComplianceMarginEdtID,str(DecCWComplianceMargin)
			}
			if DecCWComplianceMargin=GetBufCWComplianceMargin(cnd(ID,ID,255)) : objcolor DecCWComplianceMarginEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecCWComplianceMarginEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCCWComplianceMarginEdtID)		;RvCAX}[WGfBbg{bNX
			gettext DecCCWComplianceMarginEdtID,DecCCWComplianceMargins,8
			updownpos DecCCWComplianceMarginUpdownID,COMCTL_SET,int(DecCCWComplianceMargins)
			updownpos DecCCWComplianceMarginUpdownID,COMCTL_GET,NULL : DecCCWComplianceMargin=stat
			if (int(DecCCWComplianceMargins)!DecCCWComplianceMargin)|((strmid(DecCCWComplianceMargins,0,1)="0")&(DecCCWComplianceMargin!0)) {
				settext DecCCWComplianceMarginEdtID,str(DecCCWComplianceMargin)
			}
			if DecCCWComplianceMargin=GetBufCCWComplianceMargin(cnd(ID,ID,255)) : objcolor DecCCWComplianceMarginEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecCCWComplianceMarginEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCWComplianceSlopeEdtID)		;ERvCAXX[vGfBbg{bNX
			gettext DecCWComplianceSlopeEdtID,DecCWComplianceSlopes,8
			updownpos DecCWComplianceSlopeUpdownID,COMCTL_SET,int(DecCWComplianceSlopes)
			updownpos DecCWComplianceSlopeUpdownID,COMCTL_GET,NULL : DecCWComplianceSlope=stat
			if (int(DecCWComplianceSlopes)!DecCWComplianceSlope)|((strmid(DecCWComplianceSlopes,0,1)="0")&(DecCWComplianceSlope!0)) {
				settext DecCWComplianceSlopeEdtID,str(DecCWComplianceSlope)
			}
			if DecCWComplianceSlope=GetBufCWComplianceSlope(cnd(ID,ID,255)) : objcolor DecCWComplianceSlopeEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecCWComplianceSlopeEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecCCWComplianceSlopeEdtID)		;RvCAXX[vGfBbg{bNX
			gettext DecCCWComplianceSlopeEdtID,DecCCWComplianceSlopes,8
			updownpos DecCCWComplianceSlopeUpdownID,COMCTL_SET,int(DecCCWComplianceSlopes)
			updownpos DecCCWComplianceSlopeUpdownID,COMCTL_GET,NULL : DecCCWComplianceSlope=stat
			if (int(DecCCWComplianceSlopes)!DecCCWComplianceSlope)|((strmid(DecCCWComplianceSlopes,0,1)="0")&(DecCCWComplianceSlope!0)) {
				settext DecCCWComplianceSlopeEdtID,str(DecCCWComplianceSlope)
			}
			if DecCCWComplianceSlope=GetBufCCWComplianceSlope(cnd(ID,ID,255)) : objcolor DecCCWComplianceSlopeEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecCCWComplianceSlopeEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecPunchEdtID)		;p`GfBbg{bNX
			gettext DecPunchEdtID,DecPunchs,8
			updownpos DecPunchUpdownID,COMCTL_SET,int(DecPunchs)
			updownpos DecPunchUpdownID,COMCTL_GET,NULL : DecPunch=stat
			if (int(DecPunchs)!DecPunch)|((strmid(DecPunchs,0,1)="0")&(DecPunch!0)) {
				settext DecPunchEdtID,str(DecPunch)
			}
			if DecPunch=GetBufPunch(cnd(ID,ID,255)) : objcolor DecPunchEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecPunchEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecGlobalPositionEdtID)		;ڕWʒuGfBbg{bNX
			gettext DecGlobalPositionEdtID,DecGlobalPositions,8
			updownpos DecGlobalPositionUpdownID,COMCTL_SET,int(DecGlobalPositions)
			updownpos DecGlobalPositionUpdownID,COMCTL_GET,NULL : DecGlobalPosition=stat
			if (int(DecGlobalPositions)!DecGlobalPosition)|((strmid(DecGlobalPositions,0,1)="0")&(DecGlobalPosition!0)) {
				settext DecGlobalPositionEdtID,str(DecGlobalPosition)
			}
			if DecGlobalPosition=GetBufGlobalPosition(cnd(ID,ID,255)) : objcolor DecGlobalPositionEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecGlobalPositionEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecGlobalTimeEdtID)		;ړԃGfBbg{bNX
			gettext DecGlobalTimeEdtID,DecGlobalTimes,8
			updownpos DecGlobalTimeUpdownID,COMCTL_SET,int(DecGlobalTimes)
			updownpos DecGlobalTimeUpdownID,COMCTL_GET,NULL : DecGlobalTime=stat
			if (int(DecGlobalTimes)!DecGlobalTime)|((strmid(DecGlobalTimes,0,1)="0")&(DecGlobalTime!0)) {
				settext DecGlobalTimeEdtID,str(DecGlobalTime)
			}
			if DecGlobalTime=GetBufGlobalTime(cnd(ID,ID,255)) : objcolor DecGlobalTimeEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecGlobalTimeEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecAccelerationTimeEdtID)		;ԃGfBbg{bNX
			gettext DecAccelerationTimeEdtID,DecAccelerationTimes,8
			updownpos DecAccelerationTimeUpdownID,COMCTL_SET,int(DecAccelerationTimes)
			updownpos DecAccelerationTimeUpdownID,COMCTL_GET,NULL : DecAccelerationTime=stat
			if (int(DecAccelerationTimes)!DecAccelerationTime)|((strmid(DecAccelerationTimes,0,1)="0")&(DecAccelerationTime!0)) {
				settext DecAccelerationTimeEdtID,str(DecAccelerationTime)
			}
			if DecAccelerationTime=GetBufAccelerationTime(cnd(ID,ID,255)) : objcolor DecAccelerationTimeEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecAccelerationTimeEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecMaxTorqueEdtID)		;őgNGfBbg{bNX
			gettext DecMaxTorqueEdtID,DecMaxTorques,8
			updownpos DecMaxTorqueUpdownID,COMCTL_SET,int(DecMaxTorques)
			updownpos DecMaxTorqueUpdownID,COMCTL_GET,NULL : DecMaxTorque=stat
			if (int(DecMaxTorques)!DecMaxTorque)|((strmid(DecMaxTorques,0,1)="0")&(DecMaxTorque!0)) {
				settext DecMaxTorqueEdtID,str(DecMaxTorque)
			}
			if DecMaxTorque=GetBufMaxTorque(cnd(ID,ID,255)) : objcolor DecMaxTorqueEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecMaxTorqueEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		case objinfo_hwnd(DecPIDCoefficientEdtID)		;PIDlGfBbg{bNX
			gettext DecPIDCoefficientEdtID,DecPIDCoefficients,8
			updownpos DecPIDCoefficientUpdownID,COMCTL_SET,int(DecPIDCoefficients)
			updownpos DecPIDCoefficientUpdownID,COMCTL_GET,NULL : DecPIDCoefficient=stat
			if (int(DecPIDCoefficients)!DecPIDCoefficient)|((strmid(DecPIDCoefficients,0,1)="0")&(DecPIDCoefficient!0)) {
				settext DecPIDCoefficientEdtID,str(DecPIDCoefficient)
			}
			if DecPIDCoefficient=GetBufPIDCoefficient(cnd(ID,ID,255)) : objcolor DecPIDCoefficientEdtID,RGB(191,255,255),RGB(0,0,255) : else : objcolor DecPIDCoefficientEdtID,RGB(191,255,255),RGB(255,0,0)
			swbreak
		swend
		swbreak
	case BN_CLICKED
		swbreak
	swend
	return

;--------+---------+---------+---------+---------+---------+---------+---------+
; Ȉ݂
;--------+---------+---------+---------+---------+---------+---------+---------+
*exit_routine
	gsel 2,-1						;ʔ\
	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-MemoryMapEditor.hsp"
