You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
3-3. 裝 置 與 主 機 的 通 訊 方 式<br />
helicomm EZ-Tracer 所 提 供 的 Master 為 USB 介 面 , 而 Reader 則 是 RS232 介 面 。 雖<br />
然 在 介 面 上 有 所 差 異 , 但 在 使 用 上 都 能 以 Serial Programming 的 方 式 來 操 作 。 以 Linux<br />
的 devfs 為 例 , 當 Master 接 上 主 機 時 會 自 動 產 生 /dev/ttyUSB0 的 節 點 , 而 Reader 則 是<br />
使 用 /dev/ttyS0 來 存 取 。<br />
當 程 式 要 使 用 到 裝 置 時 需 要 透 過 Linux 的 System calls, 一 般 來 說 透 過 open( ) ,<br />
close( ),read( ),write( ) 就 可 以 對 裝 置 進 行 簡 單 的 控 制 , 但 實 際 上 在 使 用 前 必 須 透 過<br />
termios 針 對 設 定 相 應 的 baudrate 以 及 通 訊 屬 性 與 標 準 , 以 避 免 資 料 在 傳 輸 時 產 生 意<br />
外 的 錯 誤 。<br />
當 程 式 在 使 用 Zigbee 裝 置 做 資 料 傳 輸 是 透 過 open( ) 所 取 得 的 檔 案 描 述 子 以 write(<br />
) 將 Zigbee 的 Frame 寫 入 , 裝 置 接 收 到 來 自 主 機 的 Frame 再 將 Frame 送 出 。 而 裝 置 接<br />
收 到 Frame 時 透 過 read( ) 取 得 接 收 到 的 Frame。<br />
Control Header<br />
Link Quality<br />
Destination<br />
Payload Length<br />
Payload<br />
XOR Checksum<br />
(1)<br />
Indicator<br />
Address<br />
(1)<br />
(0 ~ 97)<br />
(1)<br />
(1)<br />
(2)<br />
根 據 Zigbee 的 標 準 Zigbee Frame 的 型 態 分 為 兩 類 四 種 , 以 Control Header 的 前 4<br />
個 bits 所 決 定 , 而 Frame 的 參 數 有 上 述 六 種 。 如 果 直 接 在 程 式 中 直 接 以 陣 列 表 示 出<br />
Frame 不 免 喪 失 一 些 程 式 的 可 讀 性 以 及 維 護 性 。 是 故 , 當 程 式 在 存 取 裝 置 時 不 是 直 接<br />
產 生 Frame 而 是 透 過 以 下 的 型 態 與 函 式 存 取 Frame。<br />
typedef enum {<br />
CMD_REQUEST,<br />
CMD_RESPONSE,<br />
DATA_REQUEST,<br />
DATA_ACK<br />
}FrameType;<br />
typedef struct {<br />
unsigned short smac;<br />
8