Community Translation - FX3/FX2LP XferData() API Usage - KBA226200

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi,               

I would like to translate KBA226200 into Japanese.

Please confirm to my work.

Thanks,

Kenshow

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello, Kenshow-san

Confirm to work this KBA.

Thanks

Jenna

Jenna Jo
0 Likes
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi Jenna-san,

                               

Japanese translation was over.
Please check below.

Original KBA:

FX3/FX2LP XferData() API Usage - KBA226200

Thanks.

Kenshow

==============================

タイトル: FX3/FX2LP XferData() APIの使い方 - KBA226200

バージョン:**

質問:

XferData()API関数の「パケットモード」パラメーターの意味は何ですか?

回答:

KBAは、デバイスがエンドポイントディスクリプタのMaxPcktSizeパラメーターの倍数でデータパケットを送信する条件について説明します。

XferData() API関数がCyUSBライブラリで定義されています。このライブラリのソースファイルはhttp://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kitにあります

このAPI関数は、CyUSB3ドライバーにバインドされているホストとデバイス間の同期データ転送に使用されます。このAPI関数を使用するには、CyUSB.NETガイド/ Cypress USB Control Centerソースコードを参照してください。サイプレスUSBコントロールセンターは、「Transfer Data」ボタンが押されたときにこのAPIを呼び出します。

XferData()は、次のいずれかが発生すると戻ります。

  1. 要求された数のデータバイトが転送されていた。
  2. 短いパケットまたは長さがゼロのパケットが転送されたとき。
  3. タイムアウト(関数の呼び出し中に設定)が発生したとき。

XferData()の定義は次のようにします:

public bool XferData(ref byte[] buf, ref int len, bool PacketMode);

IN転送中に、ホストから要求されたデータのバイトがディスクリプタ内のエンドポイントのMaxPcktSizeパラメーターの倍数でない場合、XferData()関数は失敗し、トランザクションが失敗したことを示すエラーコード997が表示されます。これらの条件下で、「PacketMode」パラメーターの重要性は次のように説明されます。

USBBulkSourceSinkファームウェアでプログラムされたFX3デバイスを考えます。このファームウェアは、1024バイトとしてMaxPcktSize INエンドポイントを設定します。サイプレスUSBコントロールセンターは、デバイスからデータを読み取るために使用されます。サイプレスUSBコントロールセンターの[ PktMode]チェックボックスが選択されている場合、XferData関数のPacketModeパラメータはtrueに設定されます。

ケースA

  1. PktMode」チェックボックスはオフです。
  2. Bytes to transfer」ボックスは16387バイトで埋められます(MaxPcktSizeの倍数ではありません)

[Transfer Data]ボタンを押すと、XferData()関数はタイムアウトになるまで待機し続け、トランザクションが失敗したことを示すエラーコード997を返します。

pastedImage_0.png  

ケースB

  1. 「PktMode」チェックボックスがオンになっている
  2. Bytes to transfer」ボックスは16387バイトで埋められます(MaxPcktSizeの倍数ではありません)

[Transfer Data]ボタンをクリックすると、データ転送要求が複数のXferData()関数呼び出しに分割され、それぞれがエンドポイントのMaxPcktSizeパラメーターと等しいデータ長を持ちます。この場合、要求されたデータ長の前の倍数(この場合は16384バイト、0x4000)までのデータがホストアプリケーションで受信されます。

pastedImage_1.png  

これらの両方の状況で、エンドポイントは停止し、ResetPipe)()関数を使用してクリアする必要があり、アプリケーションからの保留中のI/Oトランザクションは、新しい転送を実行する前にAbortPipe()関数を使用してクリアする必要があります。

   pastedImage_2.png

==============================

10-June-2020

Kenshow

0 Likes