Pocket PC 开发中的调试技巧

在开发Pocket PC应用程序时,经常会遇到需要查看代码中散布的跟踪消息的情况。如果已经开发了一段时间的代码,就会知道,第二好的选择是有一个控制台窗口,可以在其中看到这些消息。但是,如果没有知识,也没有时间构建一个与IDE集成的解决方案,那么在本文中,将展示一个控制台应用程序,该程序可以在主机PC上显示在Pocket PC上运行的Compact Framework代码中传递给System.Diagnostics.Debug.Write或System.Diagnostics.Debug.WriteLine调用的字符串。

套接字是几乎所有系统中两个应用程序之间通信的最简单方式之一。但在.NET框架中,可以找到一对补充类,它们进一步简化了套接字API:System.Net.Sockets.TcpClient和System.Net.Sockets.TcpListener。当然,它们的底层实现使用了套接字,对于任何曾经使用过套接字API编程的人来说,它们的使用模式应该不会让人感到惊讶。

TcpListener和TcpClient提供的同步阻塞通信并不提供套接字的所有灵活性,但在这种情况下,它们满足了适度需求。可以在MSDN库中找到更多关于套接字和System.Net.Sockets命名空间的信息。

跟踪监听器

System.Diagnostics命名空间提供了一种机制,允许跟踪消息有多个输出。当调用Debug或Trace类的Write和WriteLine方法时,它们会调用每个为此目的注册的监听器的相应方法。系统提供了一些TraceListener抽象类的实现,这些类将消息定向到调试器的输出窗口、输出流或事件日志。如果需求与系统提供的选项不同,需要编写自己的System.Diagnostic.TraceListener实现,并将其添加到监听器集合中。

可以在这里找到有关跟踪监听器的文档。

TcpTraceConsole是一个控制台应用程序,它充当服务器。它等待连接到其命令行中指定的IP地址和端口。当建立连接时,它只是使用System.Console.WriteLine来显示每个接收到的消息。

显然,它必须在运行Pocket PC应用程序之前在主机PC上启动。例如,如果PC的IP地址是192.168.1.1,它的端口14001尚未使用:

C:>TcpTraceConsole 192.168.1.1 14001

直接从TraceListener派生出TcpTrace.TcpTraceListener,并覆盖了Write和WriteLine方法,将它们的输出重定向到控制台应用程序,通过TcpClient实例。这个类被打包在自己的程序集中,所以它可以在任何应用程序中使用:

在项目中添加对TcpTrace.dll的引用

在代码中调用Debug.Trace之前,调用静态方法TcpTrace.InstallTcpTraceListener。如果使用带参数的版本,需要提供用来启动TcpTrace控制台应用程序的相同地址和端口。如果使用无参数版本,工作目录必须包含一个应用程序配置文件,以如下方式指定地址和端口:

<configuration> <appSettings> <add key="TcpTraceServer" value="" /> <add key="TcpTracePort" value="" /> </appSettings> </configuration>

在源代码和演示.zip文件中,有一个Pocket PC WinForms应用程序,展示了TcpTrace.TcpTraceListener的使用。

要运行PpcTraceClient.exe应用程序,必须:

将PpcTraceClient.exe、PpcTraceClient.exe.config、TcpTrace.dll和NetTech.Configuration.dll文件复制到设备上的一个文件夹中

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485