110 likes | 329 Views
Lego Robot. This Week. 平行處理 藍芽連線. NXC 可以同時執行多個 task ,可以用一個 task 讓機器人跑來跑去,另一個來控制感應器,第三個負責撥放音樂,但是同時執行多個 task 時有可能會互相干擾。 解決互相干擾的方法就是確保只有一個 task 在控制機器人。. mutex( 互斥 ). 為了避免互相干擾,使用 mutex 代表同一時間只有一個 task 可以擁有對它的使用權。當一個 task 獲得他的使用權之後,才可以 ” 做他想做的事 ” 。 存取 mutex 是透過 Acquire() 與 Release() 指令來完成的:
E N D
This Week 平行處理 藍芽連線
NXC可以同時執行多個task,可以用一個task讓機器人跑來跑去,另一個來控制感應器,第三個負責撥放音樂,但是同時執行多個task時有可能會互相干擾。NXC可以同時執行多個task,可以用一個task讓機器人跑來跑去,另一個來控制感應器,第三個負責撥放音樂,但是同時執行多個task時有可能會互相干擾。 解決互相干擾的方法就是確保只有一個task在控制機器人。
mutex(互斥) 為了避免互相干擾,使用mutex代表同一時間只有一個task可以擁有對它的使用權。當一個task獲得他的使用權之後,才可以”做他想做的事”。 存取mutex是透過Acquire()與Release()指令來完成的: Acquire()用來宣告使用權。 Release()用來釋放使用權。
關鍵區 Acquire()與Release()之間的程式碼稱為關鍵區,意即這裡會用到一些共享資料。使用關鍵區可以確保task不會彼此干擾
號誌器(semaphore) 另一種用來達到關鍵區管理的功能:使用一個變數來指出哪一個task在控制馬達,其他的task除非接受到”使用完畢”的訊息,否則不能去控制馬達。
藍芽連線 一台Master透過line 1~3,連接3台Slave ,在Slave來看,Master連接在line0。 每個line有10個mailbox來接收訊息,每個mailbox可存5個訊息,每個訊息長度最多為58個字元。 每一個mailbox相當於一個獨立指令,可以方便物件獨立控制。