PIC 單晶片 收資料抓字元的問題 |
答題得分者是:阿信
|
sindyvirgo
一般會員 發表:1 回覆:2 積分:0 註冊:2008-08-15 發送簡訊給我 |
在下最近開始接觸單晶片,所使用的是PIC18f4620這顆晶片,而我選擇了比較容易使用的C語言來開發。
我是想問C程式寫法上的問題,剛學C不久 ~ 很多例子還無法實際上戰場應用 ! 我現在可以用UART收GPS的資料然後再送出去 ~ (只是用來測試) 片段如下 char Msg_Temp; RDA_isr() { gets(Msg_Temp); printf("%s\n\r",Msg_Temp); } 如今我要讓資料存進單晶片裡面,然後只抓我要的字元丟出來就好 !! 這樣的程式要怎麼寫呢?抓字元的程式要去看哪一章節的C? 我手邊的C課本都是純C,或是8051 of C,詳看了以後都是屬於第一種丟什麼傳什麼的 並沒有提及如何抓取字元,C語言的指標概念裡面有提到抓取字元,但又好像無法使用 在單晶片上?希望有高手可以給我個方向 !! 目前我可以做道存資料進去,片段如下 ~ char Msg_Temp[512]; RDA_isr() { gets(Msg_Temp); // GPS資料都丟進去 //我該如何去寫這段抓取我要的字元的程式 ? } 我只要知道我該如何抓取字元就好了 ~ 抓到我要的然後丟出來,不一定要考慮GPS為範例 !! |
starlin
一般會員 發表:1 回覆:4 積分:1 註冊:2008-12-05 發送簡訊給我 |
|
sindyvirgo
一般會員 發表:1 回覆:2 積分:0 註冊:2008-08-15 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
這個其實有點複雜,
基本上暫存區的大小應為最長指令的2倍。 假設今天有總共只有兩個指令要比較, 且長度相同, 分別為「AB/」與「AC/」, 關鍵字元是結束的「/」, 所以要在每次收到資料時判斷「/」, 若是「/」,則再判斷前一筆與前前一筆的資料 是否為「AB/」或「AC/」。 若是則輸出,否則不輸出, 然後清空暫存區,指標歸零。 以下是一個參考的程式碼, 縮排使用全形空格。 char Msg_Array[16]; char Msg_Temp; char i; //指標 i=0; RDA_isr() { gets(Msg_Temp); // GPS資料都丟進去 //我該如何去寫這段抓取我要的字元的程式 ? Msg_Index ; //指向下一個位址 Msg_Array[i]=Msg_Temp; //存入陣列 if (Msg_Temp=='/') { //修改成你要的字元 if (Msg_Index>=3) { //至少要已收到3個字元 if ( (Msg_Array[i-1]=='A' && Msg_Array[i-2]=='B') || (Msg_Array[i-1]=='A' && Msg_Array[i-2]=='C') ) { printf("%s\n\r",Msg_Array[i-2]); //送出前前一個字元 printf("%s\n\r",Msg_Array[i-1]); //送出前一個字元 } } i=0; //指標清零 } } |
sindyvirgo
一般會員 發表:1 回覆:2 積分:0 註冊:2008-08-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |