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