伽利略開發(fā)板和BeeMail結(jié)尾篇(六):從C字符串到int型
在這一部分我只闡述對getEmailCount() function部分做了哪些修改,使之最終能讀取文件。慶幸的是現(xiàn)在已經(jīng)可以在SD卡上操作了。
本文引用地址:http://butianyuan.cn/article/266554.htmStrings到Ints
盡管含有數(shù)字的文件可以下載到SD卡,但sparkfun提供的Intel Galileo tutorial部分代碼還是報(bào)錯(cuò)。為此我第二次檢查前做了許多修改,可以說我還是不明白怎么修改。我得承認(rèn)自己并不擅長調(diào)試。若非時(shí)間有限,我一定從頭好好調(diào)試。
整型變量中本應(yīng)包含收件箱中的郵件數(shù)量,但運(yùn)行代碼時(shí)卻出現(xiàn)了不應(yīng)有的空白值。整型數(shù)值來自于SD卡中文本文件的ASCII字符(以數(shù)組形式導(dǎo)入)。有時(shí)為完成從string到int的轉(zhuǎn)變,需要對字符或數(shù)組進(jìn)行處理。
若上述方法不奏效可以試試下列方法,我將涉及串口傳輸?shù)倪x了出來。串口傳輸時(shí),協(xié)議需要數(shù)據(jù)的傳輸格式定義得很清楚,以便數(shù)據(jù)在計(jì)算機(jī)之間正確傳遞。在此我覺得研究基于一塊開發(fā)板,進(jìn)行兩個(gè)程序之間進(jìn)行數(shù)據(jù)交換也是個(gè)不錯(cuò)的選題。
Arduino’s Serial.print 文件
NYU ITP’s 有關(guān)物理計(jì)算機(jī)串口Out Lab的介紹
RoboReal Serial Tutorial
明確地說,Jim Lindblom的方法極為明智:他通過對讀取文本文件(見第118行)時(shí)得到的0(48)做ASCII減法,實(shí)現(xiàn)了從ASCII數(shù)字到int的轉(zhuǎn)換。他用for循環(huán)語句單步調(diào)試存放int值的數(shù)組,用恰當(dāng)?shù)臄?shù)字10和每個(gè)值相乘,得到的總和便與正確的郵件數(shù)目(見第125,126行)相等。這種方法不需要任何Arduino外部參考指導(dǎo)就能達(dá)到目的,反映了Arduino社區(qū)的友好性。
此時(shí)我也有些不耐煩了,所以選擇了并不友好但更簡潔的方式,將文本數(shù)字導(dǎo)入字符數(shù)組并以Null結(jié)束,然后用c function atoi()替代了for循環(huán)。記住,C文件中string通常指以null結(jié)束的字符數(shù)組,而非Arduino String對象的一個(gè)模擬變量。
慶祝時(shí)刻
終于沒問題了!成功將shield從Uno移植到伽利略板!
評論