随笔-148  评论-1050  文章-1  trackbacks-4

ZigBee On Windows Mobile--3.模拟器和实物调试

    继续前两篇 ZigBee On Windows Mobile--1.背景和结构 ZigBee On Windows Mobile--2.硬件和软设计,这次来讲最后一部分,模拟器和实物调试。

    实物调试相对于模拟器调试来说,要简单一点。例如,HP iPaq rx3700系列的PDA,是带串口的,只要配上一根串口线,就可以和外设进行串口通信。如下图1所示,HP iPaq rx3700通过黑色的串口转接线和ZigBee模块相连,右边的ZigBee模块通过电池供电,那样就可以进行调试了。

           图1. 实物调试图

    模拟器调试相对比较复杂一点,在开始这部分的讲述之前,先说说好多朋友问的一个问题,那就是模拟器到底有多大作用?我可以在模拟器上流畅地跑应用程序么?”对于这个问题,我个人觉得,就目前来讲,模拟器的功能越来越强大,可以做的事情也越来越多,特别是WM6.0的模拟器,其中一个很大的亮点就在于”Cellular Emulator””Fake GPS”的引入,我们可以在没有蜂窝电话和GPS硬件支持的情况下,模拟它们的行为,方便了我们应用程序的调试。

    回归我们的话题,讲讲我们这个项目如何在模拟器上来调试。由于Windows Mobile设备和ZigBee模块之间通过串口进行通信,因此,如果我们有办法利用模拟器的串口来调试的话,那样就会方便很多,甚至可以不用一个硬件,在Windows Mobile模拟器上测试我们的应用程序。那么,有这样的方法么?答案是,将Windows Mobile模拟器的串口映射到PC的物理串口设备。如果你的PC机没有串口,那么只能搞个USB转串口的小玩意儿了。如果你的PC机连USB接口也没有,那么,PCI卡槽应该有吧,也可以买个PCI转串口的东东。具体将Windows Mobile模拟器的串口映射到PC的物理串口设备的步骤如下:

        1.打开你的模拟器。

        2.点击"File"->"Configure"

        3."Peripherals"选项卡中进行设置。例如,我要把模拟器的串口0映射到PC机的串口1上,就可以在"Serial port 0"下,选择"COM1".如图2所示.

                                                       图2 .模拟器串口映射设置

         4.点击"OK"。然后Reset模拟器就可以了。

    最好我们调试的PC机有两个串口,将两个串口用交叉线连起来之后,就可以模拟串口通信了。注意是交叉线,而非直连线。所谓交叉线,直白地将就是将串口的2脚和3脚交叉了,也就是将串口1的"发"和串口2的"收"相连,将串口1的"收"和串口2的"发"相连,这样就实现了串口1和串口2的"收发"正常通信。比如将Windows Mobile模拟器的串口映射到PC机的物理串口1,再用串口调试助手或者Windows自带的超级终端控制PC机物理串口2,这样就可以模拟串口通信了。如图3所示。

                                                 图3.利用超级终端进行串口调试

   

    好了,至此为止,ZigBee On Windows Mobile就到这里结束,希望能够给园子里的朋友或者有需求的朋友带来一点帮助和启发。有不对的地方,也请指出来,大家相互交流,相互提高。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2008-10-16 21:39 施炯 阅读(2328) 评论(12) 编辑 收藏

评论:
#1楼 2008-10-17 08:47 | lovedog[未注册用户]
感觉意犹未尽啊……
 回复 引用   
#2楼[楼主] 2008-10-17 11:05 | 施炯      
@lovedog
呵呵 继续加油

 回复 引用 查看   
#3楼 2009-08-12 17:43 | yongshi123      
请问你是怎么在wm模拟器上做串口测试???

我使用PC上的超级终端com3,和wm模拟器的com1,进行模拟串口调试。

可是好像没什么反应。

 回复 引用 查看   
#4楼[楼主] 2009-08-13 10:27 | 施炯      
@yongshi123
我以前使用PC机主板自带的串口1和2测试WM模拟器串口映射,可以工作。
但是使用USB转串口的方法,就不行。调试的时候会抛出异常,主要是串口打开出错。

 回复 引用 查看   
#5楼 2009-08-14 18:03 | yongshi123      
To 施炯

通过调试看到,向串口写入数据成功,但是用超级终端检测串口,却没能在超级终端上有任何显示。这是为什么呢?

今天我也尝试用usb转串口线,通过在wm运行向串口写数据的应用程序,然后在pc端用串口监测程序监测串口,但还是没有任何显示

望指教!

 回复 引用 查看   
#6楼[楼主] 2009-08-14 22:48 | 施炯      
我没有记错的话,在程序里是打开串口1,对应的是Serial Port 0,如图2所示。
如果串口打开没有问题的话,就检查一下串口连接线,需要的是交叉线,文中也强调了。
还是建议你先使用一下WM上的串口调试软件。

 回复 引用 查看   
#7楼 2009-08-19 12:11 | yongshi123      
To 施炯
我也是用一条usb转串口的线,把PC的usb口引出一个串口,然后和mobile的串口线相接,在mobile端向mobile与外设连接的串口发送数据,然后希望在PC端能显示出发送的数据。发送数据WriteFile()是成功了,但是在PC端的串口监控程序不能检测到数据,单步调试时读到的是一大串乱码。
后面我在下载了一个mobile端的用来操作串口的应用程序,同样向相同的串口发送数据,应用程序的接收端只显示一大堆乱码。
我手机OEM就说有四个串口分别COM1,2,3,6,分别对应的UART口是Serial_Modem,Serial_BT(蓝牙),Serial_GPS ,Serial_AGPS。我打开的是COM6(也就是我连接外设的串口)。

望指教一下。

 回复 引用 查看   
#8楼[楼主] 2009-08-19 12:16 | 施炯      
@yongshi123
按照你的串口对应关系,COM6不是Serial_AGPS么?你用的是不是Serial_Modem,应该对应COM1呢?
另外,还有一种可能就是串口的速率,如果收发的速率不匹配,就会出现你所说的乱码的情况。

 回复 引用 查看   
#9楼 2009-08-19 16:47 | yongshi123      
@施炯
Serial_Modem能够应用于我上述的这么一种方式让PC和Windows mobile端进行通信吗??
我也测试过打开Serial_Modem对应的COM1,但是用GetLastError返回55,也就是资料不可再用。

疑惑。。。。。。

 回复 引用 查看   
#10楼 2009-08-19 16:49 | yongshi123      
想请问一下Serial_Modem能应用于哪方面的串口通信?

望指教。
谢谢。

 回复 引用 查看   
#11楼[楼主] 2009-08-20 10:10 | 施炯      
@yongshi123
根据你的描述,我觉得问题可能在硬件上。
你最好先问问你的OEM厂商,那个串口是留给用户用的。
当然,最直接的方法就是一个一个串口都试过来。
还有就是串口线的问题,有直连的,也有交差的,不知道你试了没有。

 回复 引用 查看   
#12楼 2009-08-20 11:22 | yongshi123      
@施炯
博主可以把你的MSN、QQ或者邮箱发到我邮箱吗?
麻烦了。
我的邮箱583372061@qq.com。

Thanks in advanced

 回复 引用 查看   
Locations of visitors to this page
欢迎访问施炯的技术博客,这是一个专注于移动开发的平台,致力于Windows Phone、Windows Mobile和Windows Embedded CE应用开发。

MVP
我的MVP配置


Get Microsoft Silverlight
昵称:施炯
园龄:3年4个月
粉丝:97
关注:13
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

搜索

 
 

常用链接

最新随笔

我的标签

随笔档案(148)

文章档案(1)

Microsoft Most Professional

Mobile Blogs

Mobile Portal

MSDN Blogs

MVPs' Blogs

My Blog

My Portal

Windows Phone

积分与排名

  • 积分 - 262794
  • 排名 - 283

最新评论

阅读排行榜

评论排行榜

推荐排行榜