→ EdisonX: 很多 os 都不再支援了, 未來第一個面臨的是升級問題 09/19 12:04
→ EdisonX: 再來是有很多更好的 compiler / IDE 可以取代 tc09/19 12:04
: 我們實驗室都用DOS寫TC搭配AD/DA卡作馬達控制
首先我還是要再強調一次,如果可以移到其他 OS 的話請盡早移吧,
控制 AD/DA card 或 motor control ,幾乎所有 compiler / IDE 都辦得到,
畢竟這屬簡單 IO 控制。
回歸正題,所有的閃爍現象原因都是如此:
畫上現在的文字背景(A) --> 清除成預設的文字背景(B) --> 畫上更新的文字背景(C)
換句話說,只要把 "清除" 的動作拿掉就不會造成閃爍,也就是不要用 clear device。
不論是 DOS / Console 程式還是 Windows 程式,目前的手法有兩種作法,
都必須把顯示資料存在記憶體裡做後續的繪制,這塊記憶體假設叫 BUF_CUR。
第一種作法是在運算時更新 BUF_CUR 內容,在顏色、文字完全相同時就不更新,
不同才更新,這方法是我在 TRACE 早期 TC 時代專案發現前輩先進使用的方法,
但說實在話,這方法我覺得維護 UI 顯示那裡很複雜、鎖碎。
第二種是準備另一個 BUF_NXT ,目前顯示的是 BUF_CUR,運算完後先把顯示內容
貼到 BUF_NXT,最後再將 BUF_NXT 貼到 BUF_CUR 裡去做顯示,中間一樣不呼叫
clear device。
以上,供參閱。
--
「自從我學了 C# , 人都變聰明 , 考試都考一百分」
「自從我學了 VB , 皮膚都變好 , 人也變漂亮了 」
「自從我學了 Java , 明顯變壯 , 個子也變高了 」
「自從我學了 C++ , 內分泌失調 , 頭都禿了... 」
< Kuso 星爺語錄 >
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.169.158
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1442637680.A.5A9.html
※ 編輯: EdisonX (123.195.169.158), 09/19/2015 12:44:36
推 a1781781781: 第二種方法怎能不用cleardevice? 09/20 10:50
→ a1781781781: 畫面隨時在更新的話 09/20 10:50
→ EdisonX: 沒人說畫面更新一定要先清除吧 09/20 10:58