伽利略開(kāi)發(fā)板和BeeMail(四):程序庫(kù)的妙用
圖注:帶WiFi標(biāo)簽的Arduino窗口
WiFi程序庫(kù)全面測(cè)試草圖
這個(gè)完全獨(dú)立的草圖腳本被用于測(cè)試WiFi功能。有關(guān)板卡的所有信息以及本地連接都會(huì)顯示出來(lái),同時(shí)測(cè)試能否調(diào)用Arduino網(wǎng)站的純文本頁(yè)面。如果頁(yè)面不存在,那么下一步便測(cè)試能否連接到google.com并返回有關(guān)“Arduino”的搜索結(jié)果。
SD Card
排除SD卡故障其實(shí)不是我檢驗(yàn)WiFi之后完成的。我只檢驗(yàn)排除了Python部分,準(zhǔn)確地說(shuō),檢查是否獲取到所需數(shù)據(jù)。重要的是過(guò)程本身。然而排查Python對(duì)代碼部分于事無(wú)補(bǔ)。所以我將注意力放在了SD卡上。
將SD程序庫(kù)下載到MacOS
不幸的是MacOS伽利略板自主研制的Arduino IDE有一個(gè)漏洞,即使程序庫(kù)顯示已安裝,其中一些IDE還是無(wú)法調(diào)用。我不太清楚什么引起的Yocto / gcc snafu,但是看起來(lái)讀過(guò)Yocto上的這篇文章和linux.com中介紹的英特爾伽利略板,會(huì)有助于我排除故障。與此同時(shí)需要不斷修改,打開(kāi)終端,引導(dǎo)至Java文件夾,加入符號(hào)鏈接。
1. cd /Applications/ArduiG.app/Contents/Resources/Java
2. ln -s . hardware/tools/x86/i586-poky-linux-uclibc/usr/include/c++/4.2.1
解決嵌入式程序庫(kù)故障后,在Arduino Intel Galileo IDE v1.5.3里SD程序庫(kù)并未像所聲明的那樣高亮顯示關(guān)鍵字。
Screen capture of the unhighlighted txt
The SD card library does not highlight.
圖注:非高亮顯示文檔的截圖
SD卡程序庫(kù)未高亮顯示
先不管那些。重點(diǎn)程序庫(kù)能夠編譯,代碼能正確運(yùn)行就可以了。
將SD卡功能拆成小塊,然后再逐一解決出現(xiàn)的問(wèn)題。
符號(hào)鏈接工作區(qū)的情況更糟糕。SD卡程序庫(kù)示例文件并未在示例文件夾里出現(xiàn)。但在Arduino網(wǎng)站的SD卡參考模塊卻能夠找到。
像我之前借助于備忘錄一樣,我嘗試用示例文件逐一解決如下問(wèn)題:
? SD卡是否初始化?
?Arduino草圖能否創(chuàng)建文件?
?Arduino草圖能否將目錄添加到文件?
?Arduino草圖能否讀文件?
?Arduino草圖能否刪除文件?
板卡初始化代碼測(cè)試通過(guò),但是在第二步里出現(xiàn)了問(wèn)題:SparkFun輔助教程代碼拒絕系統(tǒng)訪問(wèn)。這個(gè)問(wèn)題不在Intel Galileo SD程序庫(kù),而是在底層C打開(kāi)外部文件命令中。由此導(dǎo)致任何試圖通過(guò)Arduino命令創(chuàng)建文件的辦法都行不通。于是我嘗試向一個(gè)原本不存在的文件中寫入數(shù)據(jù),卻導(dǎo)致Arduino進(jìn)程崩潰,沒(méi)辦法只能重啟。如果按照那樣操作,“**B0100000063f694”的代碼就會(huì)出現(xiàn)。測(cè)試時(shí)我通過(guò)對(duì)Linux控制臺(tái)添加加密狗,以及手動(dòng)創(chuàng)建文件建立一系列連接,這樣直接跳過(guò)了文件創(chuàng)建出現(xiàn)的問(wèn)題。在下一篇文章里我會(huì)詳細(xì)說(shuō)明。這一步讓我明白了測(cè)試文件也可以在計(jì)算機(jī)上創(chuàng)建并加入Intel Galileo SD卡的主目錄。
Intel Galileo SD卡的主目錄
圖注:帶以創(chuàng)建示例文件的Intel Galileo SD卡的主目錄
與創(chuàng)建文件相反,另一個(gè)需要具有示例代碼那樣的功能。
SD程序庫(kù)全局測(cè)試草圖
為創(chuàng)建文件我確定了一個(gè)工作區(qū),以便我并入草圖,這樣其他技術(shù)人員也可以拿來(lái)用于測(cè)試。
一定記住,SD程序庫(kù)和系統(tǒng)命令都要求用Arduino能執(zhí)行的C字符串編寫(或者次之,Arduino文件自帶的s字符串),而非像Java那樣靈活的面向?qū)ο蟮淖址?)。下邊冗長(zhǎng)的代碼顯示了如何實(shí)現(xiàn)其二者之間的譯碼并提示錯(cuò)誤信息。
評(píng)論