我们正在开发某种设备,我们需要为所需的功能之一找到良好的解决方案。

问题是我们需要在PC上与WinCE 6.0(ARM)和Windows进行通信。
最简单的方法当然是COM端口,但在我们的情况下这是不可能的(所有串行端口都在WinCE上使用,我们不想再添加一个)。
第二种选择是局域网,但对我们而言,由于种种原因,它并不是最佳选择。

因此,我们可以使用第三个选项。 USB到USB通讯但该怎么做?
当然,WinCE是USB设备,而PC是USB主机,因此满足所有硬件基础知识。

我们可以使用主动同步,但存在一些问题:
-WinCE 6.0不适用于WMDC(将设备与PC连接后设备上的驱动程序崩溃了),我没有找到任何解决方案,因此在这种情况下,我们需要在PC端使用WinXP(旧的ActiveSync)
-我们需要过滤仅与我们的应用程序进行主动同步的通信,不允许任何其他未经授权的软件(我知道这是不可能获得的)。

因此,执行我们所需的最佳方法大概是通过USB进行通信,例如标准COM(串行通信)。
问题是,如何制作?我们需要在WinCE上编写驱动程序,还是在Windows(PC)上编写驱动程序,还是有更好的解决方案?也许某些WinCE 6.0驱动程序可以在PC端模拟虚拟COM(当然还允许在WinCE端对其进行标准读/写操作)?有人可以告诉我是否存在类似的东西吗?

最佳答案

我们可能找到了解决问题的最佳方案。我们在ActiveSync上使用TCP / IP(通过USB的标准WinSock连接)。可能是因为ActiveSync为主机提供了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];

当然,这不是完整的示例,它只是一个示例:)

关于serial-port - WinCE和PC USB通讯,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13160461/

10-11 23:20