使用 86Duino DOS SDK 撰寫程式
86Duino DOS SDK 位於 DuinOS 的 86DUINO 目錄下,提供支援 86Duino 硬體功能的 C++ 函式庫,可讓您在一般 C++ 程式中使用相容 Arduino 的 API 存取 86Duino 的 I/O 介面,並在 DJGPP 環境內編譯出可在 86Duino 上執行的 DOS 程式。
注意使用 86Duino DOS SDK 的 C++ 程式必須遵循 C++ 語法規定撰寫,因此程式寫法與 86Duino 的 sketch 程式寫法略有不同。以下面 86Duino 的 Blink sketch 範例程式為例:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
若要改為使用 86Duino DOS SDK 的標準 C++ 程式,應改寫成:
#include "Arduino.h"
int main(void)
{
pinMode(13, OUTPUT);
while(1)
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
return 0;
}
由上例子可以看到,只要 include 標頭檔 Arduino.h,即可在標準 C++ 程式內直接使用 86Duino 的 Standard API 函式。在 86DUINO\EXAMPLE 目錄內我們放了一個使用 86Duino DOS SDK 的簡易 C++ 範例程式碼,提供給使用者參考;同目錄下的 Makefile 可用來編譯出範例程式的 DOS 執行檔(直接在該目錄下鍵入 make 即可編譯出名為 86Duino.exe 的執行檔),使用者可研究它的內容,來瞭解如何以 DJGPP 編譯使用 86Duino DOS SDK 的 C++ 程式。
如果您修改了 86DUINO\EXAMPLE 目錄下範例程式,並在程式中呼叫了 86Duino Coding IDE 內建的函式庫,您必須也同時修改 Makefile,將使用到的函式庫也加入編譯流程中。例如,假設您修改範例程式額外呼叫了 EEPROM 函式庫,您應打開 Makefile,找到開頭為 THIRD_LIB_NAME 的那一行:
然後在 := 右邊(除了原本的 TimerOne 之外)加上 EEPROM。注意,您呼叫的函式庫可能會在内部調用其它函式庫的功能,在這種情況下,您應該在 THIRD_LIB_NAME := 後面將所有被調用到的函式庫加上去,下表列出 86Duino 內建的函式庫裡,所有會互相依賴的函式庫:
| 函式庫名稱 | 被調用的函式庫 |
| TFT | SPI |
| FreeIMU1 | Wire |
| Adafruit_CC3000 | SPI |
| SpiderL3S | SPI |
| RF24 | SPI |
| Mirf | SPI |
| RadioHead | SPI |
此外,有些函式庫還會在内部調用安裝在 DuinOS 的 DJGPP 環境內的外部函式庫(例如:SwsSock 或 Allegro 函式庫),這種情況下,您還必須在 Makefile 內找到開頭為 EXTEN_LIB 的那一行,在 := 右邊加上所有連結外部函式庫的編譯參數:
下表列出所有 86Duino 內建的函式庫裡,會額外調用外部函式庫的內建函式庫:
| 函式庫名稱 | 連結外部函式庫的編譯參數 |
| Ethernet | -lswsk |
| Rosserial86 | -lswsk |
| USBHost | -lalleg |
關於最新 DuinOS 的 86Duino DOS SDK 裡支援的 86Duino Standard API 及內建函式庫完整列表,請參閱此連結。
The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.


