WinCE下UART设置缓冲区的一个小问题
来源:互联网 发布:海康威视的设备域名 编辑:程序博客网 时间:2024/06/06 04:56
最近调试一个串口设备,使用模块厂家提供的API老是无法实现通信,整来整去就是不行,使用串口工具可以正常的从该串口进行数据通信,但是就是无法跟模块相连通信,厂家一再保证API是ok的,因为他们自己也有相关的应用,而模块在其他场合试过也是好的,这就奇怪了。
仔细查看了API的源码,终于发现问题所在,其打开串口后,就会进行参数配置,每完成一个配置就会查询操作是否成功,一旦发现操作失败,就会停止并退出,而在进行串口缓冲区设置的时候,会失败,于是乎,怎么都打不开串口进行通信。
程序使用SetupComm进行串口的缓冲区设置,但是操作的时候,返回FALSE,ErrorCode是50,代表不支持,上网查了下资料,发现WinCE下是不支持这个的,可是为什么厂家说之前在自己的wince平台下可以呢?原来虽然WinCE不支持这个功能,但是在WinCE5和WinCE6中对该操作的返回是不一样的。
SetupComm会发送IOCTL_SERIAL_SET_QUEUE_SIZE给MDD驱动的IOCONTROL,在WinCE5中,MDD驱动接收这条指令后,不会执行任何操作,返回TRUE,而在WinCE6中,虽然也不执行任何操作,但是会返回FALSE……这个是在微软的PUBLIC代码中,于是乎,之前查了BSP半天都不知道问题出在哪里。
找到问题所在,就好解决了,解决方法有两个:
1、在PUBLIC中进行修改,直接修改mdd层的文件,重新编译完成;
2、将该mdd层文件拷贝到bsp中,修改,然后将bsp的pdd层驱动的source文件修改一下,使其调用的库为bsp内的mdd层lib,这样就不会影响public中的代码。
- WinCE下UART设置缓冲区的一个小问题
- wince下USB设备驱动缓冲区设置
- c++的getline一个关于缓冲区的一个小问题
- WinCE下打开区域设置出现问题的原因
- WINCE 5.0的uart驱动
- 一个环境变量设置导致????的小问题
- ARM平台设备WinCE下UART配置
- Ubuntu系统学习笔记-7.Tomcat下设置https的一个小问题
- WinCE CeWriteRecordProps 的一个问题
- Linux下UART串口的测试小程序
- [转]wince的一些小问题集合
- 关于wince的几个小问题
- Linux 下何时输出缓冲区的问题
- wince下设置目标机器的分辨率
- wince下的cleartype效果设置
- 设置Wince下的默认输入法
- windows的socket缓冲区到底多大的一个小测试
- 决WINCE保存设置的问题
- 批处理生成mysql配置文件my.ini
- 笔记之数据结构之常用算法
- JBPM简介
- Linux内核入门学习
- HTML 打印
- WinCE下UART设置缓冲区的一个小问题
- GCD 函数的那些任务
- Gacutil.exe的使用
- 输入一颗二元查找树,将该树转换为它的镜像(递归解法)
- vector size()/resize() reverse()/capacity()
- 决定采用Mercurial(Hg)了
- CIRCOS教程翻译 5.2——Geometry
- 用C#打造自己的通用数据访问类库
- 一个进程去结束另一个进程