よく寄せられる質問への回答です。
下の質問をクリックすると、その質問に対する回答が表示されます。
ミドルウェア全般 | ITF-USBHost | ITF-USBLib | ITF-FILE
ミドルウェアのライセンスはどのようになっていますか?
ミドルウェアのライセンスは、開発ライセンスとなっております。ライセンスとしては下記の物をご用意しています。
・シングルプロジェクトライセンス
・シングルプロジェクト追加ライセンス
・シリーズライセンス
・シリーズ追加ライセンス
・無制限ライセンス
組み込み数による、ロイヤリティーはございません。
詳しくは、ライセンス規定[PDF]をご覧ください。
ソースコード提供とありますが、どのレベルまでご提供いただけるのでしょうか?
弊社で開発した部分は、全てご提供いたします。
動作環境に掲載されている以外では、使用できないのでしょうか?
そんなことはありません。しかし、お客様の方でポーティング作業を行っていただく必要があります。弊社でも、別途費用にてポーティング作業を受け付けております。
シングルプロジェクトライセンスを購入した後、シリーズライセンスや無制限ライセンスへの変更は可能でしょうか?
可能です。
しかし、以下のような条件があります。
・ライセンス価格の差額に20%を加算した金額をお支払いいただく必要があります。
・現状ライセンスの技術サポート期間が終了していなくても、サポート期間は一度キャンセル扱いとさせていただき(6ヶ月サポート期間終了後、サポート契約を更新された場合も同様となります。)変更登録時より、新たに半年間の無償サポートが開始になります。
ミドルウェアがバージョンアップされた時には、連絡をいただけるのでしょうか?
申し訳ありませんが、連絡はいたしません。当ホームページ上でバージョン情報を公開しておりますので、確認していただき、サポート窓口へご連絡いただければ、サポート期間であれば、無償で配布させていただいております。
ミドルウェアのToppers/JSPでの動作実績はありますか?
SH7727を使用して、ITF-USBLib、ITF-USBHost、ITF-FILE、ITF-PictSTRに関しては、動作実績があります。
ミドルウェアで提供されるAPI仕様は、購入前に公開していただけるのでしょうか?
購入のご検討を前提に、公開しております。
H8クラスのCPUで、OSなしでUSBメモリのリード/ライトを行うことは、可能でしょうか?
miniミドルウェアシリーズの、mini-USBHostSTRを使用することによりH8クラスのマイコン内蔵のメモリーにてUSBメモリーへのアクセスが可能となります。
独自に開発したUSBデバイスを接続したいのですが、可能でしょうか?
単純なバルク転送のみであれば、標準のAPIで代用できます。
また、それ以外に関しても、カスタマイズすることで対応が可能です。
各社から発売されているUSBメモリーは、全て動作すると思って良いでしょうか?
基本的には、動作いたします。
もし動作しない場合は、ご連絡いただければ、当社に動作確認いたします。
ただし、Windows上では認識していてもUSBの規格上問題がある製品などは、実際に認識できない事がありますので、ご了承ください。
USBで通信を行う際に、送信タスクと受信タスクを分け、送信タスクでUsb_Host_Control()もしくは、Usb_Host_Ep_Write() を使用してデーター送信を行っています。また、受信タスクでは、Usb_Host_Ep_Read() を使用してデーター受信を行っていますが、このように、データー受信と送信を別タスクに分けて行っても問題ないでしょうか。
問題ありません。
完全に非同期で動作いたします。
パソコン側対応ドライバは、使用するOSにより違いがあるのでしょうか?
はい。
元となるドライバは共通ですが、仮想COMポートが各OSによって異なります。
仮想COM番号を固定にすることは、可能でしょうか?
現状の仕様では、対応しておりません。
ただし、カスタマイズすることで対応が可能です。
パソコンのUSBポートを変更すると、新しく接続したポートに対しては、ドライバーを要求されますが、これは仕様でしょうか?
現状の仕様では、対応しておりません。
ただし、カスタマイズすることで、対応が可能です。
仮想COMドライバー(Windows用)は、日本語以外の言語に対応しておりますか?
当社としての動作保証範囲は、日本語版に限ります。
USBドライバーを直接制御する方式で、通信をしたいと思っていますが可能でしょうか?
可能です。
サンプルとして、DLLをご提供しております。製品パッケージには含まれておりませんので、ご要望の場合は、サポート窓口までご連絡ください。
仮想COMドライバのドライバー情報等はどのようになっているのでしょうか?
ご提供時には、当社独自の情報が登録されております。
製品に添付されるマニュアルには、この変更方法を記載してありますが、ドライバーの開発環境(DDK)が必要となります。
もし、開発環境をお持ちでない場合は、サポート窓口までご連絡いただければ、有償になりますが、当社にてご希望の内容に変更させていただきます。
同一仕様のUSBデバイスを複数台パソコンに接続し、制御しようとしておりますが標準のままのドライバーで対応可能でしょうか?
問題ありません。
Windiows上でプラグイン/プラグアウトの検出は可能でしょうか?
デバイスのプラグイン/プラグアウトの検出には、ハードウェア構成に変化があった時にWindowsから通知されるWM_DEVICECHANGEメッセージを使用します。
ウィンドウ作成時に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);
}
<===============================================================
f_read, f_writeなどはUSBドライバーで言う同期式/非同期式の何れで処理を行っていますか?
完全な同期型での実装となっております。