FOXBOT編程手冊(cè)_第1頁(yè)
FOXBOT編程手冊(cè)_第2頁(yè)
FOXBOT編程手冊(cè)_第3頁(yè)
FOXBOT編程手冊(cè)_第4頁(yè)
FOXBOT編程手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、富士康工業(yè)機(jī)器人富士康工業(yè)機(jī)器人 FOXBOT編程手冊(cè)編程手冊(cè) ( Ver. 2007.1 ) FOXBOT編程手冊(cè) 1 FOXBOT編程手冊(cè) 2 簡(jiǎn) 介FOXBOT 的編程手冊(cè)由 FOXBOT 指令手冊(cè)和 Cypress Enable 編輯器語(yǔ)言參考手冊(cè)組成。FOXBOT 指令手冊(cè)主要用于機(jī)器人的運(yùn)動(dòng)控制指令;Cypress Enable 主要用于程序的變量命名流程控制子程序等。程序編輯界面是 Cypress Enable 編輯器程序中的語(yǔ)句語(yǔ)法要求應(yīng)符合 Cypress Enable 的要求。 FOXBOT編程手冊(cè) 3 FOXBOT 指令手冊(cè)指令手冊(cè) 目 錄ACCEL.1CURPOS .1

2、DECEL.1DEFIO.1DEFPOS.2DELAY .2DEFJNT.2DIST.2DRIVE.3DRIVEA.3FIG.3GOHOME .3HOME.4IN.4J2P.5MOVE.5OUT.6POSRX.7POSRY.7POSRZ.7POSX.7POSY.8POSZ.8RESETIO.8ROBOTSTOP.8ROTATE.9SETIO.9SPEED.10WAIT.10附錄.10 FOXBOT編程手冊(cè) 1 ACCEL功能:指定內(nèi)部加速度比例 格式:ACCEL 範(fàn)例:ACCEL 50CURPOS功能:取得目前的位置 (type P 格式)格式:Position type 變數(shù) = CURPO

3、S說(shuō)明:範(fàn)例:DEFPOS lp1lp1=CURPOSMSGBOX POSX(lp1) & chr(13) & chr(10) &_POSY(lp1) & chr(13) & chr(10) &_POSZ(lp1) & chr(13) & chr(10) &_POSRX(lp1) & chr(13) & chr(10)&_POSRY(lp1) & chr(13) & chr(10)&_POSRZ(lp1) & chr(13) & chr(10)&_FI

4、G(lp1)DECEL功能:指定內(nèi)部減速度比例格式:DECEL 說(shuō)明:範(fàn)例:DECEL 50DEFIO功能:聲明 IO 變數(shù)格式:DEFIO = , 說(shuō)明:通過(guò)變量名聲明指定變量作為一個(gè) IO 變量 選擇 IO 變量的類(lèi)型。IO 變量的類(lèi)型包括BIT(1 位)BYTE(8 位)INTEGER(16 位)端口地址指定輸入輸出 IO 的開(kāi)始號(hào)相關(guān)指令I(lǐng)N OUT SET RESET範(fàn)例:Dim a AS IntegerDEFIO samp1= INTEGER,0聲明一個(gè)來(lái)自端口 15 的 IO 字類(lèi)型變量。Sampl 返回值是 16 位的來(lái)自從 0 到 15 端口整型IN a=samp1Msgbo

5、x FOXBOT編程手冊(cè) 2 Notes:對(duì)于字或整型,使用 MSB 作為一個(gè)信號(hào)位。Byte允許數(shù)字值范圍MSB 端口號(hào):開(kāi)始端口地址7Integer允許數(shù)字值范圍MSB 端口號(hào):開(kāi)始端口地址15DEFPOS功能聲明一個(gè)位置類(lèi)型變量格式DEFPOS 舉例DEFPOS lpx 聲明 lpx 作為位置類(lèi)型變量注意一個(gè)語(yǔ)句只能聲明一個(gè)位置變量類(lèi)型相關(guān)指令 poseP格式Dim lpx as posePDELAY功能暫停程序處理,延時(shí)一個(gè)指定的周期時(shí)間,格式DELAY 說(shuō)明程序處理停止直到暫停時(shí)間到。單位:ms舉例DIM li1 As Integer Delay 100 延時(shí) 100ms(0.1s)

6、Delay li1+10延時(shí) li1+10msDEFJNT功能聲明一個(gè)關(guān)節(jié)類(lèi)型變量格式DEFJNT舉例DEFJNT ljx 聲明 ljx 作為一個(gè)關(guān)節(jié)類(lèi)型變量DIST功能返回兩點(diǎn)之間的距離格式DIST (,)說(shuō)明獲得位置 1 和位置 2 之間的距離舉例Dim lf1 AS SingleDEFPOS lp1 FOXBOT編程手冊(cè) 3 DEFPOS lp2lp1=CURPOSlp1.x=lp2.x+10lp1.y=lp2.y+10lp1.z=lp2.z+10lp1.rx=lp2.rx+10lp1.ry=lp2.ry+10lp1.rz=lp2.r2+10lf1=DIST(lp1,lp2) lf1 等

7、于 lp1 和 lp2 之間的距離MSGBOX lf1DRIVE功能:執(zhí)行每個(gè)軸的相對(duì)運(yùn)動(dòng)格式:DRIVE ()說(shuō)明移動(dòng)指定軸移動(dòng)量用角度來(lái)表示,角度的正負(fù)表示移動(dòng)的方向。舉例 DRIVE 1,30 移動(dòng) 1 軸30 度。DRIVEA功能執(zhí)行每個(gè)軸的絕對(duì)運(yùn)動(dòng)格式DRIVEA 說(shuō)明移動(dòng)指定軸到指定角度舉例DRIVEA 1,-30移動(dòng) 1 軸到-30 度。FIG功能提取一個(gè)形態(tài)。格式FIG(位置類(lèi)型變量)說(shuō)明:從位置數(shù)據(jù)提取一個(gè)形態(tài)舉例DIM lp1 AS posePli1=FIG(lp1) 指定一個(gè) lp1 的形態(tài)給 li1GOHOME功能移動(dòng)到 HOME 語(yǔ)句定義的坐標(biāo)位置 FOXBOT編程手

8、冊(cè) 4 格式: GOHOME說(shuō)明:移動(dòng)機(jī)器人使用 PTP 控制從當(dāng)前位置到 HOME 位置使用 HOME 語(yǔ)句聲明一個(gè)原點(diǎn)位置如果沒(méi)有設(shè)置 HOME執(zhí)行這個(gè)語(yǔ)句將會(huì)出現(xiàn)錯(cuò)誤。舉例GOHOME 機(jī)器人從當(dāng)前位置移動(dòng)到原點(diǎn)位置HOME功能聲明任意位置為原點(diǎn)位置格式HOME 說(shuō)明聲明任意的位置類(lèi)型的坐標(biāo)作為原點(diǎn)位置舉例Dim JJ As poseJSpeed 30JJ.J5 = 20 賦值 20 度給 JJ.J5,其他 JJ 的組成是 0Home JJ 設(shè)置 JJ 作為原點(diǎn)位置GoHome 移動(dòng)到原點(diǎn)位置EndIN功能IO 變量值賦給指定變量格式IN IO 變量舉例!TITLE EXAMPLE_IN

9、Dim li1 As Integer Declare li1 and li2 as IntegerDim li2 As Integer Declare samp1 as Type IO variable,DEFIO samp1 = Integer, 48 length is 16 (integer), starting from IO(48) Get the current IO status defined in samp1 into integer format and assign it to li1In li1 = samp1 Get IO status starting from 5

10、6 into an integer and assign it to li2In li2 = IO(56) Show li1 and li2 FOXBOT編程手冊(cè) 5 (if only IO(56) is on, li1 = 256 meaning 100000000 in binary starting from port 48 and li2 = 1)MsgBox li1 = & li1 & Chr(13) & Chr(10) _& li2 = & li2J2P功能關(guān)節(jié)類(lèi)型變量轉(zhuǎn)換成位置類(lèi)型變量。格式J2P,舉例Dim lj1 as poseJDim

11、 lp1 as posePlj1.j1=0lj1.j2=0lj1.j3=0lj1.j4=0lj1.j5=0lj1.j6=0J2P lj1,lp1Msgbox lp1.x & “ ”lp1.y& “ ”lp1.z_ lp1.rx & “ ”lp1.ry& “ ”lp1.rzMOVE功能移動(dòng)機(jī)器人末端操作器到指定坐標(biāo)。格式MOVE, , ,說(shuō)明移動(dòng)機(jī)器人從當(dāng)前位置到指定的目標(biāo)位置。對(duì)于位置類(lèi)型,關(guān)節(jié)類(lèi)型可以使用。插補(bǔ)方法說(shuō) 明P(PTP)PTP(點(diǎn)到點(diǎn))運(yùn)動(dòng)從一個(gè)點(diǎn)到另一個(gè)點(diǎn)機(jī)器人移動(dòng)的路徑依賴(lài)機(jī)器人的姿態(tài)不是一條直線。 運(yùn)動(dòng)路徑可以不是一條直線LCP 控制,到達(dá)目

12、標(biāo)位置的路徑是一條直線運(yùn)動(dòng)路徑是一條直線機(jī)器人手臂從一個(gè)運(yùn)動(dòng)到另一個(gè)運(yùn)動(dòng)有三種方法確定第一個(gè)運(yùn)動(dòng)的完成。AB FOXBOT編程手冊(cè) 6 0:運(yùn)動(dòng)位置到達(dá)目標(biāo)位置就算到達(dá)。P:實(shí)際位置到達(dá)目標(biāo)位置附近即算到達(dá),且不減速而往下一位置。E:編碼器值核實(shí)點(diǎn), 實(shí)際位置到達(dá)目標(biāo)位置,停下來(lái)檢查編碼器的值是否在一定時(shí)間內(nèi)不超出一定範(fàn)圍才算到達(dá)。下面的例子都是機(jī)器人從當(dāng)前位置 P1 經(jīng)過(guò) P2到達(dá) P3PROGRAM PASS_MOVETAKEARM MOVE P, P , P(2) ,S=10MOVE P, 0 , P(3) ,S=10ENDPROGRAM END_MOVETAKEARMMOVE L, 0

13、 , P(2),S=10MOVE L, 0 , P(3),S=10ENDPROGRAM ENCODER_MOVETAKEARMMOVE L,E, P(2),S=10MOVE L,0, P(3),S=10ENDOUT功能給輸出 IO 變量賦值格式OUT =舉例!TITLE EXAMPLE_OUTDim li1 As Integer Declare li1 as Integer Declare samp1 as Type IO variable, length is 16 (integer), starting from IO(30)DEFIO samp1 = Integer, 30 assign

14、 25-1 = 31 (11111 in Hex value) to li1li1 = 25-1 Output the li1 data from the port declared in samp1Out samp1 = li1 Delay 3 secondsDelay 3000 assign 25-1 = 31 (11111 in Hex value) to li1li1 = 25-1 Output the li1 data from the port 38Out IO(38) = li1經(jīng)過(guò)運(yùn)動(dòng)(P)P1P2P3伺服偏離(0)P1P2P3編碼器值檢查運(yùn)動(dòng)(E)P1P2P3 FOXBOT編

15、程手冊(cè) 7 POSRX功能獲得繞 X 軸旋轉(zhuǎn)的角度格式POSRX 舉例Dim lf1 As SingleDEFPOS lplp1=CURPOSElf1=POSRX(lp1)指定 X 軸旋轉(zhuǎn) lp1 部分給 lf1POSRY功能獲得繞 Y 軸旋轉(zhuǎn)的角度格式POSRY舉例Dim lf1 As SingleDEFPOS lplp1=CURPOSElf1=POSRY(lp1)指定 Y 軸旋轉(zhuǎn) lp1 部分給 lf1POSRZ功能獲得繞 Z 軸旋轉(zhuǎn)的角度格式POSRZ說(shuō)明從位置坐標(biāo)系中提出繞 Z 軸旋轉(zhuǎn)部分舉例Dim lf1 As SingleDEFPOS lplp1=CURPOSElf1=POSRZ(

16、lp1) 指定 Z 軸旋轉(zhuǎn) lp1 部分給 lf1POSX功能獲得 X 坐標(biāo)格式POSX 舉例DIM lf1 As SingleDEFPOS lp1lf1=POSX(lp1) 指定 lp1 的 X 部分給 lf1 FOXBOT編程手冊(cè) 8 POSY功能獲得 Y 坐標(biāo)格式POSY 說(shuō)明從位置類(lèi)型或向量類(lèi)型坐標(biāo)值提出 Y 部分。舉例DIM lf1 As SingleDIM lp1 As posePlf1=POSY(lp1) 指定 lp1 的 Y 部分給 lf1POSZ功能獲得 Z 坐標(biāo)格式POSZ 說(shuō)明從位置類(lèi)型變量坐標(biāo)值提出 Z 部分。舉例DIM lf1 As SingleDIM lp1 As

17、posePlf1=POSZ(lp1) 指定 lp1 的 Z 部分給 lf1RESETIO功能設(shè)置一個(gè) IO 口為 OFF格式RESETIO 說(shuō)明 設(shè)置通過(guò) IO 變量標(biāo)明的端口為 OFF舉例!titile “example_setio”takearmRESETIO IO(40) 設(shè)置 IO40 為 OFFROBOTSTOP功能機(jī)器人運(yùn)行停止格式ROBOTSTOP說(shuō)明機(jī)器人進(jìn)入持續(xù)停止?fàn)顟B(tài)關(guān)閉馬達(dá)電源關(guān)閉機(jī)器人正在操作的輸出信號(hào)。舉例PROGRAM TSR1ROBOTSTOP 停止機(jī)器人 END FOXBOT編程手冊(cè) 9 ROTATE功能繞指定向量執(zhí)行旋轉(zhuǎn)運(yùn)動(dòng)格式ROTATE , ,說(shuō)明旋轉(zhuǎn)平面

18、XYH,XZH,YZH; XY,XZ,YZ旋轉(zhuǎn)平面與 XYH,XZH,YZH 平行,向量是相對(duì)工具坐標(biāo)系,旋轉(zhuǎn)平面與 XY,YZ,YZ 平行向量是相對(duì)工件坐標(biāo)系半徑應(yīng)是向量在指定平面的投影距離。注意機(jī)器人 6 軸端面與指定旋轉(zhuǎn)平行才能畫(huà)圓。范例 Assign J(0) position J(0).J1 = 0J(0).J2 = 0J(0).J3 = 90J(0).J4 = 0J(0).J5 = 30J(0).J6 = 0 Move to J(0)MOVE P, J(0), S=50 Assign J(0).J2 a new positionJ(0).J2 = 60 Move to new J(

19、0)MOVE P, J(0), S=50 Rotate 360 degree on XY plan around a vector V(0) described in Tool Coordinate ROTATE XYH,360,V(0),S=100 Assign J(0).J2 a new positionJ(0).J2 = 0 Move to new J(0)MOVE P, J(0), S=50EndSETIO功能設(shè)置一個(gè) IO 口為 ON。格式SET IO (IO 變量)說(shuō)明設(shè)置指定 IO 為 ON舉例!titile “example_setio”takearmSETIO (40) FO

20、XBOT編程手冊(cè) 10 設(shè)置 IO(24)點(diǎn)為 ONSPEED功能指定內(nèi)部關(guān)節(jié)合成速度。格式SPEED 說(shuō)明運(yùn)動(dòng)速度是內(nèi)部關(guān)節(jié)合成最大速度的百分比()范圍:0.1-100 最大速度是指 TCP 點(diǎn)的最大速度舉例SPEED 50機(jī)器人有內(nèi)部速度和外部速度。外部速度是指示教器上設(shè)定的速度內(nèi)部速度是指用 SPEED 指令設(shè)定的值。實(shí)際速度=最大速度*內(nèi)部速度*外部速度例如內(nèi)部速度=70%外部速度 30%實(shí)際速度=最大速度*0.7*0.3舉例SPEED 50WAIT功能程序停止直到條件滿足。格式WAIT 說(shuō)明:程序被停止直到條件被滿足。舉例:WAIT IO(10) = ON 程序等一直到 IO(10)

21、為 ON 注 意 不能在指令后直接添加注釋需要另取一行以單引號(hào)()開(kāi)頭。程序編寫(xiě)后不能以只讀(only read)的方式存儲(chǔ)。 FOXBOT編程手冊(cè) 11 附錄附錄 FOXBOT編程手冊(cè) 12 指令說(shuō)明頁(yè)數(shù)ACCEL指定內(nèi)部加速度比例CURPOS取得目前的位置 (type P 格式)DECEL指定內(nèi)部減速度比例DEFIO宣告 IO 變數(shù)DEFJNT宣告 Joint type 變數(shù)DEFPOS宣告 Position type 變數(shù)DELAY使程式執(zhí)行延遲一段指定的時(shí)間DIST取得兩點(diǎn)間的距離DRIVE執(zhí)行單軸之相對(duì)運(yùn)動(dòng)DRIVEA執(zhí)行單軸之絕對(duì)運(yùn)動(dòng)FIG取得一 type P 變數(shù)之 figure

22、 值GOHOME移動(dòng)至 HOME 指令所指定之位置 (Home 位置)HOME指定 Home 位置IN將 IO 埠狀態(tài)資料給一變數(shù) (此資料定義於一 IO 變數(shù)內(nèi))J2P關(guān)節(jié)變量轉(zhuǎn)換成位置變量MOVE移動(dòng)至指定的位置OUT輸出 IO 狀態(tài)資料至 IO 埠 (此 IO 埠定義於一 IO 變數(shù)內(nèi))POSRX取得一 type P 變數(shù)之 RX 值POSRY取得一 type P 變數(shù)之 RY 值POSRZ取得一 type P 變數(shù)之 RZ 值POSX取得一 type P 變數(shù)之 X 值POSY取得一 type P 變數(shù)之 Y 值POSZ取得一 type P 變數(shù)之 Z 值RESETIO使一個(gè) IO 埠

23、設(shè)為 OFFROBOTSTOP使 robot 停止並 SERVO OFFROTATE對(duì)某一指定向量作旋轉(zhuǎn)運(yùn)動(dòng)SETIO使一個(gè) IO 埠設(shè)為 ONSPEED指定內(nèi)部速度比例WAIT根據(jù)某一狀況暫停程式執(zhí)行Cypress Enable編輯器編輯器語(yǔ)言參考手冊(cè)語(yǔ)言參考手冊(cè)目 錄CYPRESS ENABLE 程序編寫(xiě)規(guī)范.0注釋.0數(shù)字.0變量和常量名.0變量類(lèi)型.1其他數(shù)據(jù)類(lèi)型.2控制結(jié)構(gòu).3子程序和函數(shù).5BYREF & BYVAL參數(shù)傳遞.5文件輸入輸出.6數(shù)組.7腳本語(yǔ)言概述.8函數(shù)和語(yǔ)句快速參考.8語(yǔ)言參考 A-Z .12ABS函數(shù) .12ASC函數(shù) .12ATN函數(shù).13CBOOL

24、 函數(shù).13CDATE 函數(shù).13CDBL 函數(shù).14CHR 函數(shù) .14CINT 函數(shù).15CLNG函數(shù) .15CLOSE 語(yǔ)句.15CONST 語(yǔ)句 .16COS函數(shù) .17CSNG函數(shù).17CSTR 函數(shù) .17CVAR 函數(shù) .18DATE函數(shù).18DAY 函數(shù).19DIM 語(yǔ)句.19DO.LOOP語(yǔ)句.20END語(yǔ)句.20 FOXBOT編程手冊(cè) 1 EOF 函數(shù) .21EXIT語(yǔ)句 .21EXP函數(shù).22FILECOPY函數(shù).22FILELEN函數(shù) .22FIX函數(shù).22FOR EACH NEXT語(yǔ)句.23FOR.NEXT語(yǔ)句.23FREEFILE函數(shù).24FUNCTION 語(yǔ)句.2

25、4GLOBAL語(yǔ)句.25GOTO 語(yǔ)句 .26HOUR函數(shù).26IF.THEN.ELSE語(yǔ)句.26INPUT #語(yǔ)句.27INPUT 函數(shù).28INSTR函數(shù).28INT函數(shù).29ISARRAY函數(shù) .29ISDATE函數(shù).29函數(shù) ISEMPTY.30ISNULL函數(shù).30ISNUMERIC函數(shù).30KILL語(yǔ)句 .31LBOUND函數(shù).31LCASE函數(shù).32LEFT函數(shù).32LEN函數(shù).33LET 語(yǔ)句.33LINE INPUT #語(yǔ)句.34LOF 函數(shù) .34LOG函數(shù).34函數(shù) MID.35MINUTE函數(shù).35MONTH函數(shù).36NAME語(yǔ)句.36NOW函數(shù).36ON ERROR語(yǔ)

26、句.36 FOXBOT編程手冊(cè) 2 OPEN語(yǔ)句 .37OPTION BASE語(yǔ)句.38OPTION EXPLICIT語(yǔ)句.38PRINT方法.39RANDOMIZE語(yǔ)句.41REDIM 語(yǔ)句.41REM語(yǔ)句.41RIGHT 函數(shù).42RND函數(shù).43SECOND函數(shù).43SEEK 函數(shù).44SEEK 語(yǔ)句.44SELECT CASE 語(yǔ)句.45SENDKEYS函數(shù).46SIN 函數(shù).46SPACE函數(shù).47SQR 函數(shù).47STATIC語(yǔ)句.48STOP 語(yǔ)句.48STR 函數(shù).49STRCOMP函數(shù) .49STRING 函數(shù) .50SUB 語(yǔ)句.50TAN 函數(shù) .51TIME 函數(shù).51

27、TIMER事件.51TRIM, LTRIMRTRIM函數(shù).52TYPE 語(yǔ)句.52UBOUND函數(shù).53UCASE 函數(shù).54VAL函數(shù).54VARTYPE.54WEEKDAY 函數(shù).55WHILE.WEND 語(yǔ)句.55WRITE # 語(yǔ)句.56YEAR函數(shù).56 FOXBOT編程手冊(cè) 0 Cypress Enable 程序編寫(xiě)規(guī)范程序編寫(xiě)規(guī)范這部分主要描述 Enable 語(yǔ)言的一般元素,包括注釋語(yǔ)句數(shù)字的不同表達(dá)形式變量數(shù)據(jù)類(lèi)型(包括用戶定義類(lèi)型)多流程程序控制結(jié)構(gòu)等。注釋注釋格式 注釋內(nèi)容說(shuō)明注釋是不可執(zhí)行的代碼行是為了便于編程人員閱讀程序而加入的。注釋目前只能單獨(dú)占一行Enable 將忽

28、略出現(xiàn)在撇號(hào)或者 Rem 之后的任何文本。Rem 和所有其他的關(guān)鍵字以及 Enable 的大部分名稱(chēng)都是大小寫(xiě)不敏感的。范例MsgBox Msg 顯示信息語(yǔ)句語(yǔ)句說(shuō)明在 Enable 里沒(méi)有語(yǔ)句結(jié)束符一行可以放多條語(yǔ)句通過(guò)“:”隔開(kāi)。范例x.AddPoint(25,100) : x.AddPoint(0,75)等價(jià)于x.AddPoint(25,100)x.AddPoint(0,75)續(xù)行符續(xù)行符在 Enable 中續(xù)行符用下劃線 “_”表示在續(xù)行符”_”前后都要有空格。范例x.AddPoint _ (25,100)數(shù)字?jǐn)?shù)字Cypress Enable 支持三種數(shù)字表達(dá)形式十進(jìn)制八進(jìn)制和十六進(jìn)制

29、。本手冊(cè)中所使用的大部分?jǐn)?shù)字用十進(jìn)制表示。使用八進(jìn)制或者十六進(jìn)制需要分別在數(shù)字前加前綴”&O”或”&H”。變量和常量名變量和常量名 FOXBOT編程手冊(cè) 1 變量和常量名必須以字母開(kāi)頭可以包含大寫(xiě)字母 AZ小寫(xiě)字母 az下劃線”_”和數(shù)字 09。變量與常量名都不超過(guò) 40 個(gè)字符也不能使用保留字(可參見(jiàn)本手冊(cè)語(yǔ)言概述部分的保留字表)。但是對(duì)象成員名和屬性名不受此項(xiàng)規(guī)則的限制可以使用保留字。變量類(lèi)型變量類(lèi)型Variant 變體變量變體變量說(shuō)明與 VB 類(lèi)似當(dāng)在 Cypress Enable 中引入變量時(shí)不必在首行聲明(如果使用了 option explicit 則例外可參見(jiàn) op

30、tion explicit 說(shuō)明)。如果使用一個(gè)變量但沒(méi)有事先聲明則系統(tǒng)隱式聲明其為 Variant 類(lèi)型。Variant 變量也可以使用”As variant”以 Dim x As Variant 的形式顯式地聲明。Variant 數(shù)據(jù)類(lèi)型能夠存儲(chǔ)數(shù)值字符串日期和時(shí)間。使用 Variant 類(lèi)型變量時(shí)不必顯式地從一個(gè)類(lèi)型轉(zhuǎn)換到另外一個(gè)類(lèi)型數(shù)據(jù)類(lèi)型轉(zhuǎn)換是自動(dòng)完成的。格式Dim 變量名 As 變量類(lèi)型范例Sub MainDim x variant variablex = 10 x = x + 8x = F & x print x prints F18End Sub一個(gè) Variant 類(lèi)

31、型變量可以很容易地改變其類(lèi)型其內(nèi)部表示可以使用 VarType 函數(shù)確定。VarType 返回一個(gè)與顯式數(shù)據(jù)類(lèi)型一致的值(可在語(yǔ)言參考 AZ 參見(jiàn) VarType 的返回值)。當(dāng)以 Variant 變量存儲(chǔ)數(shù)據(jù)時(shí)所使用的數(shù)據(jù)類(lèi)型總是盡可能緊湊的。比如如果對(duì)Variant 變量賦值一個(gè)很小的整數(shù)值它將以 integer 類(lèi)型存儲(chǔ)如果賦值的數(shù)據(jù)包含小數(shù)部分將以 double 類(lèi)型存儲(chǔ)。 FOXBOT編程手冊(cè) 2 如果運(yùn)用 Variant 變量進(jìn)行數(shù)值運(yùn)算往往有必要確定其存儲(chǔ)的是否是有效的數(shù)值從而避免出錯(cuò)。這可由 IsNumeric 函數(shù)實(shí)現(xiàn)。變體變量和串聯(lián)變體變量和串聯(lián)字符串和數(shù)字串聯(lián)的結(jié)果是字符

32、串。使用”&”操作符可以確保無(wú)論何種數(shù)據(jù)類(lèi)型都能連接成功&操作符不能對(duì)數(shù)值進(jìn)行數(shù)學(xué)運(yùn)算它只是簡(jiǎn)單地把它們當(dāng)作字符串連接起來(lái)。可以使用 IsEmpty 函數(shù)確認(rèn) Variant 變量之前是否被賦過(guò)值。其他數(shù)據(jù)類(lèi)型其他數(shù)據(jù)類(lèi)型Cypress Enable 有 12 個(gè)數(shù)據(jù)類(lèi)型在下表只列出常用的幾種數(shù)據(jù)類(lèi)型表數(shù)據(jù)類(lèi)型表類(lèi) 型類(lèi)型聲明符存儲(chǔ)空間大小范圍類(lèi)型聲明Byte1 字節(jié)0 to 255Dim Bvar As ByteBoolean2 個(gè)字節(jié)Dim Boolvar As BooleanString$字符串長(zhǎng)度0 to 65,500 字符 Dim Str Var As StringI

33、nterger%2 字節(jié)Dim Int_Var As IntegerLong &4 字節(jié)Dim Long_Var As LongSingle!4 字節(jié)Dim Sing_Var As SingleDouble #8 字節(jié)Dim Dbl_Var As DoubleVariant按需分配Dim X As AnyUser Defined Type每個(gè)元素的尺寸之和變量范圍變量范圍Cypress Enable 程序可由多個(gè)文件組成每個(gè)文件可包含多個(gè)子程序和函數(shù)。不同的文件中變量名可以重復(fù)使用變量可以是局部的也可以是全局的。變量的聲明變量的聲明在 Cypress Enable 中變量用 DIM 語(yǔ)

34、句聲明。要聲明一個(gè)除 variant 類(lèi)型之外的變量必須在變量名后跟隨 As 說(shuō)明變量類(lèi)型或者附加類(lèi)型聲明符。例如%代表 Integer 類(lèi)型。 FOXBOT編程手冊(cè) 3 格式Dim 變量名 As 變量類(lèi)型范例Sub MainDim X As IntegerDim Y As DoubleDim Name$,Age% multiple declaration on one line Dim vEnd Sub控制結(jié)構(gòu)控制結(jié)構(gòu)Cypress Enable 有完整的過(guò)程控制功能可用的控制結(jié)構(gòu)有 Do 循環(huán)While 循環(huán)For循環(huán)Select Case If Then 和 If Then Else。另

35、外Cypress Enable 還有一個(gè)跳轉(zhuǎn)語(yǔ)句GoTo。GoTo 語(yǔ)句跳轉(zhuǎn)到語(yǔ)句所指定的標(biāo)號(hào)處。范例Goto label1 .label1:程序跳到以”Label1:”所標(biāo)記的部分循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是指程序重復(fù)執(zhí)行循環(huán)語(yǔ)句中的一行或多行代碼。DO 循環(huán)循環(huán)Do.Loop 循環(huán)允許以不確定的次數(shù)重復(fù)執(zhí)行某個(gè)語(yǔ)句塊。Do.Loop 的變種有 Do While 和 Do Loop While。格式Do While 條件語(yǔ)句塊.Exit Do語(yǔ)句塊.LoopDo 語(yǔ)句塊.Loop While 條件Do While 在進(jìn)入循環(huán)體之前檢查條件當(dāng)條件滿足時(shí)才執(zhí)行循環(huán)體里的程序塊。Do Loop Wh

36、ile 在執(zhí)行語(yǔ)句塊之后檢查條件,因此可以保証語(yǔ)句塊至少執(zhí)行一次。While 循環(huán)循環(huán) FOXBOT編程手冊(cè) 4 While Wend 循環(huán)與 Do While 循環(huán)類(lèi)似在執(zhí)行循環(huán)體之前檢查循環(huán)條件。While 條件語(yǔ)句塊.WendFor . Next 循環(huán)循環(huán)ForNext 循環(huán)有一個(gè)循環(huán)計(jì)數(shù)變量它以確定的次數(shù)執(zhí)行循環(huán)體。循環(huán)計(jì)數(shù)變量在每次執(zhí)行循環(huán)之后增加或減少。如果未用 Step 指定變化幅度計(jì)數(shù)器缺省增加 1。格式For 變量 = To Step 語(yǔ)句塊.NextIf 和和 Select 語(yǔ)句語(yǔ)句IfThen 塊有單行和多行語(yǔ)法。If 語(yǔ)句的條件可以是比較式或表達(dá)式但它必須可以轉(zhuǎn)化為 T

37、rue 或 False。格式If 條件 Then 語(yǔ)句塊.單行語(yǔ)法If 條件 Then 多行語(yǔ)法語(yǔ)句塊.End IfIf 語(yǔ)句的一個(gè)變種是 If.Then.Else 語(yǔ)句。根據(jù)的條件不同執(zhí)行不同語(yǔ)句塊時(shí)可使用該語(yǔ)句。還有一個(gè)變種是 If.Then.ElseIf.語(yǔ)句使用該語(yǔ)句有可能使代碼過(guò)長(zhǎng)并且難于理解此時(shí)可以考慮用 Select 語(yǔ)句代替。If 條件 Then語(yǔ)句塊.ElseIf 條件 Then語(yǔ)句塊.Else語(yǔ)句塊.End IfSelect Case Select Case 語(yǔ)句測(cè)試同一個(gè)變量的值根據(jù)不同的值執(zhí)行不同的語(yǔ)句塊。該語(yǔ)句易于閱讀理解和跟蹤應(yīng)該用該語(yǔ)句代替復(fù)雜的 If.Then.

38、ElseIf 語(yǔ)句。格式Select Case Case 值 1語(yǔ)句塊 FOXBOT編程手冊(cè) 5 Case 值 2語(yǔ)句塊Case 值 3語(yǔ)句塊.Case Else語(yǔ)句塊End Select子程序和函數(shù)子程序和函數(shù)命名習(xí)慣命名習(xí)慣子程序和函數(shù)名必須以字母開(kāi)頭可以包含大寫(xiě)字母 AZ小寫(xiě)字母 az下劃線”_”和數(shù)字 09。子程序和函數(shù)名不超過(guò) 40 個(gè)字符且不能使用保留字(可參見(jiàn)本手冊(cè)語(yǔ)言概述部分的保留字表)。子程序格式Sub 語(yǔ)句塊End Sub函數(shù)格式Function As 語(yǔ)句塊=語(yǔ)句塊End FunctionByRef & ByVal 參數(shù)傳遞參數(shù)傳遞關(guān)鍵字 ByRef 允許其他子程

39、序和函數(shù)改變以參數(shù)形式傳入的變量關(guān)鍵字 ByVal 不允許其他子程序和函數(shù)改變以參數(shù)形式傳入的變量并且參數(shù)在它們的局部過(guò)程之外不能重新賦值。ByRef 是 Enable 的默認(rèn)參數(shù)傳遞方式不需要顯式說(shuō)明。在傳遞參數(shù)時(shí)可以用()強(qiáng)制進(jìn)行 ByVal 傳遞。如下例SubOne var1,var2,(var3)參數(shù) var1,var2 以 ByRef 方式傳遞形參指向?qū)崊?nèi)存單元當(dāng) SubOne 形參被改變時(shí)實(shí)參也將改變參數(shù) var3 用()強(qiáng)制以 ByVal 方式傳遞在函數(shù)內(nèi)值的改變不會(huì)影響到函 FOXBOT編程手冊(cè) 6 數(shù)外變量的值。Function R( X As String, ByVal

40、n As Integer)在本例中函數(shù) R 接受兩個(gè)參數(shù) X 和 n。第二個(gè)參數(shù) n 按值傳遞當(dāng)改變形參的值時(shí)實(shí)參的值不會(huì)改變。下列樣例代碼中數(shù)組變量和用戶定義類(lèi)型變量按引用傳遞參數(shù)。范例Sub MainDim x(5) As IntegerDim i As Integerfor i = 0 to 5x(i) = inext iPrint iJoe (i), x ()強(qiáng)制 i 進(jìn)行值傳遞print should be 6: ; x(2), iEnd SubSub Joe( ByRef j As Integer, ByRef y() As Integer )print Joe: ; j, y(2

41、)j = 345for i = 0 to 5print i: ; i; y(i): ; y(i)next iy(2) = 3 * y(2)End Sub文件輸入輸出文件輸入輸出Enable 支持順序文件和二進(jìn)制文件 I/O。適用于文件訪問(wèn)的函數(shù)和語(yǔ)句有EOF, FileCopy, FileLen, Seek, Open, Close, Input, Line Input, Print 和 Write File I/O ExamplesSub MainOpen TESTFILE For Input As #1 Open file.Do While Not EOF(1) Loop until en

42、d of file.Line Input #1, TextLine Read line into variable.Print TextLine Print to Debug window.LoopClose #1 Close file.End SubSub FileIO_Example()Dim Msg Declare variable.Call Make3Files() Create data files.Msg = Several test files have been created on your disk. Msg = Msg & Choose OK to remove

43、the test files.MsgBox MsgFor I = 1 To 3Kill TEST & I Remove data files from disk.Next IEnd Sub FOXBOT編程手冊(cè) 7 Sub Make3Files ()Dim I, FNum, FName Declare variables.For I = 1 To 3FNum = FreeFile Determine next file number.FName = TEST & FNumOpen FName For Output As FNum Open file.Print #I, This

44、 is test # & I Write string to file.Print #I, Here is another ; line; INext IClose Close all files. End Sub 數(shù)組數(shù)組Cypress Enable 支持一維和多維數(shù)組。數(shù)組可以使用相同的名稱(chēng)代表一系列具有相同數(shù)據(jù)類(lèi)型的變量每個(gè)變量都有唯一的索引。數(shù)組有上下邊界。Enable 為數(shù)組中的每個(gè)索引數(shù)據(jù)分配內(nèi)存空間。在使用中定義數(shù)組不要不必要地過(guò)長(zhǎng)。數(shù)組中所有的元素都有相同的數(shù)據(jù)類(lèi)型。Enable 支持的數(shù)組變量類(lèi)型有bytes, Booleans, longs, integers, s

45、ingles, double, strings, variants 以及用戶自定義類(lèi)型。聲明固定大小數(shù)組的方法有全局?jǐn)?shù)組使用 Dim 語(yǔ)句在過(guò)程代碼模塊之外聲明數(shù)組局部數(shù)組使用 Dim 語(yǔ)句在過(guò)程內(nèi)聲明數(shù)組。Cypress Enable 支持動(dòng)態(tài)數(shù)組。聲明數(shù)組時(shí)必須給出數(shù)組上邊界并且上邊界必須是整數(shù)。范例Dim ArrayName(10) As IntergerDim Sum(20) As Double創(chuàng)建全局?jǐn)?shù)組時(shí)只須在過(guò)程之外使用 Dim 語(yǔ)句。Dim Counters(12) As IntegerDim Sums(26) As Double 在過(guò)程內(nèi)聲明數(shù)組使用 Static 語(yǔ)句與使用

46、 Dim 語(yǔ)句效果相同。Static Counters (10) As IntegerStatic Sums (22) As Double第一個(gè)聲明創(chuàng)建一個(gè)具有 11 個(gè)元素的數(shù)組下標(biāo)從 0 到 10。若要改變?nèi)笔〉南逻吔?FOXBOT編程手冊(cè) 8 可在模塊聲明區(qū)域放置一個(gè) Option Base 語(yǔ)句。Option Base 1另一個(gè)方法是使用 To 關(guān)鍵字顯式指定下邊界(-3276832767 的整數(shù))。Dim Counters (1 To 13) As IntegerDim Sums (100 To 126) As String在前一個(gè)聲明中數(shù)組 Counters 的下標(biāo)索引從 1 到

47、13數(shù)組 SUM 的下標(biāo)索引從 100到 126。注意注意許多其他的 Basic 版本允許不事先聲明就可以使用數(shù)組Enable Basic 不允許這么做在使用前必須聲明。循環(huán)提供了一種有效的處理數(shù)組的方法。例如下例中 For 循環(huán)將數(shù)組所有元素初始化為 5Static Counters (1 To 20) As IntegerDim I As IntegerFor I = 1 To 20Counter ( I ) = 5Next I多維數(shù)組多維數(shù)組Cypress Enable 支持多維數(shù)組例如下面范例在過(guò)程內(nèi)聲明了一個(gè)二維數(shù)組Static Mat(20, 20) As Double可以明確聲明

48、數(shù)組任意一維或者兩維的下邊界。Static Mat(1 to 10, 1 to 10) As Double可以使用 For 循環(huán)有效處理多維數(shù)組。在下列語(yǔ)句中多維數(shù)組的元素被賦值。Dim L As Integer, J As IntegerStatic TestArray(1 To 10, 1 to 10) As DoubleFor L = 1 to 10For J = 1 to 10TestArray(L,J) = I * 10 + JNext JNext L數(shù)組的維數(shù)可以多于兩維。Enable 中數(shù)組的上邊界不能任意。Dim ArrTest(5, 3, 2)如果沒(méi)有在之前的代碼中使用語(yǔ)句

49、Option Base 1則該聲明創(chuàng)建的三維數(shù)組的大小為(6,4,3)。Option Base 1 語(yǔ)句設(shè)置數(shù)組的下邊界為 1而不是默認(rèn)的 0。腳本語(yǔ)言概述腳本語(yǔ)言概述函數(shù)和語(yǔ)句快速參考函數(shù)和語(yǔ)句快速參考 FOXBOT編程手冊(cè) 9 類(lèi)型類(lèi)型/函數(shù)函數(shù)/語(yǔ)句語(yǔ)句控制流程控制流程Goto, End, OnError, Stop, Do.Loop, Exit Loop, For.Next, Exit For, If.Then.Else.End If, Stop, While.Wend, Select Case轉(zhuǎn)換轉(zhuǎn)換Chr, Hex, Oct, Str, CDbl, CInt, Clng, CSng

50、, CStr, CVar, CDate, Asc, Val, Date, Fix, Int, Day, Weekday, Month, Year, Hour, Minute, Second文件文件 I/OFileCopy, Open, Close, Print #, Kill, FreeFile, LOF, FileLen, Seek, EOF, Write #, Input, Line Input, Name, Put數(shù)學(xué)數(shù)學(xué)Exp, Log, Sqr, Rnd, Abs, Sgn, Atn, Cos, Sin, Tan, Int, Fix過(guò)程過(guò)程Function, End Function

51、, Sub, End Sub, Exit, Global字符串字符串Let, Len, InStr, Left, Mid, Asc, Chr, Right, LCase, Ucase, InStr, LTrim, RTrim, Trim, Option Compare, Len, Space, String, StrComp變量和常數(shù)變量和常數(shù)Dim, IsNull, IsNumeric,VarType, Const, IsDate, IsEmpty, IsNull, Option Explicit, Global, Static錯(cuò)誤處理錯(cuò)誤處理On Error, Resume日期日期/時(shí)間時(shí)

52、間Date, Now, Time, Timer數(shù)組數(shù)組Option Base, Option Explicit, Static, Dim, Global, Lbound, Ubound, Erase, ReDim 其他其他SendKeys, Rem數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型變 量類(lèi)型說(shuō)明用 法String$Dim Str_Var As StringInteger%Dim Int_Var As Integer FOXBOT編程手冊(cè) 10 Long&Dim Long_Var As LongSingle!Dim Sing_Var As SingleDouble#Dim Dbl_Var As Doubl

53、eVariantDim X As AnyBooleanDim X As BooleanByteDim X As Byte運(yùn)算符運(yùn)算符算朮運(yùn)算符運(yùn)算符功 能用 法乘方x = y2負(fù)數(shù)x = -2*乘法x% = 2 * 3/除法x = 10/2Mod取余數(shù)x = y Mod z+加法x = 2 + 3減法x = 6 - 4*算朮運(yùn)算符遵從算朮優(yōu)先級(jí)規(guī)則+ or &可用于字符串連接運(yùn)算符在表達(dá)式中的優(yōu)先級(jí)運(yùn)算符在表達(dá)式中的優(yōu)先級(jí)操作數(shù)描 述運(yùn)算符運(yùn)算順序()括號(hào)最高乘冪負(fù)號(hào)/,*除/乘mod求余+, -, &加減與=, , ,=關(guān)系not邏輯非and邏輯與or邏輯或Xor邏輯異或Eq

54、v邏輯等關(guān)系運(yùn)算符關(guān)系運(yùn)算符操作數(shù)功 能用 法小于XY=小于等于X=大于等于X=Y大于XY不等于XY邏輯運(yùn)算符邏輯運(yùn)算符操作數(shù)功 能用 法 Not邏輯非If Not (x)And邏輯與If (x y) And (x ) Returns THIS IS IT.End SubDay 函數(shù)函數(shù)格式Day(dateexpression)功能返回一個(gè)與傳入的 dateexpression 字符串相對(duì)應(yīng)的 variant 類(lèi)型日期數(shù)據(jù)。Dateexpression 可以是字符串或者任何能代表日期的表達(dá)式。相關(guān)主題Month, Weekday, Hour, Second范例Sub MainDim MDate

55、, MDayMDate = #May,29,1959#MDay = Day(MDate)Print The Day listed is the & MDayEnd SubDim 語(yǔ)句語(yǔ)句格式Dim 變量名(下標(biāo))As Type,nameAs Type功能聲明變量或者數(shù)組。目前支持的數(shù)據(jù)類(lèi)型有integerlong singledoublestring和 variant。范例Sub MainDim x As Long FOXBOT編程手冊(cè) 20 Dim y As IntegerDim z As singleDim a As doubleDim s As StringDim v As Va

56、riant This is the same as Dim x or Dim x as anyEnd SubDo.Loop 語(yǔ)句語(yǔ)句格式:Do While|Until條件語(yǔ)句塊Exit Do 語(yǔ)句塊LoopDo 語(yǔ)句塊Exit Do 語(yǔ)句塊Loop While|Until 條件功能:當(dāng)條件為真或者滿足時(shí)重復(fù)執(zhí)行一組語(yǔ)句。相關(guān)主題:While, Wend范例:Sub Main ()Dim Value, Msg Declare variables.DoValue = InputBox(Enter a value from 5 to 10.)If Value = 5 And Value = 5 An

57、d Value = 10 ThenCheck range.Exit Do Exit Do.Loop. FOXBOT編程手冊(cè) 22 ElseBeep Beep make some noise.End IfLoopEnd SubExp 函數(shù)函數(shù)格式:Exp(num)功能:返回以自然對(duì)數(shù) e 為底的指數(shù)函數(shù)值,常量 e 的近似值是 2.71828。相關(guān)主題:Log范例:Sub ExpExample ()Exp(x) is e x so Exp(1) is e 1 or e.Dim Msg, ValueOfEDeclare variables.ValueOfE = Exp(1)Calculate va

58、lue of e.Msg = The value of e is & ValueOfEMsgBox MsgDisplay message.End SubFileCopy 函數(shù)函數(shù)格式:FileCopy(sourcefile, destinationfile)功能:從源文件復(fù)制文件到目的文件。參數(shù) sourcefile, destinationfile 必須是有效的字符串表達(dá)式。Sourcefile 是被拷貝的文件名, destinationfile 是拷貝的文件名。范例:Dim SourceFile, DestinationFileSourceFile = SRCFILE Define

59、 source file name.DestinationFile = DESTFILE Define target file name.FileCopy SourceFile, DestinationFile Copy source to target.FileLen 函數(shù)函數(shù)格式:FileLen(filename)功能:返回以字節(jié)表示的文件長(zhǎng)度返回值類(lèi)型是 long integer 類(lèi)型。相關(guān)主題:LOF 函數(shù)范例:Sub MainDim MySizeMySize = FileLen(C:TESTFILE)Returns file length (bytes).Print MySizeEn

60、d SubFix 函數(shù)函數(shù) FOXBOT編程手冊(cè) 23 格式:Fix(數(shù)字)功能:返回一個(gè)數(shù)的整數(shù)部分。相關(guān)主題:Int范例:Sub MainDim MySizeMySize = Fix(4.345)Print MySizeEnd SubFor each Next 語(yǔ)句語(yǔ)句格式:For Each element in group語(yǔ)句塊Exit For語(yǔ)句塊Next element功能:對(duì)于在某個(gè)集合中的每一個(gè)數(shù)組元素重復(fù)執(zhí)行一組語(yǔ)句。如果每個(gè)循環(huán)元素都是唯一的 For each Next 可以嵌套使用。For Each.Next 語(yǔ)句不能使用用戶自定義類(lèi)型的數(shù)組。范例:Sub Maindim z(1 to 4) as doublez(1) = 1.11z(2) = 2.22For Each v In zPrint vNext vEnd SubFor.Next 語(yǔ)句語(yǔ)句格式:For 計(jì)數(shù)器= to step 增量語(yǔ)句組Next 計(jì)數(shù)功能:以指定的次數(shù)循環(huán)執(zhí)行一個(gè)語(yǔ)句塊。范例:Sub main () FOXBOT編程手冊(cè) 24 D

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論