よく寄せられる質問への回答です。
下の質問をクリックすると、その質問に対する回答が表示されます。
ミドルウェア全般 | ITF-USBHost | ITF-USBLib | ITF-FILE
ミドルウェア全般(USB全般)
Q. ミドルウェアのライセンスはどのようになっていますか?
・シングルプロジェクトライセンス
・シングルプロジェクト追加ライセンス
・シリーズライセンス
・シリーズ追加ライセンス
・無制限ライセンス
組み込み数による、ロイヤリティーはございません。
詳しくは、ライセンス規定[PDF]をご覧ください。
Q. ソースコード提供とありますが、どのレベルまでご提供いただけるのでしょうか?
Q. 動作環境に掲載されている以外では、使用できないのでしょうか?
Q. シングルプロジェクトライセンスを購入した後、シリーズライセンスや無制限ライセンスへの変更は可能でしょうか?
しかし、以下のような条件があります。
・ライセンス価格の差額に20%を加算した金額をお支払いいただく必要があります。
・現状ライセンスの技術サポート期間が終了していなくても、サポート期間は一度キャンセル扱いとさせていただき(6ヶ月サポート期間終了後、サポート契約を更新された場合も同様となります。)変更登録時より、新たに半年間の無償サポートが開始になります。
Q. ミドルウェアがバージョンアップされた時には、連絡をいただけるのでしょうか?
Q. ミドルウェアのToppers/JSPでの動作実績はありますか?
Q. ミドルウェアで提供されるAPI仕様は、購入前に公開していただけるのでしょうか?
Q. H8クラスのCPUで、OSなしでUSBメモリのリード/ライトを行うことは、可能でしょうか?
ITF-USBHost
Q. 独自に開発したUSBデバイスを接続したいのですが、可能でしょうか?
また、それ以外に関しても、カスタマイズすることで対応が可能です。
Q. 各社から発売されているUSBメモリーは、全て動作すると思って良いでしょうか?
もし動作しない場合は、ご連絡いただければ、当社に動作確認いたします。
ただし、Windows上では認識していてもUSBの規格上問題がある製品などは、実際に認識できない事がありますので、ご了承ください。
Q. USBで通信を行う際に、送信タスクと受信タスクを分け、送信タスクでUsb_Host_Control()もしくは、Usb_Host_Ep_Write() を使用してデーター送信を行っています。また、受信タスクでは、Usb_Host_Ep_Read() を使用してデーター受信を行っていますが、このように、データー受信と送信を別タスクに分けて行っても問題ないでしょうか。
完全に非同期で動作いたします。
ITF-USBLib
Q. パソコン側対応ドライバは、使用するOSにより違いがあるのでしょうか?
元となるドライバは共通ですが、仮想COMポートが各OSによって異なります。
Q. 仮想COM番号を固定にすることは、可能でしょうか?
ただし、カスタマイズすることで対応が可能です。
Q. パソコンのUSBポートを変更すると、新しく接続したポートに対しては、ドライバーを要求されますが、これは仕様でしょうか?
ただし、カスタマイズすることで、対応が可能です。
Q. 仮想COMドライバー(Windows用)は、日本語以外の言語に対応しておりますか?
Q. USBドライバーを直接制御する方式で、通信をしたいと思っていますが可能でしょうか?
サンプルとして、DLLをご提供しております。製品パッケージには含まれておりませんので、ご要望の場合は、サポート窓口までご連絡ください。
Q. 仮想COMドライバのドライバー情報等はどのようになっているのでしょうか?
製品に添付されるマニュアルには、この変更方法を記載してありますが、ドライバーの開発環境(DDK)が必要となります。
もし、開発環境をお持ちでない場合は、サポート窓口までご連絡いただければ、有償になりますが、当社にてご希望の内容に変更させていただきます。
Q. 同一仕様のUSBデバイスを複数台パソコンに接続し、制御しようとしておりますが標準のままのドライバーで対応可能でしょうか?
Q. Windiows上でプラグイン/プラグアウトの検出は可能でしょうか?
ウィンドウ作成時にRegisterDeviceNotificationでドライバのGUIDを設定することにより、指定GUIDのドライバーからのWM_DEVICECHANGEメッセージを受け取ることができます。
例) =========================================================>
// ウィンドウ作成
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
DEV_BROADCAST_DEVICEINTERFACE filter;
HDEVNOTIFY hDevNotify;
・・・
filter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); // 構造体サイズ
filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; // デバイスタイプ
memcpy(
&(filter.dbcc_classguid),
&(GUID_CLASS_INTERFACE_USB_LIBRARY),
sizeof(struct _GUID));// GUIDのコピー
/* デバイス通知ハンドルの取得 */
hDevNotify = RegisterDeviceNotification(
this->m_hWnd,
&filter,
DEVICE_NOTIFY_WINDOW_HANDLE);
・・・
}
// WM_DEVICECHANGE メッセージ
BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD dwData)
{
DEV_BROADCAST_HDR* phdr = (DEV_BROADCAST_HDR*)dwData;
switch (nEventType) {
case DBT_DEVICEARRIVAL: // デバイスの追加
if (phdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
PDEV_BROADCAST_DEVICEINTERFACE pdbd = (PDEV_BROADCAST_DEVICEINTERFACE)phdr;
pdbd->dbcc_classguid; // GUID
pdbd->dbcc_name; // デバイス名
}
break;
case DBT_DEVICEREMOVECOMPLETE: // デバイスの削除
if (phdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
PDEV_BROADCAST_DEVICEINTERFACE pdbd = (PDEV_BROADCAST_DEVICEINTERFACE)phdr;
pdbd->dbcc_classguid; // GUID
pdbd->dbcc_name; // デバイス名
}
break;
}
return CFrameWnd::OnDeviceChange(nEventType, dwData);
}
<===============================================================





