前几天我用串口方式部署MF程序总是无法成功,但是用其自带的串口调试程序通信成功。用串口监控程序一查看发现串口参数之校验有问题,应该是无校验,但是微软的调试程序打开的却是偶校验(请参见:http://blog.csdn.net/yefanqiu/archive/2008/03/22/2207161.aspx)。
也许如其它网友所说这是USB转串口的问题,不过我以前购买的USB转串口仅支持2、3、5脚,对一些需要RTS和DTR硬件握手通信无法进行调试,所以我购买了PCMCIA串口。不过我不太死心,只好在台式机上安装VS2005,安装MF SDK2.5,最后一测试,所有的程序都通信成功。由于我的台式机的操作系统是Vista平台,并且串口监控程序无法正常运行,所以无从知道在Vista平台下各程序的串口参数,为了验证是否和操作系统相关,所以又找了一个安装Windows XP系统的台式机,安装上程序一测试,全通!用串口监控程序一监控,所有的程序打开串口参数全是无校验,这可就奇怪了!!!
是什么原因促使同样的程序在笔记本上打开的串口参数是偶校验,在台式机上是无校验?由于用其串口调试程序通信成功过,并且该串口的参数也可以配置为无校验(否则通信也就不成功了)。幸好我的笔记本上有一个COM4(猫口),用同样的程序打开COM1和COM4,监控发现打开的串口参数竟然不同,如下图。
COM4 是无校验(NONE)
COM1 是偶校验(EVEN) 但是用其自带的串口调试程序的串口参数是无校验
注:台式机和笔记本还有一个区别,串口参数中EOF,笔记本上的都是0,台式机的都是0x1a。
接着又在台式机做了一个试验,自己做了一根仅有2、3、5线的串口线,接上一试发现,仅串口调试程序可以通信成功,其它程序(MFDeploy和VS2005)是无法通信成功的。看来通信采用了硬件握手。
初步结论:
1、 普通的不能实现硬件握手的USB转串口(或其它方式转串口)是不能通过串口方式进行MF调试的。
2、 串口线必须是标准的MODEM线,仅2、3、5是不行的。
3、 我买的低价PCMCIA串口设备其驱动程序应该和实际的物理串口驱动有差异(因为其通信不成功不是因为硬件握手)。
4、 MFDeploy或VS2005串口参数来源和配置的方式比较特别(至少和开发板自带的串口调试程序不同),在特定情况下会使有问题的串口驱动配置成我至今也搞不明白的参数。