通信プロトコル

  c328(scam)から画像データを取得するために、データシート
  から必要な情報を抜粋します。

 このタイミングチャートから、動作を読み取ります。



  このタイミングチャートから、通信に利用する信号の論理値は
  EIA232Fと同じことがわかります。マイクロコンピュータのSCI
  (Serial Communication Interface)は、通常の使い方で対応可能
  とわかります。

  また、スタートビット1、データ8ビット、ストップビット1で
  パリティなしの調歩同期式を採用していることも判読できます。

  データのやりとりは、コマンドを6バイト出力し、応答を待つ
  方式になっています。




同期処理

 データシートに、電源オン後、SYNCを出力しc328(scam)と同期を  とるように指示されています。  初期同期をとる手順は、次のシーケンス図に示されています。  データ転送速度を14400bpsとして、最大60回SYNCを出力します。 c328(scam)から、ACKが返送されてきた時点で同期確立となります。  ACKに続けて、SYNCが返送されるので、呼び出し側からACKを送信  しています。  呼び出し側(ホスト)とc328(scam)で、SYNCとACKを交換しながら 同期動作していることを双方で確認し合う仕様です。  コマンド送信と応答にかかる時間を見積もってみます。  データ転送速度が、14400bpsである場合には、10ビット 送信、受信するのに、1440バイト/秒必要になります。  1秒で1440バイトなので、1msでは1.44バイトに なりコマンド送信、応答には、各々8.5ms必要です。  従ってコマンドを送信後、20msほど待ってACK、SYNCが返信 されているかを確認し、同期確立となります。

パラメータ設定

画像データを取得する場合は、SnapShotかPreviewで 動作シーケンスが異なります。 SnapShot(静止画)の動作シーケンスは、以下です。 Preview(動画)の動作シーケンスは、以下です。  SnapShot、Previewともに、初期化コマンドでc328(scam)に パラメータを設定しています。  次の仕様でパラメータを設定しています。  6バイトのうち、最初の3バイトは、0xAA、0x01、0x00で固定です。 残りの3バイトは、カラー種別、分解能、JPEGデータ分解能を指定 します。  データシートでは、Previewの分解能と記述されていますが 実際にデータを取得してみると、SnapShotでも同じでした。  ホスト側で、一度カラー種別、分解能を設定できる仕様に すべきでしょう。  不正コマンドを送信した場合は、NACKが返送されるので NACKに対応した処理を用意しなければなりません。

SnapShotデータ取得

SnapShotの画像データを取得するシーケンスを、より 小さなシーケンスに分割して、動作を確認します。 シーケンス図から、次の3シーケンスに分割できます。
  1. パラメータ設定
  2. SnapShotコマンド指定
  3. 画像データ取得
パラメータ設定は、6バイト中の3バイトは0xAA、0x01、0x00で 固定なので、残りの3バイトを設定にします。 JPEGを利用しない場合は、2バイトの設定になります。 0xAA、0x01、0x00、0x??、0x??、0x00 パラメータ設定シーケンス シーケンス図から、次のシーケンスでよいでしょう。 6バイトのパラメータ(0xAA、0x01、0x00、0x??、0x??、0x00)を送信 ACKの返送を確認 SnapShotコマンド指定 SnapShotに関連するデータシートの記述は、以下です。 コマンドは、0xAA、0x05で続けて圧縮か非圧縮の指定バイトが 続きます。さらにスキップフレームをどうするかを指定します。 スキップフレームは、必要ないので残りの3バイトは、すべてを 0x00とします。 シーケンス図から、次のシーケンスでよいでしょう。 6バイトのパラメータ(0xAA、0x05、0x??、0x00、0x00、0x00)を送信 ACKの返送を確認 圧縮では0x??として0x00を、非圧縮では0x??として0x01とします。 画像データ取得 画像データ取得の場合は、GetPictureコマンドを送信し ACKを受信後、DATAで画像サイズを受取ります。 その後に続く、1画面分のデータを受取り、ACKを返送します。 GetPictureに関連するデータシートの記述は、以下です。 コマンドは、0xAA、0x04で続けて画像データの種別を1バイトで 指定します。残りの3バイトは、すべてを0x00とします 画像データの種別は、SnapShotで0x01、Previewで0x02、JPEGで 0x05なので、このどれかを指定できる仕様にします。 DATAに関連するデータシートの記述は、以下です。 レスポンスは、0xAA、0x0Aで続けて画像データの種別を1バイトで 指定します。残りの3バイトは、画像データのバイト数になります。 画像データの種別は、SnapShotで0x01、Previewで0x02、JPEGで 0x05なので、このいずれかで指定した画像データの転送かを判定 できます。 画像データのバイト数は、リトルエンディアンで下位から上位に むけての3バイトとなります。 例えば、c0、12、00ならば0012c0がデータ量で、4800になります。 全体のシーケンスは、次のようにします。 6バイトのパラメータ(0xAA、0x04、0x??、0x00、0x00、0x00)を送信 ACKの返送を確認 DATAの返送を確認(画像データのバイト数計算) 画像データ取得 ACKコマンド送信

Previewデータ取得

Previewの画像データを取得するシーケンスを、より 小さなシーケンスに分割して、動作を確認します。 シーケンス図から、次の2シーケンスに分割できます。
  1. パラメータ設定
  2. 画像データ取得
SnapShotのシーケンスから、SnapShotに関連するコマンド 送信とACK確認をスキップするだけです。 ただし、パラメータの設定値を変更しなけばなりません。
目次

inserted by FC2 system