13.04.2015 Views

東海大學資訊工程與科學系畢業專題成果競賽 - 東海大學‧資訊工程學系

東海大學資訊工程與科學系畢業專題成果競賽 - 東海大學‧資訊工程學系

東海大學資訊工程與科學系畢業專題成果競賽 - 東海大學‧資訊工程學系

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!