トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

ゼミのお話/ロボット工学者養成所/一覧/浅草ギ研AGB65シリーズ/AGB65-ADC簡易使用方法 の変更点

-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));
--...
--}