3

私たちはいくつかのデバイスを開発しており、必要な機能の 1 つに対する適切なソリューションを見つける必要があります。

問題は、WinCE 6.0 (ARM) と PC 上の Windows を通信する必要があることです。もちろん、最も簡単な方法は COM ポートですが、私たちの場合は不可能です (すべてのシリアル ポートが WinCE で使用されており、もう 1 つ追加したくありません)。2 番目のオプションは LAN ですが、いくつかの理由から、LAN は最適なオプションではありません。

したがって、使用できる 3 番目のオプションがあります。USBからUSBへの通信ですが、どうすればいいですか?もちろん、WinCE は USB デバイスで、PC は USB ホストなので、すべてのハードウェアの基本が満たされています。

Active Sync を使用することもできますが、いくつか問題があります。 PC 側で WinXP を使用する (古い ActiveSync) - Active Sync との通信をアプリケーションのみにフィルター処理する必要があり、他の許可されていないソフトウェアは許可されません (これを取得することは不可能であることがわかっています)。

したがって、必要なことを行う最善の方法は、標準の COM (シリアル通信) のように USB を介して通信することです。問題は、それをどのように作成できるか、WinCE でドライバーを作成し、Windows (PC) でドライバーを作成する必要があるか、またはより良い解決策があるかということです。おそらく、PC 側で仮想 COM をエミュレートする WinCE 6.0 用のドライバー (もちろん、WinCE 側で標準の読み取り/書き込みを許可する) でしょうか? そのようなものが存在するかどうか誰か教えてもらえますか?

4

1 に答える 1

1

私たちはおそらく私たちの問題に対する最良の解決策を見つけました。TCP / IP over ActiveSync(USB経由の標準WinSock接続)を使用します。ActiveSyncがホストPCにIPアドレスを提供するために可能です。(WinCEで)そのようなものを介して取得できます。

std::string lIPAddress = "ppp_peer";
struct hostent * lH = gethostbyname(lIPAddress.c_str());

DEBUGMSG(ZONE_ERROR, (TEXT("Addr: %S\r\n"), lH->h_addr_list[0])); // just a debug info
lServerAddress.sin_addr.S_un.S_addr = *(u_long *)lH->h_addr_list[0];

もちろん、これは完全な例ではなく、単なるサンプルです:)

于 2012-12-03T20:46:50.597 に答える