使用 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.


