-AGB65-ADCへシリアル信号で個別の命令を送ることで,その命令に合った形式で結果が返ってくる.つまり,まずarmadillo300上のプログラムがどのようなデータが欲しいかコマンド送信すると(データリクエスト),AGB65-ADCは要求されたデータを返信する(データリプライ). --AGB65-RSCと基本的な使い方は同じであるが,返ってくる値を読み取る必要がある. -以下のように配列を定義して用いる. -- データリクエスト用データ.以下の配列をシリアル送信する. --- unsigned char command[4] = {255, 120, 1, 1}; |シンクロバイト(255)|ADCにデータの通信開始を知らせるデータで,常に「255」である.| |ID(120)|ADCに設定された固有のID(AGB65シリーズを複数接続したときの判別用.ADCの場合,出荷時のIDは「120」.)| |送信バイト数(1)|送信される命令の(バイト)数.シンクロバイト,ID,送信バイト数は数えない.| |命令1(1)|全ポート(16ポート)読み取り(精度8bit)| -- データリプライ用データ.データリクエストした後,以下の配列をシリアル受信する. --- unsigned char data[20]; |data[0]:シンクロバイト(255)|ADCからデータの通信開始を知らせるデータで,常に「255」である.| |data[1]:ID(120)|リクエストされたADCのID(ID=120にリクエストした場合,120の値が入っている.)| |data[2]:データバイト数(17)|ADCからarmadillo300に向けて送信される命令のバイト数.シンクロバイト,IDは数えない.| |data[3]:命令1(1)|armadillo300からADCにリクエストされた命令を返信.command[4]の値.| |data[4]〜data[19]:[ポート1の結果]〜[ポート16の結果]|各ポートにささっているセンサの取得結果| -上記のデータを以下のように送受信すると配列dataの中にセンサの情報が格納されている.厳密には,data[0]〜[3]の値を使って正常にデータを受信できているか確認する必要がある(プログラムを参照) --int main(){ ... --... --write(fd, command, sizeof(command)); --read(fd, data, sizeof(data)); --... --}