作者choral ( über'm Sternenzelt)
看板Mechanical
標題[請益] macro executor IF STATEMENT的問題
時間Sat May 11 12:28:15 2013
因為人機介面開發的關係
用到了這套軟體 但是之前公司沒人用過
所以想請問版上的高手們
小弟遇到了關於IF使用的問題:
IF[#101 EQ 0]THEN;
G240 P1;
G204 X30 Y30 I40J50;
ENDIF;
IF[#101 EQ 1]THEN;
G240 P2;
G204 X50 Y30 I60J50;
ENDIF;
在這樣的狀態下當#101=0的時候 螢幕會出現
示意圖:
┌─┐
└─┘
在#101=1時 照理說#101現在不是0了 但是=0時的圖案還是留在畫面上
示意圖:
┌─┐┌─┐
└─┘└─┘
但是使用G230 G249等游標指令卻又沒有上述問題
小弟為此困惑已久
懇請版上高手們幫忙解惑
感謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.103.146
> -------------------------------------------------------------------------- <
作者: yuleen123 (.......................) 看板: Mechanical
標題: Re: [請益] macro executor IF STATEMENT的問題
時間: Sat May 11 13:37:06 2013
※ 引述《choral ( über'm Sternenzelt)》之銘言:
: 因為人機介面開發的關係
: 用到了這套軟體 但是之前公司沒人用過
: 所以想請問版上的高手們
: 小弟遇到了關於IF使用的問題:
: IF[#101 EQ 0]THEN;
: G240 P1;
: G204 X30 Y30 I40J50;
: ENDIF;
: IF[#101 EQ 1]THEN;
: G240 P2;
: G204 X50 Y30 I60J50;
: ENDIF;
: 在這樣的狀態下當#101=0的時候 螢幕會出現
: 示意圖:
: ┌─┐
: └─┘
:
: 在#101=1時 照理說#101現在不是0了 但是=0時的圖案還是留在畫面上
: 示意圖:
: ┌─┐┌─┐
: └─┘└─┘
: 但是使用G230 G249等游標指令卻又沒有上述問題
: 小弟為此困惑已久
: 懇請版上高手們幫忙解惑
: 感謝!!
因為 G204、G01、G02、G03、G243... 等指令是繪圖指令
其中又細分為字元畫面和圖形畫面
你可以看 G202 指令要如何清除字元畫面和圖形畫面
如果到執行 M99 Pxxx 時 #8500 的值沒有改變的話
控制器會回到 Nxxx 單節繼續執行而不會將字元畫面和圖形畫面的內容清除
所以上一次執行繪圖指令後的內容會繼續留在螢幕上
所以你要使用 G202 指令清除不想要的地方
如果執行 M99 Pxxx 時 #8500 的值有改變
那控制器就會清除整個螢幕,並且跳到指定的程式 (指令的畫面)
可以參考
http://ppt.cc/K9Mj
所以我在寫 Macro Executor 的程式時會用以下的架構
Oxxxx;
; 不會變動的畫面內容
.....
.....
; 會隨著使用者操作而變動的畫面內容
N100
.....
.....
; 讀取使用者輸入
N900
#101 = #8501
IF [#101 EQ xxx ] THEN
......
M99 P100
ENDIF;
IF [#101 EQ xxx ] THEN
......
M99 P100
ENDIF;
......
......
M99 P900
這樣的話只有第一次顯示畫面時會執行整個程式
接下來會從 N100 或 N900 處重複執行
這樣做可以降低程式的執行時間
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.1.117
推 d1d1:簡單、詳細、明瞭。讚 05/11 13:45
推 choral:原PO高手請受我一拜!!真是太感謝了!! 05/11 13:49