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