即確定該編程塊在編程隊列中后,將檢測當前的語義狀態(tài)Cur_Status。進入步驟4。
[0036]4.檢測紅外狀態(tài)。實物編程塊檢測當前是否收到紅外信號,如果有,則表明編程塊目前處于編程隊列中,進入步驟5 ;如果沒有,則表明編程塊已經(jīng)從編程隊列中移除,進入步驟8 ;
[0037]5.解碼紅外信號。實物編程塊收到紅外信號后根據(jù)紅外發(fā)送協(xié)議對紅外信號進行解碼,判斷當前脈沖是否是紅外起始碼,如果是,則進入字節(jié)的解碼過程,將得到的字節(jié)碼和反碼比對后得到當前所傳達的信息,記為Pre_ID;如果不是,則放棄此次紅外脈沖,重新進入步驟4 ;
[0038]6.發(fā)送連接無線信息。實物編程塊向LED Pad發(fā)送表示連接的無線信息,包含連接標志、Pre_ID、自身的二進制識別碼Self_ID和當前的語義狀態(tài)Cur_Status。進入步驟7〇
[0039]7.編碼并發(fā)送紅外信號。編程塊將自身的Self_ID經(jīng)過脈寬調(diào)制后發(fā)送,用于激活后續(xù)的編程塊。紅外脈沖組成為起始碼,自身原碼和自身反碼。原碼和反碼用于對比,確保信息的準確性。重新進入步驟2。
[0040]8.發(fā)送移除連接信息。當編程塊從編程隊列中拔除后,會向LED Pad發(fā)送表示移除的無線信息,包含移除標志、Pre_ID、自身的二進制識別碼Self_ID和當前的語義狀態(tài)Cur_Status。進入步驟 9〇
[0041]9.終止紅外發(fā)射。實物編程塊終止紅外信號的發(fā)射。如果當前是多語義編程塊,那么重新進入步驟2,否則跳轉(zhuǎn)至步驟4。
[0042]LED Pad內(nèi)部的處理流程如圖5所示。主要分為狀態(tài)控制、編程階段和運行階段三個階段。其中有些處理流程和專利一種便攜式實物編程系統(tǒng),申請?zhí)?2013104147570中一致,在此不再贅述。下面將重點介紹LED Pad中發(fā)生改變的處理。
[〇〇43]編程階段,系統(tǒng)主要處理實物編程塊的信息,完成程序語義序列的排序,并給出實時反饋。
[0044]1.無線處理模塊中的數(shù)據(jù)處理。LED Pad中的無線處理模塊收到實物編程塊發(fā)送的無線信息后,將逐字節(jié)解讀無線信息。如果是連接信息,則從當前的二進制序列中查找Pre_ID,并根據(jù)Pre_ID判斷前一個編程塊的類型和所在的分支。如果前一個編程塊是方向塊/傳感器塊/開始塊,則將Self_ID插入到二進制序列中Pre_ID所在的分支的后面。如果前一個編程塊是布爾邏輯編程塊,則需要進一步判斷當前塊是否為傳感器塊,并將傳感器塊依次插入到相應(yīng)邏輯編程塊的參數(shù)區(qū)域中,如果前一個編程塊是分支塊,當前編程塊為傳感器塊,則將傳感器添加分支標識后插入到Pre_ID的后面。所述的分支標識是將當前編程塊的二進制ID最后一位,如果位于分支Branch_0,則將該位置0,如果位于分支Branch_l,則將該位置1,主程序末位置0,將交由LED Pad的實物編程處理模塊處理。在LED Pad中,邏輯編程塊的存儲結(jié)構(gòu)中保留了兩個用于存儲傳感器塊內(nèi)容的參數(shù)區(qū)域,兩個傳感器塊沒有先后順序之分。
[0045]2.語義與語法分析和圖形反饋。結(jié)合任務(wù)地圖的具體信息,LED Pad的實物編程處理模塊將進行語義語法分析與理解并給出相應(yīng)的反饋。實物編程處理模塊接收來自無線處理模塊的串口信息,并逐字節(jié)進行分析。內(nèi)部存儲是否存在分支標志變量is_Branch,每當讀取一個字節(jié),如果當前沒有分支,則根據(jù)語義對照表,將該程序語義存儲在主程序上,并根據(jù)語義和當前地圖的狀態(tài)判斷當前命令是否正確,并給出反饋。如果當前存在分支,則根據(jù)該字節(jié)的最后一位,即分支標記判斷當前二進制識別碼位于哪個分支上,解碼分支信息得到二進制ID,并根據(jù)語義對照表,將該程序語義存儲到對應(yīng)的分支程序中,并根據(jù)語義和當前地圖的狀態(tài)判斷當前命令是否正確,并給出反饋。
[0046]進一步的,如果當前字節(jié)是布爾邏輯編程塊,則繼續(xù)讀取后續(xù)的兩個字節(jié),并進入有限自動機進行判斷,只有當連續(xù)三個字節(jié)正確組成布爾邏輯并符合當前地圖上的“邏輯-傳感器”單元格,LED Pad才給出正確的圖形反饋,否則提示錯誤。
[0047]3.判斷編程是否正確結(jié)束。LED Pad判斷當前地圖狀態(tài),只有當所有分支都正確的到達結(jié)束單元格,編程才正確結(jié)束。LED Pad播放編程成功的音樂并給出圖形反饋。
[0048]檢測到狀態(tài)開關(guān)被撥到運行階段時,程序進入運行階段。該階段主要是執(zhí)行用戶在編程階段編寫好的程序。用戶可以通過傳感器輸入模塊與系統(tǒng)互動。
[0049]1.讀取當前程序指令并分析。LED Pad從已經(jīng)存儲的主程序隊列中逐字節(jié)讀取指令并分析。
[0050]2.判斷當前執(zhí)行的是否為傳感器或者“邏輯-傳感器”或者分支單元格。如果是傳感器,則監(jiān)聽當前傳感器的狀態(tài),采集到傳感器的數(shù)據(jù)后進行分析,進一步的,判斷是否觸發(fā)了對應(yīng)的傳感器,如果是,點亮當前單元格的LED燈,并繼續(xù)步驟1 ;如果不是,則繼續(xù)閃爍當前單元格的LED燈,并重復(fù)執(zhí)行步驟2。如果當前單元格為“邏輯-傳感器”單元格,則根據(jù)“與邏輯”和“或邏輯”的邏輯規(guī)則對傳感器的觸發(fā)進行判斷,如果當前是“與邏輯-傳感器”單元格,則只有檢測到兩個相關(guān)的傳感器同時觸發(fā)后才點亮當前單元格,并繼續(xù)步驟1 ;如果當前為“或邏輯-傳感器”傳感器單元格,則檢測到兩個傳感器中的至少一個被觸發(fā)可以點亮當前單元格,并繼續(xù)步驟1。如果當前單元格為分支(IF)單元格,則繼續(xù)讀取兩個分支程序隊列中的第一個字節(jié),即讀取分支的傳感器條件,并令這兩個單元格閃爍,監(jiān)聽傳感器的觸發(fā)狀態(tài),采集到其中的一個傳感器被觸發(fā)時,則執(zhí)行該分支隊列的命令,執(zhí)行過程與執(zhí)行主程序的過程類似,這里不再贅述。
[0051]3.判斷是否成功運行結(jié)束并提供反饋。當任一分支隊列執(zhí)行完畢且當前地圖到達結(jié)束單元格,則為成功運行,LED Pad播放運行成功音樂并給出圖形反饋。
[0052]綜上所述,本發(fā)明給出了一種具有多語義和二維連接特性的實物編程系統(tǒng)。實物編程塊具有多個語義,用戶可以通過水平晃動手勢改變選擇當前語義,極大的節(jié)省了編程塊并豐富了用戶與工具間的交互。此外,實物編程塊支持二維連接方式,不再是單一的一維連接,可以更好的映射某些編程語義,增加系統(tǒng)趣味性。該實物編程工具擴展了編程語義,增加了布爾邏輯和分支的概念,使得編程概念更加的完整,鍛煉兒童的邏輯能力;與傳感器的交互增多,增加了系統(tǒng)的趣味性,提高了兒童對于編程的興趣,方便其學(xué)習(xí)編程。
【主權(quán)項】
1.一種基于多語義的實物編程系統(tǒng),其特征在于,包括實物編程處理與顯示單元,用于處理實物編程塊發(fā)送的無線信息,以及按照設(shè)定的編程規(guī)則識別實物編程塊的當前語義并對編程語義進行排序,向用戶提供反饋;其中,所述實物編程塊包括若干多語義實物編程塊,每一多語義實物編程塊具有多種語義,所述多語義實物編程塊識別用戶的搖晃手勢,并根據(jù)識別出的手勢切換語義,每一種語義對應(yīng)一語義狀態(tài);所述多語義實物編程塊向所述實物編程處理與顯示單元發(fā)送自身的二進制識別碼和當前的語義狀態(tài),以及前一實物編程塊的二進制識別碼。2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述多語義實物編程塊包括一三軸加速度計模塊和一 LED顯示單元;所述多語義實物編程塊將實時采集的用戶搖晃手勢時該三軸加速度計模塊的加速度值,然后根據(jù)該加速度值采用決策樹方法來識別是否為語義切換手勢,如果是,則變換當前的語義,并通過LED顯示當前語義的圖標。3.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述手勢切換語義的方法為:用戶首先設(shè)定搖晃手勢,然后每采集到一次設(shè)定搖晃手勢變化一次當前多語義實物編程模塊,并設(shè)定當前手勢對應(yīng)的語義。4.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述實物編程塊之間采用紅外通信的方式進行信息傳輸,其中前一實物編程模塊發(fā)出的紅外信號包括激活后一實物編程模塊的激活信號以及該前一實物編程塊的二進制識別碼。5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述實物編程塊還包括與邏輯實物編程塊;所述與邏輯實物編程塊的上、下方連接傳感器塊組成一完整的語義,前、后方擺放表示程序執(zhí)行順序的其他實物編程塊。6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述實物編程塊還包括或邏輯實物編程塊;所述或邏輯實物編程塊的上、下方連接傳感器塊組成一完整的語義,前、后方擺放表示程序執(zhí)行順序的其他實物編程塊。7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述實物編程塊還包括分支邏輯實物編程塊,所述分支邏輯編程塊的上、下方連接兩個傳感器A和B,并由傳感器A和B分別引導(dǎo)兩條不同的路徑。8.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述實物編程處理與顯示單元包括迷宮識別模塊、無線處理模塊、實物編程處理模塊、顯示模塊;其中,實物編程處理模塊用于在編程階段將實物編程塊序列對應(yīng)的實物語義序列轉(zhuǎn)換成程序功能語義序列,并判斷當前擺放的實物編程塊是否合法;在運行階段,根據(jù)程序功能語義序列逐次讀取命令并監(jiān)聽傳感器的狀態(tài),執(zhí)行當前的命令;所述無線處理模塊用于接收實物編程塊發(fā)送的無線信息,識別實物編程塊當前的語義,并根據(jù)無線信息將實物編程塊語義進行排序;所述迷宮識別模塊用于根據(jù)當前所選迷宮的RFID標簽信息加載相應(yīng)的迷宮結(jié)構(gòu)信息。
【專利摘要】本發(fā)明公開了一種基于多語義的實物編程系統(tǒng),其特征在于,包括實物編程處理與顯示單元,用于處理實物編程塊發(fā)送的無線信息,以及按照設(shè)定的編程規(guī)則識別實物編程塊的當前語義并對編程語義進行排序,向用戶提供反饋;其中,所述實物編程塊包括若干多語義實物編程塊,每一多語義實物編程塊具有多種語義,所述多語義實物編程塊識別用戶的搖晃手勢,并根據(jù)識別出的手勢切換語義,每一種語義對應(yīng)一語義狀態(tài);所述多語義實物編程塊向所述實物編程處理與顯示單元發(fā)送自身的二進制識別碼和當前的語義狀態(tài),以及前一實物編程塊的二進制識別碼。本發(fā)明完善了編程概念,增加了交互方式,提高了系統(tǒng)趣味性,易于實現(xiàn),且易于用戶操作。
【IPC分類】G06F9/44, G06F3/01
【公開號】CN105302555
【申請?zhí)枴緾N201510695893
【發(fā)明人】王丹力, 齊云鳳, 張瀾, 王宏安
【申請人】中國科學(xué)院軟件研究所
【公開日】2016年2月3日
【申請日】2015年10月23日