【聚杰网移动开发】Windows CE下的串口通信编程
现在大多数的笔记本电脑都没有外置串口,这不奇怪,因为有更快更稳定的接口代替了串口。不过基于Windows CE的设备仍然保留着串口,而且目前看来串口的地位暂时不会动摇。目前流行的基于CE的设备很多都具有像导航、打电话等功能,而GPS、GSM/GPRS模块都是外置串口的终端设备,你想不用串口都不行。
上面我说了我有着自己的观点,我的观点就是不要把串口通信封装成类。我不明白为什么有些人总要把串口封装成类呢。把一个事物封装成类,那这个事物就一定是不易改变的,如果每次编写都要修改,那封装成类就一点意义都没有了。设想如果MFC类总要改变的话,那我们用MFC编的程序也要修改同样次数了。如果编写超级终端一类的程序倒是可以将串口封装成类,因为超级终端只管输入命令和显示输出数据,不对输出数据进行处理,那读串口的函数就可以一直使用而不必更改。但事实上串口通信大多数用来与终端设备进行通信,需要对终端设备返回的数据进行处理。而返回的数据在什么时间返回、数据量的大小不是确定的,非要封装成类难度很大。
正如CE的帮助文档所说,串口通信是最简单的通信之一。稍麻烦的是在读数据方面。
一、打开串口
CE的串口驱动不支持重叠,这个大家都知道的。这样的话收和发就要分开。要接收串口数据就必须创建一个线程专门用于接收数据。串口的配置不需要设置很多参数,默认的配置大部分是不需要修改的。一般改动就是波特率、位数、奇偶校检等几项。超时值是需要改动的。ReadIntervalTimeout是指两个字符传送之间的超时时间。一次写操作的超时时间等于WriteTotalTimeoutMultiplier 乘以 要发送的字符数 加上WriteTotalTimeoutConstant。 单位是毫秒。读操作的超时和写类似。所以设置超时是一个关键。设置太小可能丢失数据。




