μFRシリーズデバイス用μFRシリアル通信プロトコル
μFRシリーズデバイスはFTDIの仮想COMポートを介して通信を確立できるため、デバイスは標準のCOMポートハードウェアと見なされます。
通信パラメータ #
FTDIシリアルインターフェースを備えたリーダ #
USB接続を備えたμFRクラシックおよびμFRアドバンスリーダー:
シリアル通信: 1 Mbps, 8-N-1, フロー制御: なし;
RTSピンは、デバイスのリセットに使用されます。 RTS が設定されている場合、デバイスはリセット状態になります。 RTSがクリアされると、デバイスは正常な状態になります。
「μFRサポート」ファームウェアがインストールされたμFR BaseHDリーダー(XRおよびμFRxrcリーダーなど):
シリアル通信 (VCOM FTDI ドライバを使用): 250 kbps, 8-N-1, フロー制御: なし;
FTDIシリアルインタフェースのないリーダ #
RS485 (USB/RS-485 コンバータなしの接続):
可変ボーレートは、ソフトウェアツールを使用して設定できます。 ボーレートを変更するときは、現在のボーレートを知る必要があります。 デフォルトのボーレートは 250 kbps です。
μFRクラシックナノRS232とカードサイズRS232:
UART / TTL: 115200 bps, 8-N-1, フロー制御: なし.
115200 bps がデフォルトのボーレートです。 可変ボーレートは、ソフトウェアツールを使用して設定できます。
コネクタの PIN 4 は、デバイスのリセットに使用されます。 このピンの電圧が高い(3.3V)場合、デバイスはリセット状態になります。 電圧が低い(0 V)場合、デバイスは通常の動作状態にあります。
デバイスがRS232からTTLへのコンバーターに接続されている場合、ピン4の電圧レベルはRTSを制御します。 RTSがクリアされると、デバイスはリセット状態になります。 RTSが設定されている場合、デバイスは通常の状態です。
ファームウェアの更新中は、RTS ピンをデバイスのピン 4 に接続する必要があります。
UART / TTL モデルのピン配置を以下に示します。
リーダデバイスとホストPC間の通信用に、D-Logic独自のプロトコル「μFRシリアル」を作成します。
すべての通信は、デバイスが接続されているホスト(PCまたは他のプラットフォーム)によって開始されます。
ファームウェアバージョン3.9.44から、単一のコマンドで転送される、または1つのデバイス応答によって受信される最大データは256バイトで、それ以前は192バイトです。
一般に、パケットには次の 2 種類があります。
- CMD – ホストからデバイスに送信されるコマンド
- ANS – デバイスからホストに送信された応答
CMDは、短いセットでも長いセットでもかまいません。 CMDショートセットは常に7バイト長ですが、CMDロングセット(CMD_EXTと呼ばれる)は可変長を持つことができます。
答えは次のとおりです。
- ACK –確認応答、すべてが正常であり、デバイスは次のCMDまたはCMD EXTを待っています
- ERR – エラーが発生しました。エラー バイトはERR_TYPEを定義します。
- RSP – CMD またはCMD_EXT上のデバイスからの応答
通信定数バイトは、各パケットの最初の3バイトで見ることができるパケットのタイプを定義します。
各パケットの最初のバイトは HEADER バイトです。 2 番目のバイトは常にCMD_CODEです。 3 番目のバイトは TRAILER バイトです。
表1. 通信定数
CMD_HEADER | 0x55 | CMD_TRAILER | 0xAA |
ACK_HEADER | 0xAC | ACK_TRAILER | 0xCA |
RESPONSE_HEADER | 0xDE | RESPONSE_TRAILER | 0xED |
ERR_HEADER | 0xEC | ERR_TRAILER | 0xCE |
チェックサム #
このドキュメントのすべてのチェックサムは同じ方法で計算されます:バイトの行がチェックサムの計算に使用され、各バイトは行の終わりまで次のバイトとXORされます。 最終的な値は 0x07 でインクリメントされます。
たとえば、CMD パケットのバイト数は 7 バイトで、7 番目のバイトは前の 6 バイトのチェックサムです。
チェックサム = (バイト 1 XOR バイト 2 XOR バイト 3 XOR バイト 4 XOR バイト 5 XOR バイト 6) + 0x07
CMDコード #
各コマンドには対応する値があります – コマンドの概要を参照してください。
エラーコード #
エラーが発生した場合、デバイスはERRパケットで応答します。 各エラーには対応する値があり、付録: エラー コードの表に記載されています。
CMDパケット #
CMDパケットは、7バイトの長さの短いものでも、可変長のEXTエンドでもかまいません。 EXT CMDパケットの場合、CMDパケットの4番目のバイトは0より大きく、整数値(CMD_EXTパケットの長さ)を含みます。 CMD_EXTを発行するときは、常にメインCMDの7バイトの長いパケットが最初になります。 すべてが期待どおりの場合、デバイスはACKパケットで応答し、CMD_EXTパケットを待ちます。 エラーの場合、デバイスはERRパケットで応答します。 CMD_EXTは、コマンドの種類に応じてさまざまな異なるパラメーターで構成されるため、CMD_EXTパラメーターの長さと順序は固定されていません。
CMDパケットの構造は次のとおりです。
CMDパケットの構造は次のとおりです。
必須の 7 バイト CMD パケット構造 |
||||||
---|---|---|---|---|---|---|
バイト 1 | バイト 2 | バイト 3 | バイト 4 | バイト 5 | バイト 6 | バイト 7 |
CMD_HEADER | CMD_CODE | CMD_TRAILER | CMD_EXT_Length | CMD_Par0 | CMD_Par1 | チェックサム |
- バイト 1: 表 1 で定義されているCMD_HEADER。通信定数、0x55
- バイト 2: 表 2 で定義されているCMD_CODE。 CMD_CODE値
- バイト 3: 表 1.通信定数 0xAA で定義されているCMD_TRAILER
- バイト 4: CMD_EXT_Length: 0 の場合、"CMD EXT" は使用されません)。ELSE 値は、CMD_EXT パケット全体の長さです。
- バイト5:CMD_Par0:コマンドパラメータ0は、コマンドに応じて異なる値を取ります
- バイト6:CMD_Par1:コマンドパラメータ1は、コマンドに応じて異なる値を取ります
- バイト 7: CHECKSUM – 上記で説明したバイト 1 から 6 のチェックサム
CMD_EXTパケットの構造は次のとおりです。
CMD_EXTパケットの構造は次のとおりです。
CMD_EXTパケット構造 | |||
バイト 1 | … | バイト N | バイト N+1 |
パラメーター バイト 1 から N |
CMD_EXT_CHECKSUM |
パラメータバイト1〜N – 異なるパラメータ、値はコマンドのタイプによって異なります
- CMD_EXT_CHECKSUM – バイト 1 から N のチェックサム
- CMD_EXT_Length は、CMD_EXT_CHECKSUM を含むすべてのバイト数です。例:長さはN + 1です
ANSWER パケットの種類 #
デバイスは、次のパケット タイプで応答できます。
ACK – 確認応答パケット
コマンドとCMDパケットが適切に設定され(構造とチェックサム)、追加のCMD_EXTパケットを送信する必要がある場合、デバイスはACKパケットで応答します。
ERR – エラーパケット
エラーが発生した場合、デバイスはERRパケットで応答します。 一部のコマンドは、ERR_EXTセットを返すことができます。その場合、ERR_EXTパケットは ERR パケットの直後に来ます。
RSP – 応答パケット
適切に設定されたCMDまたはCMD_EXTパケットが送信されると、デバイスは発行されたコマンドに応じてRSPまたはRSP_EXTパケットで応答します。 たとえば、CMD が RSP パケットに対して十分に短い応答を必要とする場合、RSP_EXTパケットはありません。 それ以外の場合、CMDまたはCMD_EXTがより多くのバイトの応答を必要とする場合、RSP_EXT RSPパケットの直後に来ます。 一般的な状況は、LinearRead コマンドを使用してデータを読み取る場合で、デバイスはカード データ バイトの行で応答します。
ACK – 確認応答パケット #
ACK パケットの構造は次のとおりです。
ACK パケットの構造は次のとおりです。
ACP パケット構造 |
||||||
バイト 1 | バイト 2 | バイト 3 | バイト 4 | バイト 5 | バイト 6 | バイト 7 |
ACK_HEADER | CMD_CODE | CMD_TRAILER | 無関係、ACKパケットでは使用されません | チェックサム |
- バイト 1: 表 1.通信定数で定義されているACK_HEADER、0x55
- バイト 2: 表 2 で定義されているCMD_CODE。 CMD_CODE値。 デバイスACKnowledgesは、前のコマンドが正しく送信されたことを通知します
- バイト 3: 表 1.通信定数 0x55 で定義されているACK_HEADER
- バイト 4: バイト 5、バイト 6: ACK パケットでは使用されず、値は0x00
- バイト 7: CHECKSUM – 上記で説明したバイト 1 から 6 のチェックサム
ERR – エラーパケット #
ERR パケットの構造は次のとおりです。
必須の 7 バイト ERR |
||||||
バイト 1 | バイト 2 | バイト 3 | バイト 4 | バイト 5 | バイト 6 | バイト 7 |
ERR_HEADER | ERROR_CODE | ERR_TRAILER | ERR_EXT_Length | Err_Val0 | Err_Val1 | チェックサム |
- バイト 1: 表 1.通信定数で定義されているERR_HEADER、0xEC
- バイト 2: 表 3 で定義されているERR_CODE。 エラー コード。
- バイト 3: 表 1.通信定数で定義されているERR_TRAILER、0xCE
- バイト 4: ERR_EXTが存在する場合、このバイトにはERR_EXTパケットの長さ (ERR_EXT チェックサムを含む) が含まれます。
- バイト 5: エラーに関する追加情報は、ERR_Val0 で定義できます。
- バイト 6: エラーに関する追加情報は、ERR_Val1 で定義できます。
- バイト 7: CHECKSUM – 上記で説明したバイト 1 から 6 のチェックサム
ERR_EXT、次の構造になっています。
ERR_EXTパケット構造 | |||
バイト 1 | .. | バイト N | バイト N+1 |
エラー バイト 1 から N | ERR_EXT_CHECKSUM |
- バイト 1: ERR_EXT の最初のバイト
- …
- バイト N: ERR_EXT の n 番目のバイト
- バイト N+1: ERR_EXT_CHECKSUM、バイト 1 から N のチェックサム、前述のように計算されます。
RSP – 応答パケット #
RSP パケットの構造は次のとおりです。
必須の 7 バイト RSP |
||||||
バイト 1 | バイト 2 | バイト 3 | バイト 4 | バイト 5 | バイト 6 | バイト 7 |
RSP_HEADER | CMD_CODE | RSP_TRAILER | RSP_EX_length | RSP_Val0 | RSP_Val1 | チェックサム |
- バイト 1: 表 1.通信定数で定義されているRSP_HEADER、0xED
- バイト 2: 表 2 で定義されているCMD_CODE。 CMD_CODE値
- バイト 3: 表 1.通信定数で定義されているERR_TRAILER、0xDE
- バイト 4: RSP_EXTが存在する場合、このバイトにはRSP_EXTパケットの長さ (RSP_EXT チェックサムを含む) が含まれます。
- バイト 5: RESPONSE に関する追加情報は、RSP_Val0 で定義できます。
- バイト 6: RESPONSE に関する追加情報は、RSP_Val1 で定義できます。
- バイト 7: CHECKSUM – 上記で説明したバイト 1 から 6 のチェックサム。
T
RSP_EXTパケット構造 | |||
バイト 1 | .. | バイト N | バイト N+1 |
RSP バイト 1 から N | RSP_EXT_CHECKSUM |
- バイト 1: RSP_EXT の最初のバイト
- …
- バイト N: RSP_EXT の n 番目のバイト
- バイト N+1: RSP_EXT_CHECKSUM、バイト 1 から N のチェックサム、前述のように計算されます。