皆様はじめまして。
現在、GR-SAKURA(RX63N)を使用して、HCDC通信(nonOS)を行おうとしております。
FIT Modulesのr_usb_hcdc、および、サンプルプログラム「R01AN2235JJ0124 」
(USB ホストコミュニケーションデバイスクラスドライバ(HCDC)による CDC デバイスとの USB 通信を行うサンプルプログラム Firmware Integration Technology )
を元にして、通信対象のデバイスとの送受信を確認しておりますが、受信バイト数、および受信データがうまく取得できません。
こちらからの送信(6バイト)は正常に送信できています。
しかし、受信応答を確認(「R_USB_GetEvent」の戻り値が「USB_STS_READ_COMPLETE」のときの状態)すると、以下のようになっています。
usb_ctrl_t.status→6( USB_ERR_SHORT)
usb_ctrl_t.size→32(送信されるデータは36バイトです)
受信バッファの内容→送信データ36バイト中の32バイトまでバッファに入っている
そこで、教えていただきたいのですが
・「R_USB_Read」にて、受信サイズに「CDC_DATA_LEN(64)」を指定しているのに、32バイトしか受信しないのはなぜでしょうか。
(こちらの想定では、36バイトを受信、かつUSB_ERR_SHORTになるのでは?と考えていましたが・・・)
・パイプマックスパケットサイズレジスタ(PIPEMAXP)にも040h(64バイト)が設定されているのに、32バイトしか受信しないのはなぜでしょうか。
・32バイト以降のデータを読み取る方法が、何か用意されているのでしょうか?
ヒントだけでもよいので、アドバイスいただければと思います。
よろしくお願いします。
よー@名古屋さん、こんにちは。NoMaYと申します。相手側機器が送信データ36バイトを32バイトと4バイトの2つのパケットに分割しているということはありませんでしょうか? もしそうであれば、プロトコルの仕様でもって相手側機器から何バイト送信されるかを明確に定義しておき、そのバイト数受信するまで受信関数を繰り返し呼ぶようにしないといけない、ということだったりするのではないだろうか?ということです。